From 1019cd2549d475b0456d048a1d89a4e03007f428 Mon Sep 17 00:00:00 2001 From: shilixia <2309368887@qq.com> Date: Thu, 5 Dec 2019 09:16:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E8=80=83=E8=AF=95=E9=87=8D?= =?UTF-8?q?=E6=96=B0=E8=80=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- safesite/views.py | 6363 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 6363 insertions(+) create mode 100644 safesite/views.py diff --git a/safesite/views.py b/safesite/views.py new file mode 100644 index 00000000..ebedd6b6 --- /dev/null +++ b/safesite/views.py @@ -0,0 +1,6363 @@ + +from django.shortcuts import render,redirect,render_to_response +from django.http import HttpResponse, HttpResponseRedirect,JsonResponse +from .models import User,Trouble,Dickey,Partment,Dicclass,Train,Drill,TroubleAccess,Group,Yjyc,Trainuser,Drilluser,Yjsetup,Menu,Observe,Observeto,Unsafes,Miss,Socertificate,Userprofile,Suggest,Notice,Noticeto,Operation,Operzyry,Fxcs,Operationspjd,Operspxq,Question,ExamPaper,ExamTest,ExamPaperDetail,ExamTestDetail,Questioncat,Safecert,Map,Area,Missto,Suggestflow,Equipment,Inspect,Risk,RiskAct,Risktask,Riskcheck,Report,RiskActTask,Riskcheck2 +from django.template import RequestContext +from django.views.decorators.csrf import csrf_exempt +from django.core import serializers +from .forms import UserForm +import json +from uuid import UUID +import os +import time +from datetime import datetime,date,timedelta +from django.db.models import F,Count,Sum +import requests +from .tasks import send_wechatmsgs,send_wechatmsg,yjjs,gettime,yjjs_px,yjjs_yl,updateTzzs,updateAqzs,yjjs_gc,yjjs_ws +from .export import exportdoc,exportxlsx,exportyjdoc,exportsimplexlsx,exportdoc2 +from .daoru import drusers,drequipments,drrisks,drquestions,cal_riskact_level,cal_area_risk_level,makeqr,makeqr_train,makeqr_riskact,makeqr_examtest,makeqr_area +from django.forms.models import model_to_dict +from .safespider import getTzzs,getAqzs +from duibiao import calsim +from django.db.models import Q +from django.core.serializers.json import DjangoJSONEncoder +from io import StringIO +import operator +import jwt +import decimal +from . import forms +from .models import CompanyInfo +from django.contrib.sessions.models import Session +from groups import models as g_models +import logging +from django.contrib.auth.hashers import make_password, check_password +logger = logging.getLogger('log') + +#分页功能 +def fenye(req): + if req.GET.get('page',None) and req.GET.get('rows',None): + page=int(req.GET.get('page')) + rows=int(req.GET.get('rows')) + endnum=page*rows + startnum=endnum-rows + else: + startnum=0 + endnum=10 + return startnum,endnum + +#特殊字符转json +class MyEncoder(json.JSONEncoder): + def default(self, obj): + if isinstance(obj, datetime): + return obj.strftime('%Y-%m-%d %H:%M') + elif isinstance(obj, date): + return obj.strftime("%Y-%m-%d") + elif isinstance(obj,decimal.Decimal): + return float(obj) + elif isinstance(obj, UUID): + # if the obj is uuid, we simply return the value of uuid + return obj.hex + else: + return json.JSONEncoder.default(self, obj) + +#获取user所在公司 +def getcompany(x): + a = User.objects.get(userid = x) + if a.ubelongpart.iscompany == 1: + return str(a.ubelongpart.partid) + else: + return a.ubelongpart.partlink.split(',')[1] + +def getparts(partid):#获取该部门及下属部门 + return Partment.objects.filter(Q(partid=partid) | Q(partlink__contains=',' + str(partid) + ',')) + +#转换为datagrid所用json +def transjson(total, obj): + a = {'total':total,'rows':list(obj),'code':1} + jsondata = json.dumps(a,cls=MyEncoder) + return jsondata +def transjson2(v): + return json.dumps(list(v), cls=DjangoJSONEncoder) + +#转换为combobox所用string +def transstr(obj,str1,str2): + keylist = [] + for i in list(obj): + keydictstr = '{"value":"'+ str(i[str1])+'","text":"'+i[str2]+'"}' + keylist.append(keydictstr) + keystr = '['+','.join(keylist)+']' + return keystr + +def check_login(func): + def warpper(request,*args,**kwargs): + is_login = request.session.get('userid', None) + if is_login: + return func(request,*args,**kwargs) + else: + return redirect('login') + return warpper + +def apicheck_login(func): + def warpper(request,*args,**kwargs): + is_login = request.session.get('userid', None) + if is_login: + return func(request,*args,**kwargs) + else: + return JsonResponse({'code':0,'msg':'login required'}) + return warpper + +def check_session(req): + if req.session.get('userid',None): + return JsonResponse({"code":1}) + else: + return JsonResponse({"code":0}) + +#存储文件 +def upfile(req): + username = User.objects.get(userid=req.session['userid']).username + file_name = (time.strftime('%Y%m%d%H%M%S')+ '_' + req.FILES['upfile'].name).replace('#','号') + user_upload_folder = os.path.join('media', username) + if not os.path.exists(user_upload_folder): + os.mkdir(user_upload_folder) + filepath = os.path.join(user_upload_folder, file_name) + filepath = filepath.replace('\\','/') + with open( filepath, 'wb') as f: + f.write(req.FILES['upfile'].read()) + return JsonResponse({"code":1,"filename":file_name,"filepath":filepath}) + +#html页面 + +def riskas(req): + return render(req,'riskas.html') + +def reportedit(req): + return render(req,'reportedit.html',{'year':req.GET.get('year'),'month':req.GET.get('month'),'part':req.GET.get('part')}) + +def riskedit(req,id): + return render(req,'riskedit.html',{'id':id}) + +def riskcheck(req):#风险点排查记录 + return render(req,'riskactcheck.html') + +def taskdo(req): + return render(req,'taskdo.html') + +def task(req): + return render(req,'task.html') + +def riskactchose(req): + area = 0 + if req.GET.get('area',None): + area = req.GET.get('area') + return render(req,'riskactchose.html',locals()) + +def riskactedit(req,id): + return render(req,'riskactedit.html',{'id':id}) + +def riskactadd(req): + return render(req,'riskactadd.html') + +def riskadd(req,id): + return render(req,'riskadd.html',{'id':id}) + +def risk(req): + return render(req,'risk.html') + +def inspect(req): + return render(req,'inspect.html') + +def equipment(req): + return render(req,'equipment.html') + +def areaedit(req,id): + return render(req,'areaedit.html',{'id':id}) + +def areaadd(req): + return render(req,'areaadd.html') + +def areadetail(req): + id = req.GET.get('id') + return render(req,'areadetail.html',{'id':id}) + +def mapshow(req): + return render(req,'mapshow.html') + +def area(req): + return render(req,'area.html') + +def personaltrain(req): + return render(req,'personaltrain.html') + +def examtest(req): + return render(req,'examtest.html') + +def safecert(req): + return render(req,'safecert.html') + +def safecertadd(req): + return render(req,'safecertadd.html') + +def examtestdetail(req,id): + return render(req,'examtestdetail.html',{'id':id}) + +def examtestadd(req): + return render(req,'examtestadd.html') + +def examtestadd2(req): + return render(req,'examtestadd2.html') + +def questionchoose(req): + return render(req,'questionchoose.html') + +def exampaperedit(req,id): + return render(req,'exampaperedit.html',{'id':id}) + +def exampaperadd(req): + return render(req,'exampaperadd.html') + +def exampaper(req): + return render(req,'exampaper.html') + +def examhistory(req,id): + return render(req,'examhistory.html',{'id':id}) + +def questionadd(req): + return render(req,'questionadd.html') + +def questionadd2(req): + return render(req,'questionadd2.html') + +def questionadd3(req): + return render(req,'questionadd3.html') + +def questionedit(req,id): + obj = Question.objects.get(id=id) + if obj.type==1: + return render(req,'questionedit.html',{'id':id}) + elif obj.type==2: + return render(req,'questionedit2.html',{'id':id}) + elif obj.type==3: + return render(req,'questionedit3.html',{'id':id}) + +def question(req): + return render(req,'question.html') + +def questioncatadd(req): + return render(req,'questioncatadd.html') + +def questioncatedit(req,id): + return render(req,'questioncatedit.html',{'id':id}) + +def operationspjdadd(req): + return render(req,'operationspjdadd.html') + +def fxcsadd(req): + return render(req,'fxcsadd.html') + +def operationadd(req,zyid): + return render(req,'operationadd.html',{'zyid':zyid}) + +def operationdetail(req,zyid): + return render(req,'operationdetail.html',{'zyid':zyid}) + +def operation(req): + return render(req,'operation.html') + +def zuoyepeizhi(req): + return render(req,'zuoyepeizhi.html') + +def notice(req): + return render(req,'notice.html') + +def noticeadd(req): + return render(req,'noticeadd.html') + +def noticedetail(req,id): + return render(req,'noticedetail.html',{'id':id}) + +def noticeedit(req,id): + return render(req,'noticeedit.html',{'id':id}) + +def suggestupdate(req,jyid): + return render(req,'suggestupdate.html',{'jyid':jyid}) + +def suggestdetail(req,jyid): + return render(req,'suggestdetail.html',{'jyid':jyid}) + +def suggestadd(req): + return render(req,'suggestadd.html') + +def suggest(req): + return render(req,'suggest.html') + +def medetail(req): + return render(req,'medetail.html') + +def socerthtml(req): + return render(req,'socert.html') + +def socertadd(req): + return render(req,'socertadd.html') + +def rightshtml(req): + groupid = req.GET.get('groupid') + return render(req,'rights.html',{'groupid':groupid}) + +def misshtml(req): + return render(req,'miss.html') + +def missadd(req): + return render(req,'missadd.html') + +def missdetail(req,missid): + return render(req,'missdetail.html',{'missid':missid}) + +def troublehtml(req): + return render(req,'trouble.html') + +def observehtml(req): + return render(req,'observe.html') + +def addobserve(req): + return render(req,'addobserve.html') + +def accesstrouble(req): + return render(req,'accesstrouble.html') + +def addtrouble(req): + return render(req,'addtrouble.html') + +def dichtml(req): + return render(req,'dichtml.html') + +def putreehtml(req): + return render(req,'putree.html') + +def usergroup(req): + return render(req,'usergroup.html') + +def getuserf(req): + return render(req,'getuser.html') + +def getusersf(req): + return render(req,'getusers.html') + +def trainhtml(req): + return render(req,'train.html') + +def abtrain(req): + return render(req,'abtrain.html') + +def drillhtml(req): + return render(req,'drill.html') + +def abdrill(req): + return render(req,'abdrill.html') + +def reporthtml(req): + return render(req,'report.html') + +def troubleashtml(req): + return render(req,'troubleashtml.html') + +def userhtml(req): + return render(req,'userhtml.html') + +def bhrhtml(req): + return render(req,'behavior.html') + +def trainfigure(req): + return render(req,'trainfigure.html') + +def equipmentfigure(req): + return render(req,'equipmentfigure.html') + +def mainhtml(req): + #计算一些数据 + userid = req.session['userid'] + companyid = getcompany(userid) + first_day,first_day_of_next_month=gettime() + #查询 + a = Trouble.objects.filter(usecomp__partid=companyid,deletemark=1) + totalyh = a.count() + monthyh = a.filter(fxsj__range=(first_day, first_day_of_next_month)).count() + yhnum = a.filter(todouser__userid=userid).count() + b = Train.objects.filter(usecomp__partid=companyid,deletemark=1) + pxnum = b.filter(state=0,submituser__userid=userid).count() + totalpx = b.count() + monthpx = b.filter(starttime__range=(first_day, first_day_of_next_month)).count() + c = Drill.objects.filter(usecomp__partid=companyid,deletemark=1) + totalyl=c.count() + ylnum =c.filter(state=0,submituser__userid=userid).count() + monthyl=c.filter(starttime__range=(first_day, first_day_of_next_month)).count() + return render(req,'main.html',{'yhnum':yhnum,'totalyh':totalyh,'monthyh':monthyh,'pxnum':pxnum,'totalpx':totalpx,'monthpx':monthpx,'ylnum':ylnum,'totalyl':totalyl,'monthyl':monthyl}) +def login(req): + if req.session.get('userid', None): + return redirect('index') + if req.method == 'POST': + user_form = UserForm(req.POST) + if user_form.is_valid(): + username = req.POST.get('username') + password = req.POST.get('password') + user = User.objects.filter(username = username,deletemark=1) + if user.exists(): + if check_password(password,user[0].epassword): + req.session['userid'] = user[0].userid + req.session.set_expiry(60*40) + return redirect('index') + else: + msg = '密码错误' + return render(req, 'login.html', locals()) + else: + msg = '用户不存在或被禁用' + return render(req,'login.html', locals()) + else: + msg = '验证码错误' + return render(req, 'login.html', locals()) + else: + user_form = UserForm() + return render(req,'login.html', locals()) + +def index(req): + if not req.session.get('userid', None): + return redirect('login') + userid = req.session['userid'] + user=User.objects.get(userid=userid) + companyname = user.usecomp.partname + name = user.name + openid=user.openid + headimgurl=user.headimgurl + nickname=user.nickname + issuper = user.issuper + return render(req, 'index.html',{'username':name,'userid':userid,'openid':openid,'headimgurl':headimgurl,'nickname':nickname,'companyname':companyname,'issuper':issuper,'token':user.token}) +def logout(req): + if req.session.get('userid',None): + logger.info('method: %s user: %s 登出' % (req.method,req.session['userid'])) + req.session.flush() + return redirect('login') + + +def changepwd(req): + userid = req.session['userid'] + oldpassword = req.POST.get('oldpassword') + newpassword = req.POST.get('newpassword') + a = User.objects.get(userid=userid) + if check_password(oldpassword,a.epassword): + a.password = newpassword + a.epassword = make_password(newpassword) + a.save() + del req.session['userid'] + return JsonResponse({"code":1}) + else: + return JsonResponse({"code":2}) + +def mainapi(req): + #计算一些数据 + userid = req.session['userid'] + companyid = getcompany(userid) + first_day,first_day_of_next_month=gettime() + #查询 + a = Trouble.objects.filter(usecomp__partid=companyid,deletemark=1) + totalyh = a.count() + monthyh = a.filter(fxsj__range=(first_day, first_day_of_next_month)).count() + yhnum = a.filter(todouser__userid=userid).count() + + b = Train.objects.filter(usecomp__partid=companyid,deletemark=1) + pxnum = b.filter(state=0,submituser__userid=userid).count() + totalpx = b.count() + monthpx = b.filter(starttime__range=(first_day, first_day_of_next_month)).count() + + c = Drill.objects.filter(usecomp__partid=companyid,deletemark=1) + totalyl=c.count() + ylnum =c.filter(state=0,submituser__userid=userid).count() + monthyl = c.filter(starttime__range=(first_day, first_day_of_next_month)).count() + + gcobjs = Observe.objects.filter(deletemark=1,usecomp__partid=companyid) + gcnum = gcobjs.filter(looktime__range=(first_day,first_day_of_next_month)).count() + monthgc = gcobjs.filter(submittime__range=(first_day, first_day_of_next_month)).count() + + wsobjs = Miss.objects.filter(deletemark=1,usecomp__partid=companyid) + monthws = wsobjs.filter(submittime__range=(first_day, first_day_of_next_month)).count() + + return JsonResponse({"code":1,"yhnum":yhnum,"totalyh":totalyh,"monthyh":monthyh,"pxnum":pxnum,"totalpx":totalpx,"monthpx":monthpx,"ylnum":monthyl,"totalyl":totalyl,"xwnum":monthgc,"wsnum":monthws}) + +def getpgr_ubp(userid,ubp): + a=ubp + if a.aqy!=',': + if ','+str(userid)+',' in a.aqy: + if a.bmzg !=',': + if ','+str(userid)+',' in a.bmzg: + return False + else: + zgstr = a.bmzg + zglist = zgstr.split(',') + zglist = list(filter(None, zglist)) + todouser = User.objects.get(userid=zglist[0]) + return todouser + else: + return False + else: + if ','+str(userid)+',' in a.bmzg: + return False + else: + aqystr = a.aqy + aqylist = aqystr.split(',') + aqylist = list(filter(None, aqylist)) + todouser = User.objects.get(userid=aqylist[0]) + return todouser + else: + if a.bmzg !=',': + if ','+str(userid)+',' in a.bmzg: + return False + else: + zgstr = a.bmzg + zglist = zgstr.split(',') + zglist = list(filter(None, zglist)) + todouser = User.objects.get(userid=zglist[0]) + return todouser + else: + return False + +def getpgr(userid,ubp): + currentpart=ubp + if userid == 'zpbm': + return getpgr_ubp(userid,currentpart) + else: + a=getpgr_ubp(userid,currentpart) + while a==False: + currentpart=currentpart.parentid #已找不到上级部门 + if currentpart: + a=getpgr_ubp(userid,currentpart) + else: + return User.objects.get(userid=userid) + return a + +#系统智能选取评估审核人 主管 +def getpgr_ubp2(userid,ubp): + a=ubp + if a.bmzg !=',': + zgstr = a.bmzg + zglist = zgstr.split(',') + zglist = list(filter(None, zglist)) + todouser = User.objects.get(userid=zglist[0]) + return todouser + else: + return False + +def getpgr2(userid,ubp): + currentpart=ubp + a=getpgr_ubp2(userid,currentpart) + while a==False: + currentpart=currentpart.parentid #已找不到上级部门 + if currentpart: + a=getpgr_ubp2(userid,currentpart) + else: + return User.objects.get(userid=userid) + return a + +#系统智能选取作业审批人 +def getspr_ubp(ubp): + a=ubp + if a.bmzg !=',': + zgstr = a.bmzg + zglist = zgstr.split(',') + zglist = list(filter(None, zglist)) + return zglist[0] + else: + return False + +def getspr(ubp): + currentpart=ubp + a=getspr_ubp(currentpart) + while a==False: + currentpart=currentpart.parentid #已找不到上级部门 + if currentpart: + a=getspr_ubp(currentpart) + else: + return User.objects.get(ubelongpart=currentpart,issuper=1) + return a + +def getsprs(userid,ubp): + currentpart=ubp + a=getsprs_ubp(userid,currentpart) + while a==False: + currentpart=currentpart.parentid #已找不到上级部门 + if currentpart: + a=getsprs_ubp(userid,currentpart) + else: + return User.objects.get(ubelongpart=currentpart,issuper=1) + return a + +def getsprs_ubp(userid,ubp):#主管 + a=ubp + if a.bmzg !=',': + zgstr = a.bmzg + zglist = zgstr.split(',') + zglist = list(map(int, list(filter(None, zglist)))) + if userid in zglist: + return [userid] + else: + return zglist + else: + return False + +def getsprs2(userid,ubp): + currentpart=ubp + a=getsprs_ubp2(userid,currentpart) + while a==False: + currentpart=currentpart.parentid #已找不到上级部门 + if currentpart: + a=getsprs_ubp2(userid,currentpart) + else: + return User.objects.get(ubelongpart=currentpart,issuper=1) + return a + +def getsprs_ubp2(userid,ubp):#主管和被授权人员 + a=ubp + if a.bmzg !=',': + zgstr = a.bmzg + zglist = zgstr.split(',') + zglist = list(map(int, list(filter(None, zglist)))) + bsqstr = a.bsq + bsqlist = list(map(int, list(filter(None, bsqstr.split(','))))) + # if userid in zglist: + # return [userid] + # elif userid in bsqlist: + # zglist.append(userid) + # return zglist + # else: + # return zglist + zglist.extend(bsqlist) + return list(set(zglist)) + else: + return False + + + +def menutree(req): + userid = req.session['userid'] + if User.objects.get(userid=userid).issuper == 1:#如果是超管 + companyid = getcompany(userid) + x = Group.objects.get(usecomp__partid=companyid,grouptype=0).menulink + list1 = x.split(',') + else: + bgroups = User.objects.get(userid=userid).userg.all() + x = '' + for i in bgroups: + x = x + ',' + i.menulink + list1 = x.split(',') + #del list1[0]#删除首空字符 + menus = Menu.objects.exclude(menuid__in=[11,9]).filter(menuid__in=list(filter(None,list(set(list1)))),deletemark=1).order_by('sortnum').values('menuid','menucode','parentid','url','menuname','icon').distinct() + return HttpResponse(json.dumps(list(menus)),content_type="application/json") + + +def apirights(req): + a = req.GET.get('a') + if a=='detail': + groupid = req.GET.get('groupid') + haverights = Group.objects.get(groupid=groupid).menulink.split(',') + userid = req.session['userid'] + companyid = getcompany(userid) + allrights = Group.objects.get(usecomp__partid=companyid,grouptype=0).menulink.split(',') + menus = Menu.objects.exclude(menuid__in=[11,9]).filter(menuid__in = allrights,deletemark=1).order_by('menuid').values('menuid','menucode','parentid','url','menuname','icon').distinct() + for i in menus: + if str(i['menuid']) in haverights and i['url'] != None: + i['checked']=True + else: + i['checked']=False + return HttpResponse(json.dumps(list(menus)),content_type="application/json") + elif a=='edit': + groupid = req.GET.get('groupid') + data = req.POST.get('data') + data = json.loads(data) + rlist = ['11','9'] + for i in data: + rlist.append(str(i['id'])) + # x = i['id'] + # while Menu.objects.get(menuid=x).parentid != None: + # x = Menu.objects.get(menuid=x).parentid.menuid + # rlist.append(str(x)) + Group.objects.filter(groupid=groupid).update(menulink=','.join(list(set(rlist)))) + return JsonResponse({"code":1}) + elif a=='have': + userid = req.session['userid'] + companyid = getcompany(userid) + allrights = Group.objects.get(usecomp__partid=companyid,grouptype=0).menulink.split(',') + return JsonResponse({'code':1,'rights':allrights}) + +def addyh(req): + userid=req.session['userid'] + user=User.objects.get(userid=userid) + yhdata = json.loads(req.body.decode('utf-8')) + troubleid = yhdata['troubleid'] if 'troubleid' in yhdata else '' + fxsj = yhdata['fxsj'] + yhdd = yhdata['yhdd'] + yhms = yhdata['yhms'] + yhtp = '?'.join(yhdata['yhtp']) if 'yhtp' in yhdata else [] + zghtp = '?'.join(yhdata['zghtp']) if 'zghtp' in yhdata else [] + yhdj = yhdata['yhdj'] + yhpg = yhdata['yhpg'] if 'yhpg' in yhdata else '' + jclx = yhdata['jclx'] + yhlx = yhdata['yhlx'] if 'yhlx' in yhdata else '' + yhlb = yhdata['yhlb'] if 'yhlb' in yhdata else '' + yyfx = yhdata['yyfx'] if 'yyfx' in yhdata else '' + zgcs = yhdata['zgcs'] if 'zgcs' in yhdata else '' + zgbm = yhdata['zgbm'] if 'zgbm' in yhdata else '' + zgr = yhdata['zgr'] if 'zgr' in yhdata else '' + zgqx = yhdata['zgqx'] if 'zgqx' in yhdata else '' + zgms = yhdata['zgms'] if 'zgms' in yhdata else '' + sybzt=0 + if troubleid!='': + a = Trouble.objects.get(troubleid=troubleid) + else: + a = Trouble() + companyid=getcompany(userid) + a.usecomp=Partment.objects.get(partid=companyid) + a.fxsj = fxsj + a.fxbm = user.ubelongpart + a.fxr = user + a.yhdd = yhdd + if 'yhqy' in yhdata: + if yhdata['yhqy']: + a.yhqy = Area.objects.get(id= yhdata['yhqy']) + a.yhms = yhms + a.yhtp = yhtp + a.yhnum='YH'+time.strftime('%Y%m%d%H%M%S') + a.yyfx = yyfx + a.zgcs = zgcs + a.zgms = zgms + if yhdj !='': + a.yhdj = Dickey.objects.get(dickeyid=yhdj) + if yhpg !='': + a.yhpg = Dickey.objects.get(dickeyid=yhpg) + if jclx !='': + a.jclx = Dickey.objects.get(dickeyid=jclx) + if yhlx !='': + a.yhlx = Dicclass.objects.get(dicid=yhlx) + if yhlb !='': + a.yhlb = Dickey.objects.get(dickeyid=yhlb) + if a.yhdj.dickeyname =='无隐患' or zgms !='': + #直接到待复查 + a.zghtp = zghtp + a.yhzt = 5 + x=getpgr(userid,user.ubelongpart) + a.todouser=x + a.fcr=x + a.zpr=user + a.pgr=user + a.csqrr = user + a.shr = user + a.sybzt=0 + if zgbm and zgr: + a.zgbm = Partment.objects.get(partid=zgbm) + a.zgr = User.objects.get(userid=zgr) + a.save() + m=TroubleAccess(troubleid=a,clr=user,yhzt=0,action='新增隐患已整改',result=1) + m.save() + postdict={ + 'touser':'oPGqkweX75QtLmgehUN-ipR4hcyc', + 'template_id':'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0', + "miniprogram":{"appid":"wx5c39b569f01c27db","path":"pages/trouble/accesstrouble?troubleid="+str(a.troubleid) }, + 'data':{ + 'first':{ + 'value':a.yhdj.dickeyname + '待复查:' + }, + 'keyword1':{ + 'value':a.yhms + }, + 'keyword2':{ + 'value':a.fxsj + }, + 'keyword3':{ + 'value':a.yhdd + }, + 'remark':{ + 'value':'该隐患已完成整改,请及时复查。' + } + } + } + postdict['touser']=a.todouser.openid + send_wechatmsg.delay(postdict) + yjjs.delay(companyid) + return JsonResponse({"code":1,"trouble":a.troubleid,"yhnum":a.yhnum}) + elif zgr !='' and (yyfx == '' or zgcs ==''): + #直接到整改措施待上传 + a.zgbm=Partment.objects.get(partid=zgbm) + a.zgr=User.objects.get(userid=zgr) + a.zgqx=zgqx + a.yhzt = 7 + a.todouser = User.objects.get(userid=zgr) + if a.zgr != user: + a.fcr=user + else: + a.fcr=getpgr(userid,user.ubelongpart.parentid) + a.pgr=user + a.zpr=user + a.shr=user + a.csqrr=user + a.sybzt=0 + a.save() + m=TroubleAccess(troubleid=a,clr=user,yhzt=0,action='新增隐患并指派整改人',result=1) + m.save() + postdict={ + 'touser':'oPGqkweX75QtLmgehUN-ipR4hcyc', + 'template_id':'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0', + "miniprogram":{"appid":"wx5c39b569f01c27db","path":"pages/trouble/accesstrouble?troubleid="+str(a.troubleid)}, + 'data':{ + + 'first':{ + 'value':a.yhdj.dickeyname + '原因分析/整改措施待上传:' + }, + 'keyword1':{ + 'value':a.yhms + }, + 'keyword2':{ + 'value':a.fxsj + }, + 'keyword3':{ + 'value':a.yhdd + }, + 'remark':{ + 'value':'整改期限为'+zgqx+',请您先及时填写原因分析,制定整改措施。' + } + } + } + postdict['touser']=a.todouser.openid + send_wechatmsg.delay(postdict) + yjjs.delay(companyid) + return JsonResponse({"code":1,"trouble":a.troubleid,"yhnum":a.yhnum}) + elif zgr !='' and yyfx != '' and zgcs !='': + #到待整改 + a.zgbm=Partment.objects.get(partid=zgbm) + a.zgr=User.objects.get(userid=zgr) + a.zgqx=zgqx + a.yhzt = 3 + a.todouser = User.objects.get(userid=zgr) + if a.zgr != user: + a.fcr=user + else: + parentpart = user.ubelongpart.parentid + if parentpart: + a.fcr=getpgr(userid,user.ubelongpart.parentid) + else: + a.fcr=user + a.shr=user + a.pgr=user + a.zpr=user + a.csqrr=user + a.sybzt=0 + a.save() + m=TroubleAccess(troubleid=a,clr=user,yhzt=0,action='新增隐患并指派整改人',result=1) + m.save() + postdict={ + 'touser':'oPGqkweX75QtLmgehUN-ipR4hcyc', + 'template_id':'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0', + "miniprogram":{"appid":"wx5c39b569f01c27db","path":"pages/trouble/accesstrouble?troubleid="+str(a.troubleid)}, + 'data':{ + + 'first':{ + 'value':a.yhdj.dickeyname + '待整改:' + }, + 'keyword1':{ + 'value':a.yhms + }, + 'keyword2':{ + 'value':a.fxsj + }, + 'keyword3':{ + 'value':a.yhdd + }, + 'remark':{ + 'value':'整改期限为'+zgqx+',请您及时完成整改。' + } + } + } + postdict['touser']=a.todouser.openid + send_wechatmsg.delay(postdict) + yjjs.delay(companyid) + return JsonResponse({"code":1,"trouble":a.troubleid,"yhnum":a.yhnum}) + elif zgbm!='' and zgr =='' : + #到整改部门待评估 指派部门整改 + a.yhzt = 1 + x=getpgr('zpbm',Partment.objects.get(partid=zgbm)) + if x==False: + return JsonResponse({"code":101}) + a.todouser=x + a.shr=x + a.csqrr=x + a.fcr=user + a.pgr=user + a.zgbm=Partment.objects.get(partid=zgbm) + a.sybzt=0 + a.save() + m=TroubleAccess(troubleid=a,clr=user,yhzt=0,action='新增隐患并指派整改部门',result=1) + m.save() + postdict={ + 'touser':'oPGqkweX75QtLmgehUN-ipR4hcyc', + 'template_id':'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0', + "miniprogram":{"appid":"wx5c39b569f01c27db","path":"pages/trouble/accesstrouble?troubleid="+str(a.troubleid)}, + 'data':{ + + 'first':{ + 'value':a.yhdj.dickeyname + '待评估:' + }, + 'keyword1':{ + 'value':a.yhms + }, + 'keyword2':{ + 'value':a.fxsj + }, + 'keyword3':{ + 'value':a.yhdd + }, + 'remark':{ + 'value':'请您及时评估并制定整改通知单。' + } + } + } + postdict['touser']=a.todouser.openid + send_wechatmsg.delay(postdict) + return JsonResponse({"code":1,"trouble":a.troubleid,"yhnum":a.yhnum}) + else: + #正常流程到待评估 + a.yhzt = 1 + x=getpgr(userid,user.ubelongpart) + a.pgr = x + a.todouser=x + a.sybzt=0 + a.save() + m=TroubleAccess(troubleid=a,clr=user,yhzt=0,action='新增隐患',result=1) + m.save() + postdict={ + 'touser':'oPGqkweX75QtLmgehUN-ipR4hcyc', + 'template_id':'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0', + "miniprogram":{"appid":"wx5c39b569f01c27db","path":"pages/trouble/accesstrouble?troubleid="+str(a.troubleid)}, + 'data':{ + + 'first':{ + 'value':a.yhdj.dickeyname + '待评估:' + }, + 'keyword1':{ + 'value':a.yhms + }, + 'keyword2':{ + 'value':a.fxsj + }, + 'keyword3':{ + 'value':a.yhdd + }, + 'remark':{ + 'value':'请您及时评估并制定整改通知单。' + } + } + } + postdict['touser']=a.todouser.openid + send_wechatmsg.delay(postdict) + return JsonResponse({"code":1,"trouble":a.troubleid,"yhnum":a.yhnum}) + + +def getyh(req): + if 'userid' in req.session: + userid = req.session['userid'] + troubleid =req.GET.get('troubleid') + a = Trouble.objects.filter(troubleid=troubleid).values('sybzt','troubleid','fxr__userid','fxr__name','yhms','yhzt','fxsj','tbsj','yhlb__dickeyname','yhlb__dickeyid','todouser__name','yhpg__dickeyname','yhnum','yhdd','fxbm__partname','yhdj__dickeyname','yhdj__dickeyid','yhpg__dickeyname','yhpg__dickeyid','jclx__dickeyname','jclx__dickeyid','yhlx__dicname','yhlx__dicid','yyfx','zgcs','yhtp','zghtp','zgms','zgbm__partname','zgbm__partid','zgr__name','zgqx','fcr__ubelongpart__partname','fcr__name','shr__ubelongpart__partname','shr__name','pgr__ubelongpart__partname','pgr__name','zpr__ubelongpart__partname','zpr__name','csqrr__ubelongpart__partname','csqrr__name','shyj','fcyj','shresult','zgbm','zgr','pgyj')[0] + #print(a['yhtp']) + if a['yhtp']!='': + a['yhtp'] = a['yhtp'].split('?') + if a['zghtp']!='': + a['zghtp']= a['zghtp'].split('?') + for key in a: + if a[key] == None: + a[key] = '' + #print(a['yhtp']) + return JsonResponse(a) + #return JsonResponse() + else: + return JsonResponse({"code":0}) + +def accessyh(req): + userid = req.session['userid'] + yhdata = json.loads(req.body.decode('utf-8')) + troubleid =yhdata['troubleid'] + a = Trouble.objects.get(troubleid=troubleid) + companyid = a.usecomp.partid + b = User.objects.get(userid=userid) + shresult=yhdata['shresult'] + if a.yhzt==5:#待复查 + fcyj=yhdata['fcyj'] + if shresult=='reject': + a.shresult=3 + a.yhzt=3 + a.sybzt=5 + if a.zgr != None: + a.todouser = a.zgr + else: + a.todouser = a.fxr + a.fcyj=fcyj + a.save() + m=TroubleAccess(troubleid=a,clr=b,yhzt=5,action='复查未通过',opinion=fcyj,result=0) + m.save() + postdict={ + 'touser':'oPGqkweX75QtLmgehUN-ipR4hcyc', + 'template_id':'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0', + "miniprogram":{"appid":"wx5c39b569f01c27db","path":"pages/trouble/accesstrouble?troubleid="+str(a.troubleid)}, + 'data':{ + 'first':{'value':a.yhdj.dickeyname + '待整改:'}, + 'keyword1':{'value':a.yhms}, + 'keyword2':{'value':a.fxsj}, + 'keyword3':{'value':a.yhdd}, + 'remark':{'value':'您提交的整改结果未通过复查,请重新整改。'} + } + } + postdict['touser']=a.todouser.openid + send_wechatmsg.delay(postdict) + return JsonResponse({"code":1}) + else: + a.yhzt=6 + a.sybzt=5 + a.todouser=None + a.fcyj=fcyj + a.save() + m=TroubleAccess(troubleid=a,clr=b,yhzt=5,action='整改结果复查通过',opinion=fcyj,result=1) + m.save() + objs = Inspect.objects.filter(trouble=a) + if objs.exists(): + obj = objs[0] + obj.equipment.state=1 + obj.equipment.save() + yjjs.delay(companyid) + return JsonResponse({"code":1}) + # elif a.zgr==None and a.zgms=='':#无隐患 + # a.yhzt=6 + # a.sybzt=5 + # a.todouser=None + # a.fcyj=fcyj + # a.save() + # m = TroubleAccess(troubleid=a,clr=b,yhzt=5,action='整改结果复查通过',opinion=fcyj,result=1) + # m.save() + # yjjs.delay(companyid) + # return JsonResponse({"code":1}) + # elif a.zgr==None:#直接整改的 + # a.yhzt=6 + # a.sybzt=5 + # a.todouser=None + # a.fcyj=fcyj + # a.save() + # m=TroubleAccess(troubleid=a,clr=b,yhzt=5,action='整改结果复查通过',opinion=fcyj,result=1) + # m.save() + # yjjs.delay(companyid) + # return JsonResponse({"code":1}) + + elif a.yhzt==3:#提交整改后 + if a.sybzt==4 or a.sybzt== 5: + a.shresult=4 + else: + a.shresult=1 + if a.shr==a.fcr or a.shr==None: + a.yhzt=5 + a.sybzt=3 + a.todouser=a.fcr + else: + a.yhzt=4 + a.sybzt=3 + a.todouser=a.shr + a.zgms=yhdata['zgms'] + a.zghtp='?'.join(yhdata['zghtp']) + a.zgsj=datetime.now() + a.save() + m=TroubleAccess(troubleid=a,clr=b,yhzt=3,action='提交整改结果',result=1) + m.save() + return JsonResponse({"code":1}) + elif a.yhzt==4:#待审核 + shyj=yhdata['shyj'] + if shresult=='reject': + a.shresult=2 + a.yhzt=3 + a.sybzt=4 + a.todouser=a.zgr + a.shyj=shyj + a.save() + m=TroubleAccess(troubleid=a,clr=b,yhzt=4,action='审核未通过',opinion=shyj,result=0) + m.save() + postdict={ + 'touser':'oPGqkweX75QtLmgehUN-ipR4hcyc', + 'template_id':'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0', + "miniprogram":{"appid":"wx5c39b569f01c27db","path":"pages/trouble/accesstrouble?troubleid="+str(a.troubleid)}, + 'data':{ + 'first':{'value':a.yhdj.dickeyname + '待整改:'}, + 'keyword1':{'value':a.yhms}, + 'keyword2':{'value':a.fxsj}, + 'keyword3':{'value':a.yhdd}, + 'remark':{'value':'您提交的整改结果未通过审核,请重新整改。'} + } + } + postdict['touser']=a.todouser.openid + send_wechatmsg.delay(postdict) + return JsonResponse({"code":1}) + else: + a.yhzt=5 + a.sybzt=4 + a.todouser=a.fcr + a.shyj=shyj + a.save() + m=TroubleAccess(troubleid=a,clr=b,yhzt=4,action='整改结果审核通过',opinion=shyj,result=1) + m.save() + return JsonResponse({"code":1}) + elif a.yhzt==1: + if yhdata['shresult'] == 'reject': + if 'accept' in yhdata: + if yhdata['accept'] == 'no': + a.shresult = 6 + a.yhzt = 6 + a.sybzt = 1 + a.todouser = None + a.pgyj = yhdata['pgyj'] + a.save() + m=TroubleAccess(troubleid=a,clr=a.pgr,yhzt=6,action='未采纳',opinion=yhdata['pgyj']) + m.save() + postdict={ + 'touser':'oPGqkweX75QtLmgehUN-ipR4hcyc', + 'template_id':'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0', + "miniprogram":{"appid":"wx5c39b569f01c27db","path":"pages/trouble/accesstrouble?troubleid="+str(a.troubleid)}, + 'data':{ + 'first':{'value':a.yhdj.dickeyname + '未被采纳:'}, + 'keyword1':{'value':a.yhms}, + 'keyword2':{'value':a.fxsj}, + 'keyword3':{'value':a.yhdd}, + 'remark':{'value':'请查看未采纳原因'} + } + } + postdict['touser']=a.fxr.openid + send_wechatmsg.delay(postdict) + return JsonResponse({"code":1}) + else: + a.shresult = 5 + a.yhzt = 0 + a.sybzt = 1 + a.todouser = a.fxr + a.pgyj = yhdata['pgyj'] + a.save() + m=TroubleAccess(troubleid=a,clr=a.pgr,yhzt=0,action='请'+a.fxr.name+'重新填报',result=0) + m.save() + postdict={ + 'touser':'oPGqkweX75QtLmgehUN-ipR4hcyc', + 'template_id':'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0', + "miniprogram":{"appid":"wx5c39b569f01c27db","path":"pages/trouble/accesstrouble?troubleid="+str(a.troubleid)}, + 'data':{ + 'first':{'value':a.yhdj.dickeyname + '被退回需重新上报:'}, + 'keyword1':{'value':a.yhms}, + 'keyword2':{'value':a.fxsj}, + 'keyword3':{'value':a.yhdd}, + 'remark':{'value':'请查看评估意见并修改后上传。'} + } + } + postdict['touser']=a.todouser.openid + send_wechatmsg.delay(postdict) + return JsonResponse({"code":1}) + elif 'zppg' in yhdata and yhdata['zppg']=='yes': + a.yhzt=1 + a.sybzt=1 + #a.yhms=req.POST.get('yhms') + a.todouser = User.objects.get(userid=yhdata['newr']) + a.fcr = a.todouser + a.pgr = a.todouser + a.save() + m=TroubleAccess(troubleid=a,clr=b,yhzt=1,action='请'+a.fcr.name+'继续评估和复查',result=1) + m.save() + postdict={ + 'touser':'oPGqkweX75QtLmgehUN-ipR4hcyc', + 'template_id':'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0', + "miniprogram":{"appid":"wx5c39b569f01c27db","path":"pages/trouble/accesstrouble?troubleid="+str(a.troubleid)}, + 'data':{ + 'first':{'value':a.yhdj.dickeyname + '待评估:'}, + 'keyword1':{'value':a.yhms}, + 'keyword2':{'value':a.fxsj}, + 'keyword3':{'value':a.yhdd}, + 'remark':{'value':'请及时评估该隐患并制定整改通知单。'} + } + } + postdict['touser']=a.todouser.openid + send_wechatmsg.delay(postdict) + return JsonResponse({"code":1}) + else: + #print(yhdata['zgcs']=='') + if yhdata['zgcs']!='': + a.yhzt=3 + a.sybzt=1 + a.yyfx=yhdata['yyfx'] + a.zgcs=yhdata['zgcs'] + a.yhpg=Dickey.objects.get(dickeyid=yhdata['yhpg']) + a.yhlx=Dicclass.objects.get(dicid=yhdata['yhlx']) + a.yhlb=Dickey.objects.get(dickeyid=yhdata['yhlb']) + a.zgbm=Partment.objects.get(partid=yhdata['zgbm']) + a.zgr=User.objects.get(userid=yhdata['zgr']) + a.zgqx=yhdata['zgqx'] + a.todouser=a.zgr + if a.pgr==None: + a.pgr=b + a.zpr=b + if a.fcr: + pass + else: + a.fcr=b + a.csqrr=b + a.shr=b + a.save() + m=TroubleAccess(troubleid=a,clr=b,yhzt=1,action='指派'+a.zgr.name+'整改',result=1) + m.save() + postdict={ + 'touser':'oPGqkweX75QtLmgehUN-ipR4hcyc', + 'template_id':'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0', + "miniprogram":{"appid":"wx5c39b569f01c27db","path":"pages/trouble/accesstrouble?troubleid="+str(a.troubleid)}, + 'data':{ + 'first':{'value':a.yhdj.dickeyname + '待整改:'}, + 'keyword1':{'value':a.yhms}, + 'keyword2':{'value':a.fxsj}, + 'keyword3':{'value':a.yhdd}, + 'remark':{'value':'整改期限为'+yhdata['zgqx']+',请您及时完成整改。'} + } + } + postdict['touser']=a.todouser.openid + send_wechatmsg.delay(postdict) + return JsonResponse({"code":1}) + else: + a.yhzt=7 + a.sybzt=1 + #a.yhms=req.POST.get('yhms') + #print(req.POST.get('yhms')) + a.yhpg=Dickey.objects.get(dickeyid=yhdata['yhpg']) + a.yhlx=Dicclass.objects.get(dicid=yhdata['yhlx']) + a.yhlb=Dickey.objects.get(dickeyid=yhdata['yhlb']) + a.zgbm=Partment.objects.get(partid=yhdata['zgbm']) + a.zgr=User.objects.get(userid=yhdata['zgr']) + a.zgqx=yhdata['zgqx'] + a.todouser=a.zgr + if a.pgr==None: + a.pgr=b + a.zpr=b + a.csqrr=b + a.shr=b + if a.fcr: + pass + else: + a.fcr=b + a.save() + m=TroubleAccess(troubleid=a,clr=b,yhzt=1,action='指派'+a.zgr.name+'整改',result=1) + m.save() + postdict={ + 'touser':'oPGqkweX75QtLmgehUN-ipR4hcyc', + 'template_id':'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0', + "miniprogram":{"appid":"wx5c39b569f01c27db","path":"pages/trouble/accesstrouble?troubleid="+str(a.troubleid)}, + 'data':{ + 'first':{'value':a.yhdj.dickeyname + '待整改:'}, + 'keyword1':{'value':a.yhms}, + 'keyword2':{'value':a.fxsj}, + 'keyword3':{'value':a.yhdd}, + 'remark':{'value':'整改期限为'+yhdata['zgqx']+',请您及时完成整改。'} + } + } + postdict['touser']=a.todouser.openid + send_wechatmsg.delay(postdict) + return JsonResponse({"code":1}) + elif a.yhzt==7: + a.yhzt=2 + a.sybzt=7 + a.yyfx=yhdata['yyfx'] + a.zgcs=yhdata['zgcs'] + a.todouser = a.zpr + a.save() + m=TroubleAccess(troubleid=a,clr=b,yhzt=7,action='制定整改措施/方案',result=1) + m.save() + postdict={ + 'touser':'oPGqkweX75QtLmgehUN-ipR4hcyc', + 'template_id':'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0', + "miniprogram":{"appid":"wx5c39b569f01c27db","path":"pages/trouble/accesstrouble?troubleid="+str(a.troubleid)}, + 'data':{ + 'first':{'value':a.yhdj.dickeyname + '待整改:'}, + 'keyword1':{'value':a.yhms}, + 'keyword2':{'value':a.fxsj}, + 'keyword3':{'value':a.yhdd}, + 'remark':{'value':'整改期限为'+a.zgqx.strftime("%Y-%m-%d %H:%M")+',请您先先制定整改措施/方案。'} + } + } + postdict['touser']=a.todouser.openid + send_wechatmsg.delay(postdict) + return JsonResponse({"code":1}) + elif a.yhzt==0: + a.yhzt = 1 + a.todouser = a.pgr + a.sybzt=0 + a.save() + m=TroubleAccess(troubleid=a,clr=a.fxr,yhzt=0,action='重新修改隐患',result=1) + m.save() + postdict={ + 'touser':'oPGqkweX75QtLmgehUN-ipR4hcyc', + 'template_id':'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0', + "miniprogram":{"appid":"wx5c39b569f01c27db","path":"pages/trouble/accesstrouble?troubleid="+str(a.troubleid)}, + 'data':{ + + 'first':{ + 'value':a.yhdj.dickeyname + '待评估:' + }, + 'keyword1':{ + 'value':a.yhms + }, + 'keyword2':{ + 'value':a.fxsj + }, + 'keyword3':{ + 'value':a.yhdd + }, + 'remark':{ + 'value':'发现人重新提交隐患,请您及时评估并制定整改通知单。' + } + } + } + postdict['touser']=a.todouser.openid + send_wechatmsg.delay(postdict) + return JsonResponse({"code":1}) + elif a.yhzt==2: + a.yhzt=3 + a.sybzt=2 + a.yyfx=yhdata['yyfx'] + a.zgcs=yhdata['zgcs'] + a.todouser = a.zgr + a.save() + m=TroubleAccess(troubleid=a,clr=a.csqrr,yhzt=2,action='确认整改措施',result=1) + m.save() + postdict={ + 'touser':'oPGqkweX75QtLmgehUN-ipR4hcyc', + 'template_id':'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0', + "miniprogram":{"appid":"wx5c39b569f01c27db","path":"pages/trouble/accesstrouble?troubleid="+str(a.troubleid)}, + 'data':{ + 'first':{'value':a.yhdj.dickeyname + '待整改:'}, + 'keyword1':{'value':a.yhms}, + 'keyword2':{'value':a.fxsj}, + 'keyword3':{'value':a.yhdd}, + 'remark':{'value':'整改措施已确认,请您及时完成整改。'} + } + } + postdict['touser']=a.todouser.openid + send_wechatmsg.delay(postdict) + return JsonResponse({"code":1}) + + +def parttree2(req): + userid = req.session['userid'] + companyid = getcompany(userid) + list_items = (Partment.objects.filter(partlink__contains=','+companyid+',')).annotate(id=F('partid'),parentId=F('parentid'),name=F('partname')).values('id','parentId','name') + return HttpResponse(json.dumps(list(list_items)),content_type="application/json") + +def getdicclass(req): + dicid=req.GET.get('dicid') + a=Dicclass.objects.filter(parentid=dicid).values('dicid','dicname') + str = transstr(a,'dicid','dicname') + return HttpResponse(str,content_type="application/json") + +def getdickey(req): + userid = req.session['userid'] + companyid = getcompany(userid) + a = Dickey.objects.filter(dicparent=req.GET.get('dicclass'),deletemark=1) + a = (a.filter(usecomps__contains=',1,')|a.filter(usecomps__contains=','+companyid+',')).exclude(nousecomps__contains=','+companyid+',') + a = a.values('dickeyid','dicparent__dicname','dickeyname','dicparent__dicid','detail').order_by('dickeyid') + total=a.count() + if req.GET.get('a')=='combobox': + return HttpResponse(transstr(a,'dickeyid','dickeyname'),content_type="application/json") + else: + if req.GET.get('dicclass')=='33': + for i in a: + objs = Operationspjd.objects.filter(zylx=Dickey.objects.get(dickeyid=i['dickeyid']),usecomp=Partment.objects.get(partid=companyid)) + str='作业负责人-作业部门-属地部门' + for x in objs: + str = str + '-' + x.jdmc + i['splcdetail'] = str + a = a + return HttpResponse(transjson(total,a),content_type="application/json") + + +def addtrain(req): + userid = req.session['userid'] + companyid = getcompany(userid) + a=Train() + a.trainname=req.POST.get('trainname') + a.trainplace=req.POST.get('trainplace') + a.starttime=req.POST.get('starttime') + a.usecomp=Partment.objects.get(partid=companyid) + a.trainlevel=Dicclass.objects.get(dicid=req.POST.get('trainlevel')) + a.traincontent=Dickey.objects.get(dickeyid=req.POST.get('traincontent')) + a.manlevel=Dickey.objects.get(dickeyid=req.POST.get('manlevel')) + a.traintype=Dickey.objects.get(dickeyid=req.POST.get('traintype')) + a.detailcontent=req.POST.get('detailcontent') + a.teacher = req.POST.get('teacher',None) + if req.POST.get('lecturer',None): + x = User.objects.get(userid=req.POST.get('lecturer')) + a.lecturer = x + a.teacher = x.name + a.state=0 + a.participantnum=req.POST.get('participantnum') + a.submituser=User.objects.get(userid=userid) + a.duration=req.POST.get('duration') + a.trainnum='PX'+time.strftime('%Y%m%d%H%M%S') + a.material= req.POST.get('upfile') + a.save() + a.checkqr = makeqr_train('https://safeyun.ctcshe.com/miniprogram/checktrain?trainid='+str(a.trainid)) + a.save() + plist=req.POST.getlist('trainpart') + ustr = req.POST.get('participant') + ulist=ustr.split(',') + b=[] + for i in ulist: + x=User.objects.get(userid=i) + m = Trainuser(train=a,participant=x) + m.save() + b.append(x.openid) + for i in plist: + a.trainpart.add(Partment.objects.get(partid=i)) + postdict={ + 'touser':'', + 'template_id':'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0', + 'data':{ + 'first':{ + 'value':a.trainlevel.dicname + '培训通知:' + }, + 'keyword1':{ + 'value':a.trainname + }, + 'keyword2':{ + 'value':a.starttime + }, + 'keyword3':{ + 'value':a.trainplace + }, + 'remark':{ + 'value':a.teacher+'授课,时长为'+a.duration+'小时,请您务必参加' + } + } + } + send_wechatmsgs.delay(postdict,b) + return JsonResponse({"code":1}) + + +def adddrill(req): + userid = req.session['userid'] + companyid = getcompany(userid) + a=Drill() + a.drillname=req.POST.get('drillname') + a.drillplace=req.POST.get('drillplace') + a.starttime=req.POST.get('starttime') + a.usecomp=Partment.objects.get(partid=companyid) + a.drilllevel=Dicclass.objects.get(dicid=req.POST.get('drilllevel')) + a.drillcontent=Dickey.objects.get(dickeyid=req.POST.get('drillcontent')) + a.drilltype=Dickey.objects.get(dickeyid=req.POST.get('drilltype')) + a.detailcontent=req.POST.get('detailcontent') + if req.POST.get('chief'): + a.chief=User.objects.get(userid=req.POST.get('chief')) + a.state=0 + a.participantnum=req.POST.get('participantnum') + a.submituser=User.objects.get(userid=userid) + a.drillnum='YL'+time.strftime('%Y%m%d%H%M%S') + a.save() + plist=req.POST.getlist('drillpart') + ustr = req.POST.get('participant') + ulist=ustr.split(',') + b=[] + for i in ulist: + x=User.objects.get(userid=i) + m = Drilluser(drillid=a,participant=x) + m.save() + b.append(x.openid) + for i in plist: + a.drillpart.add(Partment.objects.get(partid=i)) + postdict={ + 'touser':'oPGqkweX75QtLmgehUN-ipR4hcyc', + 'template_id':'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0', + 'data':{ + 'first':{ + 'value':a.drilllevel.dicname + '演练通知:' + }, + 'keyword1':{ + 'value':a.drillname + }, + 'keyword2':{ + 'value':a.starttime + }, + 'keyword3':{ + 'value':a.drillplace + }, + 'remark':{ + 'value':a.chief.name+'为总指挥,请务必参加!' + } + } + } + send_wechatmsgs.delay(postdict,b) + return JsonResponse({"code":1}) + +def accesstrain(req): + userid=req.session.get('userid') + trainid = req.GET.get('trainid') + detailcontent = req.POST.get('detailcontent') + pxxg = req.POST.get('pxxg') + knownum = req.POST.get('knownum') + duration=req.POST.get('duration') + upfile = req.POST.get('upfile') + a=Train.objects.filter(trainid=trainid) + a.update(detailcontent=detailcontent,knownum=knownum,material=upfile,state=1,duration=duration,pxxg=pxxg) + companyid = getcompany(userid) + #绑定考试 + if req.POST.get('examtest'): + a.update(examtest=ExamTest.objects.get(id=req.POST.get('examtest'))) + for i in Trainuser.objects.filter(train__trainid=trainid): + objs = ExamTestDetail.objects.filter(examtest__id=req.POST.get('examtest'),user=i.participant) + if objs.exists(): + i.examtestdetail = objs[0] + i.save() + yjjs_px.delay(companyid) + return JsonResponse({"code":1}) + +def accessdrill(req): + drillid = req.GET.get('drillid') + detailcontent = req.POST.get('detailcontent') + participantnum = req.POST.get('participantnum') + knownum = req.POST.get('knownum') + upfile = req.POST.get('upfile') + a=Drill.objects.filter(drillid=drillid) + a.update(detailcontent=detailcontent,participantnum=participantnum,knownum=knownum,material=upfile,state=1) + if req.POST.get('participant'): + a[0].participant.clear() + ustr = req.POST.get('participant') + ulist=ustr.split(',') + for i in ulist: + x=User.objects.get(userid=i) + m = Drilluser(drillid=a[0],participant=x) + m.save() + userid=req.session.get('userid') + companyid = getcompany(userid) + yjjs_yl.delay(companyid) + return JsonResponse({"code":1}) + +def grouphandle(req): + if req.GET.get('a')=='addgrouph': + return render(req,'abgroup.html') + elif req.GET.get('a')=='delgroup': + userid = req.session['userid'] + a = Group.objects.get(groupid=req.GET.get('groupid')) + if User.objects.get(userid = userid).issuper == 1 and a.grouptype not in [1,2,3]: + groupid=req.GET.get('groupid') + Group.objects.filter(groupid=groupid).delete() + return JsonResponse({"code":1}) + else: + return JsonResponse({"code":0}) + elif req.GET.get('a')=='removeuser': + groupid=req.GET.get('groupid') + userid=req.GET.get('userid') + useridx = req.session['userid'] + if User.objects.get(userid=useridx).issuper == 1: + a = Group.objects.get(groupid=groupid) + a.users.remove(User.objects.get(userid=userid)) + return JsonResponse({"code":1}) + else: + return JsonResponse({"code":0}) + elif req.GET.get('a') =='addguser': + groupid=req.GET.get('groupid') + users = req.POST.get('users').split(',') + a = Group.objects.get(groupid=groupid) + for i in users: + if User.objects.get(userid=int(i)) not in a.users.all(): + a.users.add(User.objects.get(userid=int(i))) + return JsonResponse({"code":1}) + elif req.GET.get('a') =='list': + userid = req.session['userid'] + companyid = getcompany(userid) + a=Group.objects.filter(usecomp__partid = companyid).exclude(grouptype=0).values('groupid','groupname','grouptype') + total=a.count() + return HttpResponse(transjson(total,a),content_type="application/json") + elif req.GET.get('a') =='list2':#排除全体用户组 + userid = req.session['userid'] + companyid = getcompany(userid) + a=Group.objects.filter(usecomp__partid = companyid).exclude(grouptype=0).exclude(grouptype=3).values('groupid','groupname','grouptype') + total=a.count() + return HttpResponse(transjson(total,a),content_type="application/json") + elif req.GET.get('a') =='combobox': + userid = req.session['userid'] + companyid = getcompany(userid) + a = Group.objects.filter(usecomp__partid = companyid).exclude(grouptype=0).values('groupid','groupname') + keystr=transstr(a,'groupid','groupname') + return HttpResponse(keystr,content_type="application/json") + elif req.method == 'POST': + data = json.loads(req.body.decode('utf-8')) + userid = req.session['userid'] + companyid = getcompany(userid) + if data['groupid'] =='': + a = Group() + a.groupname = data['groupname'] + a.usecomp = Partment.objects.get(partid=companyid) + a.save() + return JsonResponse({"code":1}) + else: + return JsonResponse({"code":0}) + +def troublehandle(req): + a = req.GET.get('a') + if a == 'detail': + troubleid = req.GET.get('troubleid') + a = Trouble.objects.filter(troubleid=troubleid) + x = a.values('yhnum','fxr__name','yhms','yhzt','fxsj','tbsj','yhlb__dickeyname','yhpg__dickeyname','yhdd','fxbm__partname','yhdj__dickeyname','yhpg__dickeyname', + 'jclx__dickeyname','yhlx__dicname','yyfx','zgcs','yhtp','zghtp','zgms','zgbm__partname','zgr__name','zgqx','yhqy__name')[0] + b = TroubleAccess.objects.filter(troubleid=a[0]).order_by('accesssj').values('clr__name','opinion','action','accesssj') + x['lcxq'] = list(b) + if x['yhtp']!='': + x['yhtp'] = x['yhtp'].split('?') + else: + x['yhtp']==[] + if x['zghtp']!='': + x['zghtp']= x['zghtp'].split('?') + else: + x['zghtp']==[] + for key in x: + if x[key] == None: + x[key] = '' + return HttpResponse(json.dumps(x,cls=MyEncoder),content_type="application/json") + elif a == 'detailhtml': + troubleid = req.GET.get('troubleid') + return render(req,'troubledetail.html',{'troubleid':troubleid}) + elif a == 'todonum': + todonum = Trouble.objects.filter(todouser=User.objects.get(userid=req.session['userid'])).exclude(deletemark=0).count() + return JsonResponse({'code':1,'todonum':todonum}) + elif a == 'exportword': + troubleid = req.GET.get('troubleid') + v = exportdoc('yh',troubleid) + return JsonResponse({"code":1,'downloadurl':v}) + elif a=='exportexcel': + userid = req.session['userid'] + companyid = getcompany(userid) + a = Trouble.objects.filter(usecomp=Partment.objects.get(partid=companyid),deletemark=1) + yhzt = req.GET.get('yhzt') + yhlx = req.GET.get('yhlx') + yhlb = req.GET.get('yhlb') + jclx = req.GET.get('jclx') + yhpg = req.GET.get('yhpg') + fxbm = req.GET.get('fxbm') + fxr = req.GET.get('fxr') + qssj = req.GET.get('qssj') + jssj = req.GET.get('jssj') + if yhzt !='' and yhzt != None: + a = a.filter(yhzt=yhzt) + if yhlx: + a = a.filter(yhlx__dicid=yhlx) + if yhlb: + a = a.filter(yhlb__dickeyid=yhlb) + if jclx: + a = a.filter(jclx__dickeyid=jclx) + if yhpg: + a = a.filter(yhpg__dickeyid=yhpg) + if fxbm or fxr: + if fxr: + a = a.filter(fxr__userid=fxr) + elif fxbm: + parts = Partment.objects.filter(partlink__contains=','+str(fxbm)+',')|Partment.objects.filter(partid=fxbm) + a = a.filter(fxbm__in=parts) + if qssj: + a = a.filter(fxsj__gte=qssj) + if jssj: + a = a.filter(fxsj__lte=jssj) + res = exportxlsx('yh',a) + return res + elif a=='del': + userid = req.session['userid'] + if User.objects.get(userid = userid).issuper == 1: + a = Trouble.objects.get(troubleid = req.POST.get('troubleid')) + a.deletemark=0 + a.save() + return JsonResponse({"code":1}) + else: + a = Trouble.objects.get(troubleid = req.POST.get('troubleid')) + b = TroubleAccess.objects.filter(troubleid__troubleid=req.POST.get('troubleid')).count() + if b == 1 and a.fxr.userid==userid: + a.deletemark=0 + a.save() + return JsonResponse({"code":1}) + else: + return JsonResponse({"code":0}) + elif a=='listtodo': + userid = req.session['userid'] + a = Trouble.objects.filter(todouser=User.objects.get(userid=userid)).exclude(deletemark=0) + total = a.count() + startnum,endnum=fenye(req) + obj = a.order_by('-xgsj')[startnum:endnum].values('troubleid','fxr__userid','fxr__name','yhms','yhzt','fxsj','tbsj','yhlb__dickeyname','todouser__name','todouser__userid','yhpg__dickeyname','yhnum','yhdj__dickeyname','shresult','zgqx') + return HttpResponse(transjson(total,obj),content_type="application/json") + elif a=='listself': + userid = req.session['userid'] + a=Trouble.objects.filter(fxr__userid=userid).exclude(deletemark=0) + total = a.count() + startnum,endnum=fenye(req) + obj = a.order_by('-xgsj')[startnum:endnum].values('troubleid','fxr__userid','fxr__name','yhms','yhzt','fxsj','tbsj','yhlb__dickeyname','todouser__name','todouser__userid','yhpg__dickeyname','yhnum','yhdj__dickeyname','shresult','zgqx') + return HttpResponse(transjson(total,obj),content_type="application/json") + elif a=='listall': + userid = req.session['userid'] + companyid = getcompany(userid) + a=Trouble.objects.filter(usecomp=Partment.objects.get(partid=companyid)).exclude(deletemark=0) + total = a.count() + startnum,endnum=fenye(req) + obj = a.order_by('-xgsj')[startnum:endnum].values('troubleid','fxr__userid','fxr__name','yhms','yhzt','fxsj','tbsj','yhlb__dickeyname','todouser__name','todouser__userid','yhpg__dickeyname','yhnum','yhdj__dickeyname','shresult','zgqx') + return HttpResponse(transjson(total,obj),content_type="application/json") + elif a == 'listsearch': + userid = req.session['userid'] + companyid = getcompany(userid) + a = Trouble.objects.filter(usecomp=Partment.objects.get(partid=companyid)).exclude(deletemark=0) + yhzt = req.GET.get('yhzt') + yhlx = req.GET.get('yhlx') + yhlb = req.GET.get('yhlb') + jclx = req.GET.get('jclx') + yhpg = req.GET.get('yhpg') + fxbm = req.GET.get('fxbm') + fxr = req.GET.get('fxr') + qssj = req.GET.get('qssj') + jssj = req.GET.get('jssj') + yhqy = req.GET.get('yhqy') + zgbm = req.GET.get('zgbm') + if yhzt !='' and yhzt != None: + a = a.filter(yhzt=yhzt) + if yhlx: + a = a.filter(yhlx__dicid=yhlx) + if yhlb: + a = a.filter(yhlb__dickeyid=yhlb) + if jclx: + a = a.filter(jclx__dickeyid=jclx) + if yhpg: + a = a.filter(yhpg__dickeyid=yhpg) + if fxbm or fxr: + if fxr: + a = a.filter(fxr__userid=fxr) + elif fxbm: + parts = Partment.objects.filter(partlink__contains=','+str(fxbm)+',')|Partment.objects.filter(partid=fxbm) + a = a.filter(fxbm__in=parts) + if qssj: + a = a.filter(fxsj__gte=qssj) + if jssj: + a = a.filter(fxsj__lte=jssj) + if yhqy: + a = a.filter(yhqy__id = yhqy) + if zgbm: + parts = Partment.objects.filter(partlink__contains=','+str(zgbm)+',')|Partment.objects.filter(partid=zgbm) + a = a.filter(Q(zgbm__in=parts) | Q(fxbm__in=parts,zgbm=None)) + total = a.count() + startnum,endnum=fenye(req) + obj = a.order_by('-fxsj')[startnum:endnum].values('troubleid','fxr__userid','fxr__name','yhms','yhzt','fxsj','tbsj','yhlb__dickeyname','todouser__name','yhpg__dickeyname','yhnum','yhdj__dickeyname','shresult','zgqx','yhtp','zghtp','todouser__userid') + return HttpResponse(transjson(total,obj),content_type="application/json") + elif a == 'listarea': + userid = req.session['userid'] + companyid = getcompany(userid) + a = Trouble.objects.filter(usecomp__partid=companyid,deletemark=1).exclude(yhzt=6) + yhqy = req.GET.get('yhqy') + if yhqy: + a = a.filter(yhqy__id = yhqy) + total = a.count() + startnum,endnum=fenye(req) + obj = a.order_by('-xgsj')[startnum:endnum].values('troubleid','fxr__userid','fxr__name','yhms','yhzt','fxsj','tbsj','yhlb__dickeyname','todouser__name','yhpg__dickeyname','yhnum','yhdj__dickeyname','shresult','zgqx','yhtp','zghtp') + return HttpResponse(transjson(total,obj),content_type="application/json") + +#图表查询 + +def charthandle(req): + userid = req.session['userid'] + companyid = getcompany(userid) + if req.GET.get('a')=='yjycqst': + yjyc_vl = Yjyc.objects.filter(usecomp__partid=companyid).order_by('-buildtime')[:12].values('year','month','yjz','ycz') + return HttpResponse(transjson(yjyc_vl.count(),yjyc_vl),content_type="application/json") + elif req.GET.get('a')=='yjycz': + year = int(req.GET.get('year')) + month = int(req.GET.get('month')) + objs = Yjyc.objects.filter(usecomp__partid=companyid,year=year,month=month) + if objs.exists(): + nowyjz = objs[0].yjz + nowycz = objs[0].ycz + return JsonResponse({'code':1,'yjz':nowyjz,'ycz':nowycz}) + else: + return JsonResponse({'code':0}) + elif req.GET.get('a')=='yjycznow': + first_day,first_day_of_next_month=gettime() + year = first_day.year + month = first_day.month + a = Yjyc.objects.get_or_create(usecomp__partid=companyid,year=year,month=month,defaults={'usecomp':Partment.objects.get(partid=companyid) ,'year':year,'month':month})[0] + nowyjz = a.yjz + nowycz = a.ycz + return JsonResponse({'code':1,'yjz':nowyjz,'ycz':nowycz}) + elif req.GET.get('a')=='yhlbt':#隐患类别图 + if req.GET.get('year'): + year = int(req.GET.get('year')) + month = int(req.GET.get('month')) + if req.GET.get('part'): + partid = req.GET.get('part') + else: + partid = companyid + first_day,first_day_of_next_month = gettime(datetime(year,month,1)) + children = [] + a = Trouble.objects.filter(deletemark=1).filter(Q(fxbm=partid) | Q(fxbm__partlink__contains=',' + str(partid) + ',')) + for i in Dickey.objects.filter(dicparent__dicid=16): + y = a.filter(yhlb=i,fxsj__range=(first_day, first_day_of_next_month)).count() + children.append({'name':i.dickeyname,'value':y}) + children2= [] + for i in Dickey.objects.filter(dicparent__dicid=17): + y = a.filter(yhlb=i,fxsj__range=(first_day, first_day_of_next_month)).count() + children2.append({'name':i.dickeyname,'value':y}) + value=[{'name':'现场管理','children':children},{'name':'基础管理','children':children2}] + return JsonResponse({'code':1,'value':value}) + else: + children = [] + a = Trouble.objects.filter(usecomp__partid=companyid,deletemark=1) + if req.GET.get('qssj'): + a = a.filter(fxsj__gte=req.GET.get('qssj')) + if req.GET.get('jssj'): + a = a.filter(fxsj__lte=req.GET.get('jssj')) + if req.GET.get('fxbm'): + parts = Partment.objects.filter(partlink__contains=',' + req.GET.get('fxbm') + ',')|Partment.objects.filter(partid=req.GET.get('fxbm')) + a = a.filter(fxbm__in=parts) + for i in Dickey.objects.filter(dicparent__dicid=16): + y = a.filter(yhlb=i).count() + children.append({'name':i.dickeyname,'value':y}) + children2= [] + for i in Dickey.objects.filter(dicparent__dicid=17): + y = a.filter(yhlb=i).count() + children2.append({'name':i.dickeyname,'value':y}) + value=[{'name':'现场管理','children':children},{'name':'基础管理','children':children2}] + return JsonResponse({'code':1,'value':value}) + elif req.GET.get('a')=='yhpgt': + if req.GET.get('year'): + year = int(req.GET.get('year')) + month = int(req.GET.get('month')) + if req.GET.get('part'): + partid = req.GET.get('part') + else: + partid = companyid + parts = Partment.objects.filter(Q(partid=partid) | Q(partlink__contains=',' + str(partid) + ',')) + a = Trouble.objects.filter(deletemark=1,fxbm__in=parts) + value=[] + key=[] + first_day,first_day_of_next_month = gettime(datetime(year,month,1)) + for i in Dickey.objects.filter(dicparent__dicid=19): + x = i.dickeyname + y = a.filter(yhpg=i,fxsj__range=(first_day, first_day_of_next_month)).count() + key.append(x) + value.append({'value':y,'name':x}) + return JsonResponse({'code':1,'key':key,'value':value}) + else: + a = Trouble.objects.filter(usecomp__partid=companyid,deletemark=1) + if req.GET.get('qssj'): + a = a.filter(fxsj__gte=req.GET.get('qssj')) + if req.GET.get('jssj'): + a = a.filter(fxsj__lte=req.GET.get('jssj')) + if req.GET.get('fxbm'): + parts = Partment.objects.filter(partlink__contains=',' + req.GET.get('fxbm') + ',')|Partment.objects.filter(partid=req.GET.get('fxbm')) + a = a.filter(fxbm__in=parts) + value=[] + key=[] + for i in Dickey.objects.filter(dicparent__dicid=19): + x = i.dickeyname + y = a.filter(yhpg=i).count() + key.append(x) + value.append({'value':y,'name':x}) + return JsonResponse({'code':1,'key':key,'value':value}) + elif req.GET.get('a')=='pxjbt': + year = int(req.GET.get('year')) + month = int(req.GET.get('month')) + if req.GET.get('part'): + partid = req.GET.get('part') + else: + partid = companyid + parts = Partment.objects.filter(Q(partid=partid) | Q(partlink__contains=',' + str(partid) + ',')) + first_day,first_day_of_next_month = gettime(datetime(year,month,1)) + a = Train.objects.filter(deletemark=1,trainpart__in=parts,state=1) + value=[] + key=[] + for i in Dicclass.objects.filter(parentid__dicid=4): + x = i.dicname + y = a.filter(trainlevel=i,starttime__range=(first_day, first_day_of_next_month)).count() + key.append(x) + value.append({'value':y,'name':x}) + return JsonResponse({'code':1,'key':key,'value':value}) + elif req.GET.get('a')=='yllxt':#演练类型饼图 + year = int(req.GET.get('year')) + month = int(req.GET.get('month')) + if req.GET.get('part'): + partid = req.GET.get('part') + else: + partid = companyid + parts = Partment.objects.filter(Q(partid=partid) | Q(partlink__contains=',' + str(partid) + ',')) + first_day,first_day_of_next_month = gettime(datetime(year,month,1)) + a = Drill.objects.filter(drillpart__in=parts,deletemark=1,state=1) + value=[] + key=[] + for i in Dickey.objects.filter(dicparent__dicid=12): + x = i.dickeyname + y = a.filter(drilltype=i,starttime__range=(first_day, first_day_of_next_month)).count() + key.append(x) + value.append({'value':y,'name':x}) + return JsonResponse({'code':1,'key':key,'value':value}) + elif req.GET.get('a')=='yjb':#某月各预警指数表 + year = int(req.GET.get('year')) + month = int(req.GET.get('month')) + a = Yjyc.objects.filter(usecomp__partid=companyid,year=year,month=month) + data = a.values('drillvalue','trainvalue','troublevalue','observevalue','missvalue','yjz')[0] + return JsonResponse({'code':1,'data':[{'name':'预警值','score':data.pop('yjz')},{'name':'事故隐患','score':data.pop('troublevalue')},{'name':'教育培训','score':data.pop('trainvalue')},{'name':'应急演练','score':data.pop('drillvalue')},{'name':'行为观察','score':data.pop('observevalue')},{'name':'未遂事件','score':data.pop('missvalue')}]}) + elif req.GET.get('a')=='yjhbfx':#预警环比分析 + year = int(req.GET.get('year')) + month = int(req.GET.get('month')) + if month-1<1: + bmonth=12 + byear=year-1 + else: + bmonth =month-1 + byear=year + a = Yjyc.objects.filter(usecomp__partid=companyid) + data={} + nmonthyjz = a.filter(year=year,month=month)[0].yjz + bmonthyjz = a.filter(year=byear,month=bmonth)[0].yjz + return JsonResponse({'code':1,'data':[{'month':month,'yjz':nmonthyjz},{'month':bmonth,'yjz':bmonthyjz}]}) + elif req.GET.get('a')=='yhfxbmb':#隐患发现部门分布表 + year = int(req.GET.get('year')) + month = int(req.GET.get('month')) + if req.GET.get('part'): + partid = req.GET.get('part') + else: + partid = companyid + first_day,first_day_of_next_month = gettime(datetime(year,month,1)) + alist=[] + for i in (Partment.objects.filter(Q(partid=partid) | Q(parentid__partid=partid))).order_by('partid'): + objs = Trouble.objects.filter(deletemark=1) + x=(objs.filter(fxbm=i)|objs.filter(fxbm__partlink__contains=','+str(i.partid)+',')).filter(fxsj__range=(first_day, first_day_of_next_month)) + a=x.count() + b=i.partname + c=x.exclude (yhzt=6).count() + alist.append({'partname':b,'yhnum':a,'nonum':c}) + return JsonResponse({'code':1,'data':alist}) + elif req.GET.get('a')=='pxbmb':#培训部门分布表 + year = int(req.GET.get('year')) + month = int(req.GET.get('month')) + first_day,first_day_of_next_month = gettime(datetime(year,month,1)) + alist=[] + if req.GET.get('part'): + partid = req.GET.get('part') + else: + partid = companyid + for i in Partment.objects.filter(Q(partid=partid) | Q(parentid__partid=partid)).order_by('partid'): + x=Train.objects.filter(trainpart=i,state=1,deletemark=1,starttime__range=(first_day, first_day_of_next_month)) + b=i.partname + c=x.count() + d=x.filter(trainlevel__dicid=5).count() + e=x.filter(trainlevel__dicid=6).count() + f=x.filter(trainlevel__dicid=7).count() + g=x.filter(trainlevel__dicid=42).count() + alist.append({'partname':b,'pxnum':c,'gsjnum':d,'cjjnum':e,'bzjnum':f,'fcjnum':g}) + return JsonResponse({'code':1,'data':alist}) + elif req.GET.get('a')=='ylbmb':#演练部门分布表 + year = int(req.GET.get('year')) + month = int(req.GET.get('month')) + if req.GET.get('part'): + partid = req.GET.get('part') + else: + partid = companyid + first_day,first_day_of_next_month = gettime(datetime(year,month,1)) + alist=[] + for i in Partment.objects.filter(Q(partid=partid) | Q(parentid__partid=partid)).order_by('partid'): + x=Drill.objects.filter(drillpart=i,state=1,deletemark=1,starttime__range=(first_day, first_day_of_next_month)) + b=i.partname + c=x.count() + d=x.filter(drilllevel__dicid=20).count() + e=x.filter(drilllevel__dicid=21).count() + f=x.filter(drilllevel__dicid=22).count() + alist.append({'partname':b,'ylnum':c,'gsjnum':d,'cjjnum':e,'bzjnum':f}) + return JsonResponse({'code':1,'data':alist}) + elif req.GET.get('a')=='yhqst':#隐患趋势图 + x_s = Yjyc.objects.filter(usecomp__partid=companyid).order_by('buildtime') + objs = Trouble.objects.filter(deletemark=1,usecomp__partid=companyid) + if req.GET.get('fxbm'): + parts = Partment.objects.filter(partlink__contains=',' + req.GET.get('fxbm') + ',')|Partment.objects.filter(partid=req.GET.get('fxbm')) + objs = objs.filter(fxbm__in=parts) + data = {} + data['现场管理类']=[] + data['基础管理类']=[] + data['全部'] = [] + data['时间轴']= [] + for i in x_s: + first_day,first_day_of_next_month = gettime(datetime(i.year,i.month,1)) + totalobj = objs.filter(fxsj__range=(first_day,first_day_of_next_month)) + num = totalobj.count() + xcglnum = totalobj.filter(yhlx__dicid=16).count() + jcglnum = totalobj.filter(yhlx__dicid=17).count() + data['全部'].append(num) + data['现场管理类'].append(xcglnum) + data['基础管理类'].append(jcglnum) + data['时间轴'].append(str(i.year)+'-'+str(i.month)) + return JsonResponse(data,safe=False) + elif req.GET.get('a')=='gzbqst':#各指标趋势图 + x_s = Yjyc.objects.filter(usecomp__partid=companyid).order_by('buildtime') + yhobjs = Trouble.objects.filter(deletemark=1,usecomp__partid=companyid) + pxobjs = Train.objects.filter(deletemark=1,usecomp__partid=companyid) + ylobjs = Drill.objects.filter(deletemark=1,usecomp__partid=companyid) + gcobjs = Observe.objects.filter(deletemark=1,usecomp__partid=companyid) + wsobjs = Miss.objects.filter(deletemark=1,usecomp__partid=companyid) + data = {} + data['隐患']=[] + data['培训']=[] + data['演练'] = [] + data['观察'] = [] + data['事件'] = [] + data['时间轴']= [] + for i in x_s: + first_day,first_day_of_next_month = gettime(datetime(i.year,i.month,1)) + yhnum = yhobjs.filter(fxsj__range=(first_day,first_day_of_next_month)).count() + pxnum = pxobjs.filter(starttime__range=(first_day,first_day_of_next_month)).count() + ylnum = ylobjs.filter(starttime__range=(first_day,first_day_of_next_month)).count() + gcnum = gcobjs.filter(looktime__range=(first_day,first_day_of_next_month)).count() + wsnum = wsobjs.filter(misstime__range=(first_day,first_day_of_next_month)).count() + data['隐患'].append(yhnum) + data['培训'].append(pxnum) + data['演练'].append(ylnum) + data['观察'].append(gcnum) + data['事件'].append(wsnum) + data['时间轴'].append(str(i.year)+'-'+str(i.month)) + return JsonResponse(data,safe=False) + elif req.GET.get('a')=='yhztt':#隐患状态图 + objs = Trouble.objects.filter(deletemark=1,usecomp__partid=companyid) + if req.GET.get('qssj'): + objs = objs.filter(fxsj__gte=req.GET.get('qssj')) + if req.GET.get('jssj'): + objs = objs.filter(fxsj__lte=req.GET.get('jssj')) + if req.GET.get('fxbm'): + parts = Partment.objects.filter(partlink__contains=',' + req.GET.get('fxbm') + ',')|Partment.objects.filter(partid=req.GET.get('fxbm')) + objs = objs.filter(fxbm__in=parts) + ztdict = {'待新增':0,'待评估':1,'措施待提交':7,'措施待确认':2,'待整改':3,'待审核':4,'待复查':5} + ztnumli = [] + for key in ztdict: + objnum = objs.filter(yhzt=ztdict[key]).count() + objdict = {'value':objnum,'name':key} + ztnumli.append(objdict) + return JsonResponse(ztnumli,safe=False) + elif req.GET.get('a')=='gcbmb':#观察部门分布表 + year = int(req.GET.get('year')) + month = int(req.GET.get('month')) + first_day,first_day_of_next_month = gettime(datetime(year,month,1)) + a = Observe.objects.filter(deletemark=1,looktime__range=(first_day, first_day_of_next_month)) + alist=[] + if req.GET.get('part'): + partid = req.GET.get('part') + else: + partid = companyid + for i in Partment.objects.filter(Q(partid=partid) | Q(parentid__partid=partid)).order_by('partid'): + y=0 + for m in Partment.objects.filter(partlink__contains=','+str(i.partid)+',')|Partment.objects.filter(partid=i.partid): + y = y + a.filter(lookpart=m).count() + b=i.partname + c=y + alist.append({'partname':b,'gcnum':c}) + return JsonResponse({'code':1,'data':alist}) + elif req.GET.get('a')=='wsbmb':#未遂部门分布表 + year = int(req.GET.get('year')) + month = int(req.GET.get('month')) + first_day,first_day_of_next_month = gettime(datetime(year,month,1)) + a = Miss.objects.filter(deletemark=1,misstime__range=(first_day, first_day_of_next_month)) + alist=[] + if req.GET.get('part'): + partid = req.GET.get('part') + else: + partid = companyid + for i in Partment.objects.filter(Q(partid=partid) | Q(parentid__partid=partid)).order_by('partid'): + y=0 + for m in Partment.objects.filter(partlink__contains=','+str(i.partid)+',')|Partment.objects.filter(partid=i.partid): + y = y + a.filter(misspart=m).count() + b=i.partname + c=y + alist.append({'partname':b,'wsnum':c}) + return JsonResponse({'code':1,'data':alist}) + elif req.GET.get('a')=='gclxt':#观察类型饼图 + year = int(req.GET.get('year')) + month = int(req.GET.get('month')) + first_day,first_day_of_next_month = gettime(datetime(year,month,1)) + if req.GET.get('part'): + partid = req.GET.get('part') + else: + partid = companyid + parts = Partment.objects.filter(Q(partid=partid) | Q(partlink__contains=',' + str(partid) + ',')) + a = Observe.objects.filter(lookpart__in=parts,deletemark=1,looktime__range=(first_day, first_day_of_next_month)) + value=[] + key=[] + for i in Dicclass.objects.filter(parentid__dicid=23): + x = i.dicname + y = Unsafes.objects.filter(observe__in=a,unsafedicclass=i).count() + key.append(x) + value.append({'value':y,'name':x}) + return JsonResponse({'code':1,'key':key,'value':value}) + +def apiriskas(req): + userid = req.session['userid'] + companyid = getcompany(userid) + if req.GET.get('a') == 'fxdlxt':#风险点类型图 + objs = RiskAct.objects.filter(usecomp__partid=companyid) + if req.GET.get('zrbm',None): + partid = req.GET.get('zrbm') + objs = objs.filter(zrbm__partid=partid) + legendData = [] + seriesData = [] + for i in Dickey.objects.filter(dicparent__dicid=53): + legendData.append(i.dickeyname) + seriesData.append({'value':objs.filter(type=i).count(),'name':i.dickeyname}) + return JsonResponse({'code':1,'legendData':legendData,'seriesData':seriesData}) + elif req.GET.get('a') == 'fxdjbt':#风险点级别图 + objs = RiskAct.objects.filter(usecomp__partid=companyid) + if req.GET.get('zrbm',None): + partid = req.GET.get('zrbm') + objs = objs.filter(zrbm__partid=partid) + legendData = ['低风险','一般风险','较大风险','重大风险'] + seriesData = [] + for i in legendData: + seriesData.append({'value':objs.filter(level=i).count(),'name':i}) + return JsonResponse({'code':1,'legendData':legendData,'seriesData':seriesData}) + elif req.GET.get('a') == 'fxjbt':#风险级别图 + objs = Risk.objects.filter(usecomp__partid=companyid) + if req.GET.get('zrbm',None): + partid = req.GET.get('zrbm') + objs = objs.filter(riskact__zrbm__partid=partid) + legendData = ['低风险','一般风险','较大风险','重大风险'] + seriesData = [] + for i in legendData: + seriesData.append({'value':objs.filter(level=i).count(),'name':i}) + return JsonResponse({'code':1,'legendData':legendData,'seriesData':seriesData}) + elif req.GET.get('a') == 'fxdqyt':#风险点区域图 + objs = RiskAct.objects.filter(usecomp__partid=companyid) + objs2 = Risk.objects.filter(usecomp__partid=companyid) + if req.GET.get('zrbm',None): + partid = req.GET.get('zrbm') + objs = objs.filter(zrbm__partid=partid) + objs2 = objs2.filter(riskact__zrbm__partid=partid) + xAxisData = [] + series = [] + #areas = Area.objects.filter(usecomp__partid=companyid,deletemark=1) + #riskactareas = Area.objects.filter(usecomp__partid=companyid,deletemark=1).annotate(num=Count('riskactarea')).filter(num__gt=0).order_by('-num') + riskactareas = objs.values('area').annotate(num=Count('area')).order_by('-num') + for i in riskactareas: + xAxisData.append(Area.objects.get(id=i['area']).name) + data = {} + data['datariskact']=[] # 风险点总数 + data['datariskact1']=[] # 低风险点数 + data['datariskact2']=[] # 一般风险点数 + data['datariskact3']=[] # 较大风险点数 + data['datariskact4']=[] # 重大风险点数 + data['datarisk']=[] # 风险总数 + data['datarisk1']=[] # 低风险数 + data['datarisk2']=[] # 一般风险数 + data['datarisk3']=[] # 较大风险数 + data['datarisk4']=[] # 重大风险数 + for i in riskactareas: + objsxx = objs.filter(area__id=i['area']) + data['datariskact'].append(objsxx.count()) + data['datariskact1'].append(objsxx.filter(level="低风险").count()) + data['datariskact2'].append(objsxx.filter(level="一般风险").count()) + data['datariskact3'].append(objsxx.filter(level="较大风险").count()) + data['datariskact4'].append(objsxx.filter(level="重大风险").count()) + objsxx2 = objs2.filter(riskact__area__id=i['area']) + data['datarisk'].append(objsxx2.count()) + data['datarisk1'].append(objsxx2.filter(level="低风险").count()) + data['datarisk2'].append(objsxx2.filter(level="一般风险").count()) + data['datarisk3'].append(objsxx2.filter(level="较大风险").count()) + data['datarisk4'].append(objsxx2.filter(level="重大风险").count()) + return JsonResponse({'code':1,'xAxisData':xAxisData,'seriesData':data}) +def fxhandle(req): + a = req.GET.get('a') + if a == 'exportyjdoc': + userid = req.session['userid'] + companyid = getcompany(userid) + vl = json.loads(req.body.decode()) + vl['companyname']=Partment.objects.get(partid=companyid).partname + v = exportyjdoc(vl) + return JsonResponse({"code":1,'downloadurl':v}) + elif a == 'yhfxpm': + userid = req.session['userid'] + companyid = getcompany(userid) + partsall = Partment.objects.filter(partlink__contains=',' + companyid + ',')|Partment.objects.filter(partid=companyid) + objs = Trouble.objects.filter(fxr__ubelongpart__partid__in=partsall,deletemark=1) + # userall = User.objects.filter(ubelongpart__in=partsall,deletemark=1) + # objs=[] + # for i in userall: + # yhnum = Trouble.objects.filter(fxr=i) + if req.GET.get('qssj'): + objs = objs.filter(fxsj__gte=req.GET.get('qssj')) + if req.GET.get('jssj'): + objs = objs.filter(fxsj__lte=req.GET.get('jssj')) + if req.GET.get('jclx'): + objs = objs.filter(jclx = Dickey.objects.filter(dickeyid=req.GET.get('jclx'))) + # yhnum = yhnum.count() + # objs.append({'fxr__userid':i.userid,'fxr__name':i.name,'fxbm__partname':i.ubelongpart.partname,'number':yhnum}) + # objs.sort(key=takeSecond,reverse=True) + if req.GET.get('fxbm'): + fxbm = req.GET.get('fxbm') + parts = Partment.objects.filter(partlink__contains=',' + fxbm + ',')|Partment.objects.filter(partid=fxbm) + objs = objs.filter(fxbm__in=parts) + # objs=[] + # for i in userlist: + # yhnum = Trouble.objects.filter(fxr=i) + # if req.GET.get('qssj'): + # yhnum = yhnum.filter(fxsj__gte=req.GET.get('qssj')) + # if req.GET.get('jssj'): + # yhnum = yhnum.filter(fxsj__lte=req.GET.get('jssj')) + # yhnum = yhnum.count() + # objs.append({'fxr__userid':i.userid,'fxr__name':i.name,'fxbm__partname':i.ubelongpart.partname,'number':yhnum}) + # objs.sort(key=takeSecond,reverse=True) + # objs = objs.values('fxr__userid','fxr__name','fxbm__partname').annotate(number = Count('fxr')).order_by('-number') + total = objs.count() + objs = objs.values('fxr__userid','fxr__name','fxbm__partname').annotate(number = Count('fxr')).order_by('-number') + return HttpResponse(transjson(total,objs),content_type="application/json") + elif a == 'yhzgpm': + userid = req.session['userid'] + companyid = getcompany(userid) + objs = Trouble.objects.filter(usecomp__partid=companyid,deletemark=1) + if req.GET.get('zgr'): + objs = objs.filter(zgr__name__contains=req.GET.get('zgr')) + if req.GET.get('qssj'): + objs = objs.filter(fxsj__gte=req.GET.get('qssj')) + if req.GET.get('jssj'): + objs = objs.filter(fxsj__lte=req.GET.get('jssj')) + objs = objs.values('zgr__userid','zgr__name','zgbm__partname').annotate(number = Count('zgr')).order_by('-number') + total = objs.count() + return HttpResponse(transjson(total,objs),content_type="application/json") + # elif a == 'exportexcel': + # datalist = req.POST.get('data') + # downloadurl = exportsimplexlsx(datalist) + # return JsonResponse({'code':1,'downloadurl':downloadurl}) + +def takeSecond(elem): + return elem['number'] + +def userhandle(req): + if req.GET.get('a')=='adduserh': + return render(req,'abuser.html') + elif req.GET.get('a')=='edituserh': + return render(req,'abuser.html') + elif req.GET.get('a')=='del': + a = req.GET.get('userid') + userid = req.session['userid'] + if User.objects.get(userid=userid).issuper == 1: + if User.objects.get(userid=a).issuper == 1: + return JsonResponse({"code":0}) + else: + User.objects.filter(userid=a).update(deletemark=0) + return JsonResponse({"code":1}) + else: + return JsonResponse({"code":0}) + elif req.GET.get('a')=='add': + if req.POST.get('userid')!='': + a=User.objects.filter(userid = req.POST.get('userid')) + newname = req.POST.get('username') + if User.objects.filter(username = newname).exclude(username=a[0].username).count() == 0: + name = req.POST.get('name') + empid = req.POST.get('empid') + ubelongpart=Partment.objects.get(partid=req.POST.get('ubelongpart')) + # if req.POST.getlist('group',None): + # a[0].userg.add(*req.POST.getlist('group')) + a.update(name=name,empid=empid,ubelongpart=ubelongpart,username=newname) + return JsonResponse({"code":1}) + else: + return JsonResponse({"code":0}) + else: + newname=req.POST.get('username') + if User.objects.filter(username = newname).count() == 0: + a = User() + a.name = req.POST.get('name') + a.empid = req.POST.get('empid') + a.username=req.POST.get('username') + a.password=req.POST.get('password') + a.epassword = make_password(req.POST.get('password')) + a.ubelongpart=Partment.objects.get(partid=req.POST.get('ubelongpart')) + a.save() + companyid = getcompany(a.userid) + a.usecomp = Partment.objects.get(partid=companyid) + a.save() + # if req.POST.getlist('group',None): + # #a.userg.add(*req.POST.getlist('group')) + # objs = Group.objects.filter(groupid__in=req.POST.getlist('group')) + # for i in objs: + # if i.grouptype == 1: + + # i.users.add(a) + Group.objects.get(usecomp__partid=companyid,grouptype=3).users.add(a) + return JsonResponse({"code":1}) + else: + return JsonResponse({"code":0}) + +def getuser(req): + userid = req.session['userid'] + if req.GET.get('partid'): + partid = req.GET.get('partid') + parts=Partment.objects.filter(partlink__contains=','+partid+',')|Partment.objects.filter(partid=partid) + if req.GET.get('a')=='datagrid': + a = User.objects.filter(ubelongpart__in=parts,deletemark=1).exclude(issuper=1) + total = a.count() + if req.GET.get('page',None): + startnum,endnum = fenye(req) + a = a[startnum:endnum] + a = a.values('userid','empid','name','ubelongpart__partname','ubelongpart__partid','username','openid') + return HttpResponse(transjson(total,a),content_type="application/json") + else: + a = User.objects.filter(ubelongpart__in=parts,deletemark=1).exclude(issuper=1).values('userid','name') + keystr=transstr(a,'userid','name') + return HttpResponse(keystr,content_type="application/json") + elif req.GET.get('groupid'): + groupid=req.GET.get('groupid') + a = Group.objects.get(groupid=groupid).users.filter(deletemark=1).all().values('userid','empid','name','ubelongpart__partname','ubelongpart__partid','username') + total=a.count() + return HttpResponse(transjson(total,a),content_type="application/json") + elif req.GET.get('userid'): + a = User.objects.filter(userid=req.GET.get('userid')).values('userid','empid','name','ubelongpart__partid','username','openid','headimgurl','nickname') + b=list(a)[0] + return HttpResponse(json.dumps(b,cls=MyEncoder),content_type="application/json") + elif req.GET.get('name'): + if req.GET.get('a')=='datagrid': + companyid=getcompany(userid) + parts=Partment.objects.filter(partlink__contains=','+companyid+',')|Partment.objects.filter(partid=companyid) + a=User.objects.filter(ubelongpart__in = parts,deletemark=1,name__contains= req.GET.get('name')).order_by('userid').values('userid','empid','name','ubelongpart__partname','ubelongpart__partid','username','openid') + total = a.count() + return HttpResponse(transjson(total,a),content_type="application/json") + else: + companyid=getcompany(userid) + parts=Partment.objects.filter(partlink__contains=','+companyid+',')|Partment.objects.filter(partid=companyid) + if req.GET.get('a')=='combobox': + a = User.objects.filter(ubelongpart__in=parts,deletemark=1).exclude(issuper=1).values('userid','name') + keystr=transstr(a,'userid','name') + return HttpResponse(keystr,content_type="application/json") + else: + a=User.objects.filter(ubelongpart__in = parts,deletemark=1).exclude(issuper=1) + total = a.count() + startnum,endnum = fenye(req) + a = a.order_by('userid')[startnum:endnum].values('userid','empid','name','ubelongpart__partname','ubelongpart__partid','username','openid') + return HttpResponse(transjson(total,a),content_type="application/json") + + +def parthandle(req): + if req.GET.get('a')=="addparth": + return render(req,'abpart.html') + elif req.GET.get('a')=='editparth': + return render(req,'abpart.html') + elif req.GET.get('a')=='detail': + a = Partment.objects.filter(partid=req.GET.get('partid')).values('partid','partname','parentid','iscompany') + b = list(a)[0] + return HttpResponse(json.dumps(b,cls=MyEncoder),content_type="application/json") + elif req.GET.get('a')=='del': + a = req.POST.get('partid') + if Partment.objects.filter(partlink__contains=','+a+',').exists() or User.objects.filter(ubelongpart=a).exists(): + return JsonResponse({"code":0}) + else: + Partment.objects.get(partid=a).delete() + return JsonResponse({"code":1}) + elif req.GET.get('a')=='addpart': + if req.POST.get('partid') != '': + partid = req.POST.get('partid') + partname = req.POST.get('partname') + parentid = req.POST.get('parentid') + partobj = Partment.objects.get(partid=partid) + oldpartlink = partobj.partlink + partid +',' + partlink = Partment.objects.get(partid=parentid).partlink + parentid +',' + Partment.objects.filter(partid=partid).update(partname= partname,parentid=parentid,partlink=partlink) + Partment.objects.filter(partlink__contains=oldpartlink).update(partlink= partlink + partid +',') + return JsonResponse({"code":1}) + else: + try: + a=Partment() + a.parentid = Partment.objects.get(partid=req.POST.get('parentid')) + a.partname = req.POST.get('partname') + a.partlink = Partment.objects.get(partid=req.POST.get('parentid')).partlink + str(req.POST.get('parentid')) + ',' + a.save() + return JsonResponse({"code":1}) + except: + return JsonResponse({"code":0}) + elif req.GET.get('a')=='tree': + userid = req.session['userid'] + companyid = getcompany(userid) + list_items = (Partment.objects.filter(partlink__contains=','+companyid+',')|Partment.objects.filter(partid=companyid)).annotate(id=F('partid'),parentId=F('parentid'),name=F('partname')).values('id','parentId','name') + return HttpResponse(json.dumps(list(list_items)),content_type="application/json") + elif req.GET.get('a')=='tree2': + userid = req.session['userid'] + companyid = getcompany(userid) + list_items = (Partment.objects.filter(partlink__contains=','+companyid+',')).annotate(id=F('partid'),parentId=F('parentid'),name=F('partname')).values('id','parentId','name','iscompany') + return HttpResponse(json.dumps(list(list_items)),content_type="application/json") + elif req.GET.get('a')=='tree3':#能够指派的部门,包括自己所在的部门 + userid = req.session['userid'] + parts = Partment.objects.filter(Q(aqy__contains = ','+str(userid)+',')|Q(bmzg__contains = ','+str(userid)+',')|Q(bsq__contains = ','+str(userid)+',')) + for i in parts: + parts = parts|Partment.objects.filter(partlink__contains=','+str(i.partid)+',') + parts = parts|Partment.objects.filter(partid=User.objects.get(userid=userid).ubelongpart.partid) + list_items = parts.annotate(id=F('partid'),parentId=F('parentid'),name=F('partname')).values('id','parentId','name','iscompany') + return HttpResponse(json.dumps(list(list_items)),content_type="application/json") + elif req.GET.get('a')=='getzgdatagrid': + partid = req.GET.get('partid') + zgstr = Partment.objects.get(partid=partid).bmzg + if zgstr ==',': + return HttpResponse(json.dumps([]),content_type="application/json") + else: + zglist = zgstr.split(',') + zglist = list(filter(None, zglist)) + orderlist = [] + for i in zglist: + orderlist.extend(list(User.objects.filter(userid=i).values('userid','name'))) + return HttpResponse(json.dumps(orderlist),content_type="application/json") + elif req.GET.get('a')=='getaqydatagrid': + partid = req.GET.get('partid') + aqystr = Partment.objects.get(partid=partid).aqy + if aqystr ==',': + return HttpResponse(json.dumps([]),content_type="application/json") + else: + aqylist = aqystr.split(',') + aqylist = list(filter(None, aqylist)) + orderlist = [] + for i in aqylist: + orderlist.extend(list(User.objects.filter(userid=i).values('userid','name'))) + return HttpResponse(json.dumps(orderlist),content_type="application/json") + elif req.GET.get('a')=='getbsqdatagrid': + partid = req.GET.get('partid') + bsqstr = Partment.objects.get(partid=partid).bsq + if bsqstr ==',': + return HttpResponse(json.dumps([]),content_type="application/json") + else: + bsqlist = bsqstr.split(',') + bsqlist = list(filter(None, bsqlist)) + items = User.objects.filter(userid__in=bsqlist).values('userid','name') + return HttpResponse(json.dumps(list(items)),content_type="application/json") + elif req.GET.get('a')=='addzg': + partid = req.GET.get('partid') + users = req.POST.get('users') + try: + userlist = users.split(',') + obj = Partment.objects.get(partid=partid) + zgstr = obj.bmzg + zglist = zgstr.split(',') + zglist = list(filter(None, zglist)) + zglist.extend(userlist) + addo = list(set(zglist)) + addo.sort(key = zglist.index) + zgstr = ','+','.join(addo)+',' + obj.bmzg=zgstr + obj.save() + a = Group.objects.get(grouptype=2,usecomp=Partment.objects.get(partid=getcompany(req.session['userid']))) + for i in userlist: + if User.objects.get(userid=int(i)) not in a.users.all(): + a.users.add(User.objects.get(userid=int(i))) + except: + pass + return JsonResponse({"code":1}) + elif req.GET.get('a')=='addaqy': + partid = req.GET.get('partid') + users = req.POST.get('users') + try: + userlist = users.split(',') + obj = Partment.objects.get(partid=partid) + aqystr = obj.aqy + aqylist = aqystr.split(',') + aqylist = list(filter(None, aqylist)) + aqylist.extend(userlist) + addo = list(set(aqylist)) + addo.sort(key = aqylist.index) + aqystr = ','+','.join(addo)+',' + obj.aqy=aqystr + obj.save() + a = Group.objects.get(grouptype=1,usecomp=Partment.objects.get(partid=getcompany(req.session['userid']))) + for i in userlist: + if User.objects.get(userid=int(i)) not in a.users.all(): + a.users.add(User.objects.get(userid=int(i))) + except: + pass + return JsonResponse({"code":1}) + elif req.GET.get('a')=='addbsq': + partid = req.GET.get('partid') + users = req.POST.get('users') + try: + userlist = users.split(',') + obj = Partment.objects.get(partid=partid) + bsqstr = obj.bsq + bsqlist = bsqstr.split(',') + bsqlist = list(filter(None, bsqlist)) + bsqlist.extend(userlist) + addo = list(set(bsqlist)) + addo.sort(key = bsqlist.index) + bsqstr = ','+','.join(bsqlist)+',' + obj.bsq=bsqstr + obj.save() + except: + pass + return JsonResponse({"code":1}) + elif req.GET.get('a') == 'removezg': + partid = req.GET.get('partid') + userid = req.GET.get('userid') + obj= Partment.objects.get(partid=partid) + zgstr = obj.bmzg + zgstr = zgstr.replace(','+userid+',',',') + obj.bmzg = zgstr + obj.save() + a = Group.objects.get(grouptype=2,usecomp=Partment.objects.get(partid=getcompany(req.session['userid']))) + a.users.remove(User.objects.get(userid=userid)) + return JsonResponse({"code":1}) + elif req.GET.get('a') == 'removeaqy': + partid = req.GET.get('partid') + userid = req.GET.get('userid') + obj= Partment.objects.get(partid=partid) + aqystr = obj.aqy + aqystr = aqystr.replace(','+userid+',',',') + obj.aqy = aqystr + obj.save() + a = Group.objects.get(grouptype=1,usecomp=Partment.objects.get(partid=getcompany(req.session['userid']))) + a.users.remove(User.objects.get(userid=userid)) + return JsonResponse({"code":1}) + elif req.GET.get('a') == 'removebsq': + partid = req.GET.get('partid') + userid = req.GET.get('userid') + obj= Partment.objects.get(partid=partid) + bsqstr = obj.bsq + bsqstr = bsqstr.replace(','+userid+',',',') + obj.bsq = bsqstr + obj.save() + return JsonResponse({"code":1}) + +def dicthandle(req): + if req.GET.get('a')=='adddicth': + return render(req,'abdict.html') + elif req.GET.get('a')=='deldict': + userid = req.session['userid'] + dickeyid = req.GET.get('dickeyid') + a = Dickey.objects.get(dickeyid=dickeyid) + if userid == 8: + a.deletemark=0 + a.save() + return JsonResponse({"code":1}) + elif User.objects.get(userid=userid).issuper == 1: + companyid = getcompany(userid) + nl = a.nousecomps.split(',') + nl.append(companyid) + nl = ','+','.join(list(filter(None, nl)))+',' + a.nousecomps = nl + a.save() + return JsonResponse({"code":1}) + else: + return JsonResponse({"code":0}) + elif req.GET.get('a')=='editdicth': + return render(req,'abdict.html') + elif req.GET.get('a')=='canedit': + userid = req.session['userid'] + companyid = getcompany(userid) + dickeyid = req.GET.get('dickeyid') + a = Dickey.objects.get(dickeyid=dickeyid) + if userid == 8: + return JsonResponse({"code":1}) + elif a.usecomps == ','+str(companyid)+',' and a.nousecomps == '' and User.objects.get(userid=userid).issuper==1: + return JsonResponse({"code":1}) + else: + return JsonResponse({"code":0}) + elif req.method == 'POST': + userid = req.session['userid'] + companyid = getcompany(userid) + data = json.loads(req.body.decode('utf-8')) + dickeyid = data['dickeyid'] + dickeyname=data['dickeyname'] + dicparent=data['dicparent'] + detail = data['detail'] + if dickeyid != '': + a = Dickey.objects.get(dickeyid=dickeyid) + if ',1,' in a.usecomps and companyid != '1': + return JsonResponse({"code":0}) + else: + a.dickeyname = dickeyname + a.dicparent = Dicclass.objects.get(dicid=dicparent) + a.detail = detail + a.save() + return JsonResponse({"code":1}) + else: + Dickey.objects.create(dickeyname=dickeyname,dicparent=Dicclass.objects.get(dicid=dicparent),usecomps=','+companyid+',',detail=detail) + return JsonResponse({"code":1}) + + +def pxhandle(req): + if req.GET.get('a')=='listsearch': + userid = req.session['userid'] + companyid = getcompany(userid) + a = Train.objects.filter(usecomp=Partment.objects.get(partid=companyid)).exclude(deletemark=0) + qssj = req.GET.get('qssj') + jssj = req.GET.get('jssj') + pxbm= req.GET.get('trainpart') + pxjb = req.GET.get('trainlevel') + pxnr = req.GET.get('traincontent') + if pxjb: + a = a.filter(trainlevel__dicid=pxjb) + if pxnr: + a = a.filter(traincontent__dickeyid=yhlb) + if pxbm: + a = a.filter(trainpart__partid=pxbm) + if qssj: + a = a.filter(starttime__gte=qssj) + if jssj: + a = a.filter(starttime__lte=jssj) + total=a.count() + startnum,endnum=fenye(req) + obj=a.order_by('-starttime')[startnum:endnum].values('trainnum','trainid','state','trainplace','starttime','trainname','traintype__dickeyname','teacher','lecturer__name','submituser__name','submituser__userid') + return HttpResponse(transjson(total,obj),content_type="application/json") + elif req.GET.get('a')=='detailhtml': + trainid = req.GET.get('trainid') + return render(req,'traindetail.html',{'trainid':trainid}) + elif req.GET.get('a')=='listall': + userid = req.session['userid'] + companyid = getcompany(userid) + a=Train.objects.filter(usecomp=Partment.objects.get(partid=companyid),deletemark=1).order_by('-modifytime') + total=a.count() + startnum,endnum=fenye(req) + a=a[startnum:endnum].values('trainnum','trainid','state','trainplace','starttime','trainname','traintype__dickeyname','teacher','lecturer__name','submituser__name','submituser__userid') + return HttpResponse(transjson(total,a),content_type="application/json") + elif req.GET.get('a')=='listtodo': + userid = req.session['userid'] + companyid = getcompany(userid) + a=Train.objects.filter(usecomp=Partment.objects.get(partid=companyid),deletemark=1,state=0,submituser__userid=userid).order_by('-modifytime') + total=a.count() + startnum,endnum=fenye(req) + a=a[startnum:endnum].values('trainnum','trainid','state','trainplace','starttime','trainname','traintype__dickeyname','teacher','lecturer__name','submituser__name','submituser__userid') + return HttpResponse(transjson(total,a),content_type="application/json") + elif req.GET.get('a')=='listcj': + userid = req.session['userid'] + companyid = getcompany(userid) + a = Trainuser.objects.filter(participant=User.objects.get(userid=userid),train__deletemark=1).order_by('-train__modifytime') + total = a.count() + startnum,endnum = fenye(req) + a = a[startnum:endnum].values('train__trainnum','train__trainid','train__state','train__trainplace','train__starttime','train__trainname','checked','train__teacher','train__lecturer__name') + return HttpResponse(transjson(total,a),content_type="application/json") + elif req.GET.get('a')=='dqdnum': + userid = req.session['userid'] + companyid = getcompany(userid) + dqdnum = Trainuser.objects.filter(participant=User.objects.get(userid=userid),checked=0,train__deletemark=1).count() + return JsonResponse({'code':1,'dqdnum':dqdnum}) + elif req.GET.get('a')=='detail': + trainid = req.GET.get('trainid') + a = Train.objects.filter(trainid=trainid) + x = a.values('trainid','trainnum','state','trainplace','starttime','trainname','traintype__dickeyname','teacher','lecturer__name','submituser__name','submittime','trainlevel__dicname','traincontent__dickeyname','manlevel__dickeyname','detailcontent','participantnum','knownum','duration','material','checkqr','examtest__num','examtest__name')[0] + for key in x: + if x[key] == None: + x[key] = '' + x['material'] = x['material'].split('?') + #对many字段单独处理 + str1=[] + for i in a.values('trainpart__partname'): + str1.append(i['trainpart__partname']) + x['trainpart']=','.join(str1) + str2=[] + objs = Trainuser.objects.filter(train=a[0]) + detailobjs = objs.order_by('checked').values('participant__name','participant__ubelongpart__partname','checked','qdsj','isnew') + for i in objs.filter(checked=1): + str2.append(i.participant.name) + x['participantname'] = ','.join(str2) + x['participantnum'] = objs.filter(checked=1).count() + x['cjrydetail'] = list(detailobjs) + return HttpResponse(json.dumps(x,cls=MyEncoder),content_type="application/json") + elif req.GET.get('a') == 'check': + userid = req.session['userid'] + trainid = req.GET.get('trainid') + obj = Trainuser.objects.filter(train=Train.objects.get(trainid=trainid),participant=User.objects.get(userid=userid)) + if obj.exists(): + obj.update(checked=1,qdsj=datetime.now()) + else: + Trainuser.objects.create(train=Train.objects.get(trainid=trainid),participant=User.objects.get(userid=userid),checked=1,qdsj=datetime.now(),isnew=1) + return JsonResponse({"code":1}) + elif req.GET.get('a')=='exportword': + trainid = req.GET.get('trainid') + v = exportdoc('px',trainid) + return JsonResponse({"code":1,'downloadurl':v}) + elif req.GET.get('a')=='exportexcel': + #pxids=json.loads(req.body.decode())['pxids'] + userid = req.session['userid'] + companyid = getcompany(userid) + a = Train.objects.filter(usecomp=Partment.objects.get(partid=companyid)).exclude(deletemark=0) + qssj = req.GET.get('qssj') + jssj = req.GET.get('jssj') + pxbm= req.GET.get('trainpart') + pxjb = req.GET.get('trainlevel') + pxnr = req.GET.get('traincontent') + if pxjb: + a = a.filter(trainlevel__dicid=pxjb) + if pxnr: + a = a.filter(traincontent__dickeyid=yhlb) + if pxbm: + a = a.filter(trainpart__partid=pxbm) + if qssj: + a = a.filter(starttime__gte=qssj) + if jssj: + a = a.filter(starttime__lte=jssj) + v = exportxlsx('px',a) + return JsonResponse({"code":1,'downloadurl':v}) + elif req.GET.get('a')=='del': + trainid=req.GET.get('trainid') + userid = req.session['userid'] + a = Train.objects.get(trainid=trainid) + if User.objects.get(userid = userid).issuper == 1: + a.deletemark=0 + a.save() + return JsonResponse({"code":1}) + elif a.submituser.userid == userid and a.state==0: + a.deletemark=0 + a.save() + return JsonResponse({"code":1}) + else: + return JsonResponse({"code":0}) + +def ylhandle(req): + if req.GET.get('a')=='listall': + userid = req.session['userid'] + companyid = getcompany(userid) + startnum,endnum=fenye(req) + a=Drill.objects.filter(usecomp=Partment.objects.get(partid=companyid),deletemark=1).order_by('-starttime') + total = a.count() + startnum,endnum=fenye(req) + a=a[startnum:endnum].values('drillnum','drillid','state','drillplace','starttime','drillname','drilltype__dickeyname','chief__name','submituser__name','submituser__userid') + return HttpResponse(transjson(total,a),content_type="application/json") + elif req.GET.get('a')=='listtodo': + userid = req.session['userid'] + companyid = getcompany(userid) + a=Drill.objects.filter(usecomp=Partment.objects.get(partid=companyid),deletemark=1,submituser__userid=userid,state=0).order_by('-starttime') + total = a.count() + startnum,endnum=fenye(req) + a=a[startnum:endnum].values('drillnum','drillid','state','drillplace','starttime','drillname','drilltype__dickeyname','chief__name','submituser__name','submituser__userid') + total=a.count() + return HttpResponse(transjson(total,a),content_type="application/json") + elif req.GET.get('a')=='detailhtml': + drillid=req.GET.get('drillid') + return render(req,'drilldetail.html',{'drillid':drillid}) + elif req.GET.get('a')=='detail': + drillid=req.GET.get('drillid') + a = Drill.objects.filter(drillid=drillid) + x = a.values('drillid','drillnum','state','drillplace','starttime','drilllevel__dicname','drillname','drilltype__dickeyname','chief__name','submituser__name','submittime','drillcontent__dickeyname','detailcontent','participantnum','knownum','material')[0] + for key in x: + if x[key] == None: + x[key] = '' + x['material'] = x['material'].split('?') + #对many字段单独处理 + str1=[] + for i in a.values('drillpart__partname'): + str1.append(i['drillpart__partname']) + x['drillpart']=','.join(str1) + str2=[] + for i in a.values('participant__name'): + str2.append(i['participant__name']) + x['participantname']=','.join(str2) + return JsonResponse(x) + elif req.GET.get('a')=='exportword': + drillid = req.GET.get('drillid') + v = exportdoc('yl',drillid) + return JsonResponse({"code":1,'downloadurl':v}) + elif req.GET.get('a')=='exportexcel': + userid = req.session['userid'] + companyid = getcompany(userid) + a = Drill.objects.filter(usecomp=Partment.objects.get(partid=companyid),deletemark=1) + qssj = req.GET.get('qssj') + jssj = req.GET.get('jssj') + ylbm= req.GET.get('drillpart') + yljb = req.GET.get('drilllevel') + ylnr = req.GET.get('drillcontent') + if yljb: + a = a.filter(drilllevel__dicid=yljb) + if ylnr: + a = a.filter(drillcontent__dickeyid=ylnr) + if ylbm: + a = a.filter(drillpart__partid=ylbm) + if qssj: + a = a.filter(starttime__gte=qssj) + if jssj: + a = a.filter(starttime__lte=jssj) + v = exportxlsx('yl',a) + return JsonResponse({"code":1,'downloadurl':v}) + elif req.GET.get('a')=='del': + drillid=req.GET.get('drillid') + userid = req.session['userid'] + a = Drill.objects.get(drillid=drillid) + if User.objects.get(userid = userid).issuper == 1: + a.deletemark=0 + a.save() + return JsonResponse({"code":1}) + elif a.submituser.userid == userid and a.state==0: + a.deletemark=0 + a.save() + return JsonResponse({"code":1}) + else: + return JsonResponse({"code":0}) + elif req.GET.get('a')=='listsearch': + userid = req.session['userid'] + companyid = getcompany(userid) + a = Drill.objects.filter(usecomp=Partment.objects.get(partid=companyid),deletemark=1) + qssj = req.GET.get('qssj') + jssj = req.GET.get('jssj') + ylbm= req.GET.get('drillpart') + yljb = req.GET.get('drilllevel') + ylnr = req.GET.get('drillcontent') + if yljb: + a = a.filter(drilllevel__dicid=yljb) + if ylnr: + a = a.filter(drillcontent__dickeyid=ylnr) + if ylbm: + a = a.filter(drillpart__partid=ylbm) + if qssj: + a = a.filter(starttime__gte=qssj) + if jssj: + a = a.filter(starttime__lte=jssj) + total=a.count() + startnum,endnum=fenye(req) + obj=a.order_by('-starttime')[startnum:endnum].values('drillnum','drillid','state','drillplace','starttime','drillname','drilltype__dickeyname','chief__name','submituser__name','submituser__userid') + return HttpResponse(transjson(total,a),content_type="application/json") + +def gchandle(req): + a = req.GET.get('a') + userid = req.session['userid'] + companyid = getcompany(userid) + if a == 'add': + obj = Observe() + gcdata = json.loads(req.body.decode('utf-8')) + obj.actname = gcdata['actname'] + obj.lookplace = gcdata['lookplace'] + obj.looktime = gcdata['looktime'] + obj.looker = User.objects.get(userid=userid) + obj.lookpart = User.objects.get(userid=userid).ubelongpart + if 'looktime2' in gcdata: + if gcdata['looktime2']: + obj.looktime2 = gcdata['looktime2'] + if 'lookeder' in gcdata: + obj.lookeder = gcdata['lookeder'] + if 'otherunsafe' in gcdata: + obj.otherunsafe = gcdata['otherunsafe'] + if 'safecontent' in gcdata: + obj.safecontent = gcdata['safecontent'] + obj.looknum='GC'+time.strftime('%Y%m%d%H%M%S') + obj.usecomp = Partment.objects.get(partid=companyid) + if 'lookimg' in gcdata: + obj.lookimg = '?'.join(gcdata['lookimg']) + obj.save() + if 'lookers' in gcdata: + ulist=gcdata['lookers'].split(',') + for i in ulist: + x=User.objects.get(userid=i) + obj.lookers.add(x) + if 'unsafe' in gcdata: + olist = gcdata['unsafe'] + for i in olist: + if i != 0: + dickey = Dickey.objects.get(dickeyid=i) + m = Unsafes(observe = obj,unsafedickey=dickey,unsafedicclass=dickey.dicparent) + m.save() + yjjs_gc.delay(companyid) + return JsonResponse({"code":1}) + elif a == 'listall': + startnum,endnum=fenye(req) + a = Observe.objects.filter(usecomp=Partment.objects.get(partid=companyid),deletemark=1).order_by('-looktime') + total = a.count() + a = a[startnum:endnum].values('lookid','looknum','lookplace','actname','looktime','looker__name','lookeder','otherunsafe') + for i in a: + objs = Observeto.objects.filter(observe__lookid=i['lookid'],user__userid = userid) + if objs.exists(): + i['read']=1 + i['readtime'] = objs[0].submittime + else: + i['read']=0 + return HttpResponse(transjson(total,a),content_type="application/json") + elif a == 'listself': + startnum,endnum=fenye(req) + a = Observe.objects.filter(looker__userid=userid,deletemark=1).order_by('-looktime') + total = a.count() + a = a[startnum:endnum].values('lookid','looknum','lookplace','actname','looktime','looker__name','lookeder','otherunsafe') + return HttpResponse(transjson(total,a),content_type="application/json") + elif a == 'del': + lookid =req.GET.get('lookid') + a = Observe.objects.get(lookid=lookid) + if User.objects.get(userid = userid).issuper == 1: + a.deletemark=0 + a.save() + yjjs_gc.delay(companyid) + return JsonResponse({"code":1}) + else: + return JsonResponse({"code":0}) + elif a == 'listsearch': + startnum,endnum=fenye(req) + a = Observe.objects.filter(usecomp=Partment.objects.get(partid=companyid),deletemark=1) + #print(req.GET.get('qssj')) + if req.GET.get('gcr'): + a = a.filter(looker__userid=req.GET.get('gcr')) + if req.GET.get('gcbm'): + parts = Partment.objects.filter(partlink__contains=','+req.GET.get('gcbm')+',')|Partment.objects.filter(partid=req.GET.get('gcbm')) + a = a.filter(lookpart__in = parts) + if req.GET.get('qssj'): + a = a.filter(looktime__gte=req.GET.get('qssj')) + if req.GET.get('jssj'): + a = a.filter(looktime__lte=req.GET.get('jssj')) + total = a.count() + startnum,endnum=fenye(req) + a = a.order_by('-looktime')[startnum:endnum].values('lookid','looknum','lookplace','actname','looktime','looker__name','lookeder') + return HttpResponse(transjson(total,a),content_type="application/json") + elif a == 'exportexcel': + a = Observe.objects.filter(usecomp=Partment.objects.get(partid=companyid),deletemark=1) + if req.GET.get('gcr'): + a = a.filter(looker__userid=req.GET.get('gcr')) + if req.GET.get('gcbm'): + parts = Partment.objects.filter(partlink__contains=','+req.GET.get('gcbm')+',')|Partment.objects.filter(partid=req.GET.get('gcbm')) + a = a.filter(lookpart__in = parts) + if req.GET.get('qssj'): + a = a.filter(looktime__gte=req.GET.get('qssj')) + if req.GET.get('jssj'): + a = a.filter(looktime__lte=req.GET.get('jssj')) + res = exportxlsx('gc',a) + return res + elif a == 'detailhtml': + return render(req,'observedetail.html',{'lookid':req.GET.get('lookid')}) + elif a == 'detail': + lookid=req.GET.get('lookid') + a = Observe.objects.filter(lookid=lookid) + x = a.values('lookid','looknum','lookplace','actname','looktime','looker__name','lookeder','otherunsafe','safecontent','lookpart__partname','submittime','lookimg','looktime2')[0] + b = Unsafes.objects.filter(observe=a[0]).values('unsafedicclass__dicname','unsafedickey__dickeyname') + x['gcnr'] = list(b) + if x['lookimg']: + x['lookimg'] = x['lookimg'].split('?') + else: + x['lookimg']=[] + x['lookers']=[] + for i in a[0].lookers.all(): + x['lookers'].append(i.name) + x['lookers']=','.join(x['lookers']) + Observeto.objects.get_or_create(observe=a[0], user=User.objects.get(userid=req.session['userid']),defaults={'read': 1}) + return HttpResponse(json.dumps(x,cls=MyEncoder),content_type="application/json") + elif a == 'getdics': + gcdict={} + gclist=[] + objs = Dicclass.objects.filter(parentid=23).order_by('dicid') #行为观察字典集合 + for i in objs: + x={'value':i.dicid,'text':i.dicname} + obj = Dickey.objects.filter(dicparent=i.dicid,deletemark=1) + obj = (obj.filter(usecomps__contains=',1,')|obj.filter(usecomps__contains=','+companyid+',')).exclude(nousecomps__contains=','+companyid+',').order_by('dickeyid') + x0= [] + for i in obj: + x0.append({'value':i.dickeyid,'text':i.dickeyname}) + x['child']=x0 + gclist.append(x) + gcdict['data']=gclist + return JsonResponse(gcdict) + elif a == 'noreadnum': + a = Observe.objects.filter(usecomp=Partment.objects.get(partid=companyid),deletemark=1).count() + b = Observeto.objects.filter(user__userid=userid,observe__deletemark=1).count() + noread = a-b + return JsonResponse({'noread':noread}) + elif a == 'exportword': + data = json.loads(req.body.decode('utf-8')) + url = exportdoc2('gc',data) + return JsonResponse({"code":1,"downloadurl":url}) + +def observepic(req): + userid = req.session['userid'] + companyid = getcompany(userid) + + if req.GET.get('a')=='gclxt':#观察类型饼图 + year = int(req.GET.get('year')) + month = int(req.GET.get('month')) + first_day,first_day_of_next_month = gettime(datetime(year,month,1)) + if req.GET.get('part'): + partid = req.GET.get('part') + else: + partid = companyid + parts = Partment.objects.filter(Q(partid=partid) | Q(partlink__contains=',' + str(partid) + ',')) + a = Observe.objects.filter(lookpart__in=parts,deletemark=1,looktime__range=(first_day, first_day_of_next_month)) + value=[] + key=[] + for i in Dicclass.objects.filter(parentid__dicid=23): + x = i.dicname + y = Unsafes.objects.filter(observe__in=a,unsafedicclass=i).count() + key.append(x) + value.append({'value':y,'name':x}) + return JsonResponse({'code':1,'key':key,'value':value}) + elif req.GET.get('a')=='gclzx':#观察类型折线图 + year = int(req.GET.get('year')) + months = [1,2,3,4,5,6,7,8,9,10,11,12] + userfy=[]#人员反映 + userwz=[]#员工的位置 + grfh=[]#个人防护装备 + gjhsb=[]#工具和设备 + cxhbz=[]#程序和标准 + rtgcx=[]#人体工程学 + hjzj=[]#环境整洁 + + for month in months: + first_day,first_day_of_next_month = gettime(datetime(year,month,1)) + if req.GET.get('part'): + partid = req.GET.get('part') + else: + partid = companyid + parts = Partment.objects.filter(Q(partid=partid) | Q(partlink__contains=',' + str(partid) + ',')) + a = Observe.objects.filter(lookpart__in=parts,deletemark=1,looktime__range=(first_day, first_day_of_next_month)) + for i in Dicclass.objects.filter(parentid__dicid=23): + if i.dicid==24: + userfy.append(Unsafes.objects.filter(observe__in=a,unsafedicclass=i).count()) + elif i.dicid==25: + userwz.append(Unsafes.objects.filter(observe__in=a,unsafedicclass=i).count()) + elif i.dicid==26: + grfh.append(Unsafes.objects.filter(observe__in=a,unsafedicclass=i).count()) + elif i.dicid==27: + gjhsb.append(Unsafes.objects.filter(observe__in=a,unsafedicclass=i).count()) + elif i.dicid==28: + cxhbz.append(Unsafes.objects.filter(observe__in=a,unsafedicclass=i).count()) + elif i.dicid==29: + rtgcx.append(Unsafes.objects.filter(observe__in=a,unsafedicclass=i).count()) + elif i.dicid==30: + hjzj.append(Unsafes.objects.filter(observe__in=a,unsafedicclass=i).count()) + + + return JsonResponse({'code':1,'months':months,'userfy':userfy,'userwz':userwz,'grfh':grfh,'gjhsb':gjhsb,'cxhbz':cxhbz,'rtgcx':rtgcx,'hjzj':hjzj,}) + elif req.GET.get('a')=='gclxbg': + userid = req.session['userid'] + companyid = getcompany(userid) + a = Observe.objects.filter(usecomp=Partment.objects.get(partid=companyid),deletemark=1) + + if req.GET.get('qssj'):#开始时间 + a = a.filter(looktime__gte=req.GET.get('qssj')) + if req.GET.get('jssj'):#结束时间 + a = a.filter(looktime__lte=req.GET.get('jssj')) + if req.GET.get('fxbm'): + gcbm = req.GET.get('fxbm') + parts = Partment.objects.filter(partlink__contains=',' + gcbm + ',')|Partment.objects.filter(partid=gcbm) + a = a.filter(lookpart__in=parts) + + total = a.count() + objs = a.values('looker__userid','looker__name','lookpart__partname').annotate(number = Count('looker')).order_by('-number') + return HttpResponse(transjson(total,objs),content_type="application/json") + + + +def dicchandle(req): + a = req.GET.get('a') + if a == 'tree': + a=Dicclass.objects.exclude(dicid=1).order_by('dicid').annotate(id=F('dicid'),parentId=F('parentid'),name=F('dicname')).values('id','parentId','name') + return HttpResponse(json.dumps(list(a)),content_type="application/json") + +def bwlogin2(req): + if req.method == 'GET': + try: + code = req.GET.get('code') + except: + return render(req,'bindwechat2.html',{'msg':'还未绑定公众号!'})#还未关注公众号 + content = requests.get('https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx4d75244c1b980b5b&secret=edf7d23a457fb4df5ad47eeb9d4b7a39&code='+code+'&grant_type=authorization_code').content.decode('utf-8') + tokendict = json.loads(content) + openid = tokendict['openid'] + access_token = tokendict['access_token'] + userinfo = requests.get('https://api.weixin.qq.com/sns/userinfo?access_token='+access_token+'&openid='+openid+'&lang=zh_CN').content.decode('utf-8')#拉取用户信息 + userinfo = json.loads(userinfo) + nickname = userinfo['nickname'] + headimgurl = userinfo['headimgurl'] + return render(req,'bwlogin2.html',{'openid':openid,'nickname':nickname,'headimgurl':headimgurl}) + else: + username = req.POST.get('username') + password = req.POST.get('password') + openid = req.POST.get('openid') + nickname = req.POST.get('nickname') + headimgurl = req.POST.get('headimgurl') + user = User.objects.filter(username= username,deletemark=1) + if user.exists(): + if check_password(password,user[0].epassword): + mpuser = User.objects.filter(openid=openid).exclude(username = username) + if mpuser.exists(): + return render(req,'bindwechat.html',{'msg':'您的微信已绑定平台下'+mpuser[0].username+'账号,不可重复绑定,请先至pc端解绑!','code':0}) #已绑定其他账号 + else: + if user[0].openid == '0' or user[0].openid == None or user[0].openid == '': + user.update(openid=openid,headimgurl=headimgurl,nickname=nickname) + return render(req,'bindwechat.html',{'msg':'绑定成功,请刷新电脑端浏览器!','code':1}) + else: + if user[0].openid == openid: + return render(req,'bindwechat.html',{'msg':'绑定成功,请刷新电脑端浏览器!','code':1}) + else: + return render(req,'bindwechat.html',{'msg':'该平台账号已绑定昵称为'+user[0].nickname+'的微信,不可重复绑定,请先至pc端解绑!','code':0}) #已绑定其他账号 + else: + return render(req,'bwlogin.html',{'msg':'密码错误'}) + else: + return render(req,'bwlogin.html',{'msg':'用户不存在或已禁用'}) + +def bwlogin(req): + if req.method == 'GET': + try: + code = req.GET.get('code') + except: + return render(req,'bindwechat.html',{'msg':'还未绑定公众号!'})#还未关注公众号 + content = requests.get('https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx4d75244c1b980b5b&secret=edf7d23a457fb4df5ad47eeb9d4b7a39&code='+code+'&grant_type=authorization_code').content.decode('utf-8') + tokendict = json.loads(content) + openid = tokendict['openid'] + access_token = tokendict['access_token'] + mpuser = User.objects.filter(openid=openid) + if mpuser.exists(): + return render(req,'bindwechat.html',{'msg':'您的微信已绑定平台下'+mpuser[0].username+'账号,不可重复绑定,可先至pc端解绑!','code':0}) #已绑定账号 + userinfo = requests.get('https://api.weixin.qq.com/sns/userinfo?access_token='+access_token+'&openid='+openid+'&lang=zh_CN').content.decode('utf-8')#拉取用户信息 + userinfo = json.loads(userinfo) + nickname = userinfo['nickname'] + headimgurl = userinfo['headimgurl'] + return render(req,'bwlogin.html',{'openid':openid,'nickname':nickname,'headimgurl':headimgurl}) + else: + username = req.POST.get('username') + password = req.POST.get('password') + openid = req.POST.get('openid') + nickname = req.POST.get('nickname') + headimgurl = req.POST.get('headimgurl') + user = User.objects.filter(username = username,deletemark=1) + if user.exists(): + if check_password(password,user[0].epassword): + User.objects.filter(openid=openid).update(openid=None,headimgurl=None,nickname=None) + user.update(openid=openid,headimgurl=headimgurl,nickname=nickname) + return render(req,'bindwechat.html',{'msg':'绑定成功,请刷新电脑端浏览器!','code':1}) + else: + return render(req,'bwlogin.html',{'msg':'密码错误'}) + else: + return render(req,'bwlogin.html',{'msg':'用户不存在或已禁用'}) + + + +def unbindwechat(req): + userid=req.session['userid'] + User.objects.filter(userid=userid).update(openid=None,headimgurl=None,nickname=None,mpopenid=None) + return JsonResponse({"code":1}) + +def unbindmp(req): + userid=req.session['userid'] + User.objects.filter(userid=userid).update(openid=None,headimgurl=None,nickname=None,mpopenid=None) + return JsonResponse({"code":1}) + +def vewechat(req): + return HttpResponse('201810170853050zbwtyaxirqeb757umcehktirlemh2ib10kcdovka13hchyf4s', content_type="text/plain") + +def minip_px(req): + f = StringIO() + f.write('86beeba7de3c84c26244f19287f49a03') + res = HttpResponse(content_type='APPLICATION/OCTET-STREAM') + res['Content-Disposition'] = 'attachment;filename=boUR15vyNu.txt' + res.write(f.getvalue()) + return res + +def mplogin(req): + res = req.body.decode('utf-8') + try: + code = req.POST.get('code') + except: + code = json.loads(res)['code'] + info = requests.get('https://api.weixin.qq.com/sns/jscode2session?appid=wx5c39b569f01c27db&secret=68762892f8df2b4a0b1940c5250a8dc0&js_code='+code+'&grant_type=authorization_code').content.decode('utf-8') + info = json.loads(info) + mpopenid = info['openid'] + session_key = info['session_key'] + if User.objects.filter(mpopenid=mpopenid).exists(): + a = User.objects.get(mpopenid=mpopenid) + userid = a.userid + username = a.username + req.session['userid'] = userid + # print(req.session,req.COOKIES) + return JsonResponse({"code":1,'userid':userid,'username':username,'mpopenid':mpopenid}) + else: + return JsonResponse({"code":0,'mpopenid':mpopenid}) + +def bindmp(req): + username = req.POST.get('username') + password = req.POST.get('password') + mpopenid = req.POST.get('mpopenid') + #print(username,password,mpopenid) + user = User.objects.filter(username = username,deletemark=1) + if user.exists(): + if check_password(password,user[0].epassword): + user.update(mpopenid=mpopenid) + return JsonResponse({"code":1}) + else: + return JsonResponse({"code":0}) + else: + return JsonResponse({"code":0}) + +def setup(req): + if req.GET.get('a') == 'setuph': + userid = req.session['userid'] + companyid = getcompany(userid) + obj = Yjsetup.objects.filter(usecomp__partid = companyid).values() + return render(req,'setup.html',obj[0]) + elif req.GET.get('a') == 'setup': + userid = req.session['userid'] + companyid = getcompany(userid) + obj = Yjsetup.objects.filter(usecomp__partid = companyid).values() + #a = {'total':total,'rows':list(obj),'code':1} + #jsondata = json.dumps(a,cls=MyEncoder) + return JsonResponse(obj[0]) + elif req.method == 'POST': + userid = req.session['userid'] + companyid = getcompany(userid) + yjsetupid = req.POST.get('yjsetupid') + monthyhavg = req.POST.get('monthyhavg') + safev = req.POST.get('safev') + warnv = req.POST.get('warnv') + alertv = req.POST.get('alertv') + maxv = req.POST.get('maxv') + yhpgqz = req.POST.get('yhpgqz') + yhdjqz = req.POST.get('yhdjqz') + yhsblqz = req.POST.get('yhsblqz') + yhzglqz = req.POST.get('yhzglqz') + pxdjqz = req.POST.get('pxdjqz') + pxxgqz = req.POST.get('pxxgqz') + yldjqz = req.POST.get('yldjqz') + ylxgqz = req.POST.get('ylxgqz') + Yjsetup.objects.filter(yjsetupid=yjsetupid).update(monthyhavg=monthyhavg,safev=safev,warnv=warnv,alertv=alertv,maxv=maxv, + yhpgqz=yhpgqz,yhdjqz=yhdjqz,yhsblqz=yhsblqz,yhzglqz=yhzglqz,pxdjqz=pxdjqz,pxxgqz=pxxgqz,yldjqz=yldjqz,ylxgqz=ylxgqz + ) + return JsonResponse({"code":1}) +def test(req): + print(req.body) + print(json.loads(req.body.decode('utf-8'))['yhtp']) + +def importusers(req): + companyid = req.GET.get('companyid') + drusers(companyid) + return JsonResponse({"code":1}) + +@apicheck_login +def apicompany(req): + if int(req.session.get('userid'))==8: + a = req.GET.get('a') + menurights = '11,1,2,3,4,5,6,7,8,9,10,12,13,15,16,17,18,19,20,21,22,23,24,28,29,32,36,46,47,48,50'#菜单编码 + if a=='add': + admin = req.GET.get('admin') + company = req.GET.get('company') + y = Partment() + if Partment.objects.filter(partname=company).exists(): + return JsonResponse({'code':0}) + else: + y.partname = company + y.partlink = ',' + y.iscompany = 1 + y.save() + x = User() + x.username = admin + x.name = '超级管理员' + x.password = 'Aq123456' + x.epassword = make_password('Aq123456') + x.issuper = 1 + x.ubelongpart = y + x.usecomp = y + x.save() + y.bmzg = ','+str(x.userid)+',' + y.save() + part = Partment.objects.get(partid=y.partid) + Group.objects.create(groupname='超管',grouptype=0,usecomp=part,menulink=menurights) + Group.objects.create(groupname='安全员',grouptype=1,usecomp=part,menulink=menurights) + Group.objects.create(groupname='全体用户',grouptype=3,usecomp=part,menulink=menurights) + z = Group(groupname='主管',grouptype=2,usecomp=part,menulink=menurights) + z.save() + z.users.add(x) + Yjsetup.objects.create(monthyhavg=100,safev=50,warnv=75,alertv=100,maxv=200,yhpgqz=4,yhdjqz=4,yhsblqz=1,yhzglqz=4,pxdjqz=3,pxxgqz=4,yldjqz=3,ylxgqz=3,usecomp=y) + Map.objects.create(name='默认地图',pic='/static/safesite/mystatic/images/snc.jpg',usecomp=y,default=1) + return JsonResponse({'code':1,'companyid':y.partid}) + else: + return JsonResponse({'code':0,'msg':'no right!'}) + +def drapi(req): + a = req.GET.get('a') + if a == 'user': + userid = req.session['userid'] + companyid = getcompany(userid) + file_name = 'c'+str(companyid)+'_'+req.FILES['upfile'].name + upload_folder = 'media/temp' + if not os.path.exists(upload_folder): + os.mkdir(upload_folder) + filepath = os.path.join(upload_folder, file_name) + filepath = filepath.replace('\\','/') + with open( filepath, 'wb') as f: + f.write(req.FILES['upfile'].read()) + return JsonResponse(drusers(companyid,filepath)) + elif a == 'equipment': + userid = req.session['userid'] + companyid = getcompany(userid) + file_name = 'c'+str(companyid)+'_'+req.FILES['upfile'].name + upload_folder = 'media/temp' + if not os.path.exists(upload_folder): + os.mkdir(upload_folder) + filepath = os.path.join(upload_folder, file_name) + filepath = filepath.replace('\\','/') + with open( filepath, 'wb') as f: + f.write(req.FILES['upfile'].read()) + # try: + equipmentdict = drequipments(companyid,filepath) + if equipmentdict: + return JsonResponse({"code":2,"equipmentdict":equipmentdict}) + else: + return JsonResponse({"code":1}) + elif a == 'risk': + userid = req.session['userid'] + companyid = getcompany(userid) + file_name = 'c'+str(companyid)+'_'+req.FILES['upfile'].name + upload_folder = 'media/temp' + if not os.path.exists(upload_folder): + os.mkdir(upload_folder) + filepath = os.path.join(upload_folder, file_name) + filepath = filepath.replace('\\','/') + with open( filepath, 'wb') as f: + f.write(req.FILES['upfile'].read()) + try: + risks = drrisks(companyid,filepath) + if risks: + return JsonResponse({"code":2,"risks":risks}) + else: + return JsonResponse({"code":1}) + except: + return JsonResponse({"code":0}) + elif a == 'question': + userid = req.session['userid'] + companyid = getcompany(userid) + file_name = 'c'+str(companyid)+'_'+req.FILES['upfile'].name + upload_folder = 'media/temp' + if not os.path.exists(upload_folder): + os.mkdir(upload_folder) + filepath = os.path.join(upload_folder, file_name) + filepath = filepath.replace('\\','/') + with open( filepath, 'wb') as f: + f.write(req.FILES['upfile'].read()) + msg = drquestions(companyid,filepath,userid) + if msg: + return JsonResponse({"code":2,"msg":msg}) + else: + return JsonResponse({"code":1}) + + + + +def apimiss(req): + a = req.GET.get('a') + userid = req.session['userid'] + companyid = getcompany(userid) + if a == 'add': + obj = Miss() + data = json.loads(req.body.decode('utf-8')) + obj.missplace = data['missplace'] + obj.misstime = data['misstime'] + obj.misser = User.objects.get(userid=userid) + obj.misspart = User.objects.get(userid=userid).ubelongpart + obj.description = data['description'] + if 'missqy' in data: + if data['missqy']: + obj.missqy = Area.objects.get(id=data['missqy']) + if 'prevent' in data: + obj.prevent = data['prevent'] + if 'lesson' in data: + obj.lesson = data['lesson'] + obj.missnum='WS'+time.strftime('%Y%m%d%H%M%S') + obj.usecomp = Partment.objects.get(partid=companyid) + if 'missimg' in data: + obj.missimg = '?'.join(data['missimg']) + obj.save() + yjjs_ws.delay(companyid) + return JsonResponse({"code":1}) + elif a == 'listall': + startnum,endnum=fenye(req) + a = Miss.objects.filter(usecomp=Partment.objects.get(partid=companyid),deletemark=1) + if req.GET.get('missqy'): + a = a.filter(missqy__id=req.GET.get('missqy')) + a = a.order_by('-misstime') + total = a.count() + startnum,endnum=fenye(req) + a = a[startnum:endnum].values('missid','missnum','missplace','description','misstime','misser__name','missimg') + for i in a: + if Missto.objects.filter(miss__missid=i['missid'],user__userid = userid).exists(): + i['read']=1 + i['readtime'] = Missto.objects.filter(miss__missid=i['missid'],user__userid = userid)[0].submittime + else: + i['read']=0 + return HttpResponse(transjson(total,a),content_type="application/json") + elif a == 'listself': + startnum,endnum=fenye(req) + a = Miss.objects.filter(misser__userid=userid,deletemark=1).order_by('-misstime') + total = a.count() + startnum,endnum=fenye(req) + a = a[startnum:endnum].values('missid','missnum','missplace','description','misstime','misser__name') + return HttpResponse(transjson(total,a),content_type="application/json") + elif a == 'detail': + missid=req.GET.get('missid') + a = Miss.objects.filter(missid=missid) + x = a.values('missid','missnum','missplace','misstime','misser__name','description','prevent','misspart__partname','submittime','missimg','lesson')[0] + if x['missimg']: + x['missimg'] = x['missimg'].split('?') + else: + x['missimg']=[] + for key in x: + if x[key] == None: + x[key] = '' + Missto.objects.get_or_create(miss=a[0], user=User.objects.get(userid=req.session['userid']),defaults={'read': 1}) + return HttpResponse(json.dumps(x,cls=MyEncoder),content_type="application/json") + elif a == 'del': + missid =req.GET.get('missid') + a = Miss.objects.get(missid=missid) + if User.objects.get(userid = userid).issuper == 1: + a.deletemark=0 + a.save() + yjjs_ws.delay(companyid) + return JsonResponse({"code":1}) + else: + return JsonResponse({"code":0}) + elif a == 'listsearch': + startnum,endnum=fenye(req) + a = Miss.objects.filter(usecomp=Partment.objects.get(partid=companyid),deletemark=1) + if req.GET.get('fsbm'): + parts = Partment.objects.filter(partlink__contains=','+req.GET.get('fsbm')+',')|Partment.objects.filter(partid=req.GET.get('fsbm')) + a = a.filter(misspart__in = parts) + if req.GET.get('qssj'): + a = a.filter(misstime__gte=req.GET.get('qssj')) + if req.GET.get('jssj'): + a = a.filter(misstime__lte=req.GET.get('jssj')) + total = a.count() + a = a.order_by('-misstime')[startnum:endnum].values('missid','missnum','missplace','description','misstime') + return HttpResponse(transjson(total,a),content_type="application/json") + elif a == 'exportexcel': + a = Miss.objects.filter(usecomp=Partment.objects.get(partid=companyid),deletemark=1) + if req.GET.get('fsbm'): + parts = Partment.objects.filter(partlink__contains=','+req.GET.get('fsbm')+',')|Partment.objects.filter(partid=req.GET.get('fsbm')) + a = a.filter(misspart__in = parts) + if req.GET.get('qssj'): + a = a.filter(misstime__gte=req.GET.get('qssj')) + if req.GET.get('jssj'): + a = a.filter(misstime__lte=req.GET.get('jssj')) + res = exportxlsx('ws',a) + return res + elif a == 'exportword': + id = req.GET.get('id') + res = exportdoc('ws',id) + return res + elif a == 'noreadnum': + a = Miss.objects.filter(usecomp=Partment.objects.get(partid=companyid),deletemark=1).count() + b = Missto.objects.filter(user__userid=userid,miss__deletemark=1).count() + noread = a-b + return JsonResponse({'noread':noread}) + +def apisocert(req): + a = req.GET.get('a') + if a=='listall': + userid = req.session['userid'] + companyid = getcompany(userid) + startnum,endnum=fenye(req) + a = Socertificate.objects.filter(usecomp=Partment.objects.get(partid=companyid)).order_by('id')#无deletemark + total = a.count() + startnum,endnum=fenye(req) + if req.GET.get('sort'): + a = a.order_by(req.GET.get('sort')) + a = a[startnum:endnum].values('id','realname','gender','zylb','czxm','fzjg','ccfzrq','yfsrq','yxqkssj','yxqjssj','sjfssj','zszt','url') + return HttpResponse(transjson(total,a),content_type="application/json") + elif a=='listself': + userid = req.session['userid'] + cardnum = Userprofile.objects.get(user__userid=userid).cardnum + a = Socertificate.objects.filter(cardnum=cardnum).order_by('id')#无deletemark + total = a.count() + if req.GET.get('sort'): + a = a.order_by(req.GET.get('sort')) + a = a.values('id','realname','gender','zylb','czxm','fzjg','ccfzrq','yfsrq','yxqkssj','yxqjssj','sjfssj','zszt','url') + return HttpResponse(transjson(total,a),content_type="application/json") + elif a == 'addspider': + postdata = json.loads(req.body.decode('utf-8')) + userid = postdata['userid'] + realname = postdata['realname'] + cardnum = postdata['cardnum'] + companyid = getcompany(userid) + data = getTzzs(cardnum,realname) + data1 = [] + gender='' + if data: + for i in data: + if i['操作项目'] not in data1: + updated_values={ + 'user':User.objects.get(userid=userid), + 'usecomp':Partment.objects.get(partid=companyid), + 'realname':i['姓名'], + 'gender':i['性别'], + 'zylb':i['作业类别'], + 'czxm':i['操作项目'], + 'fzjg':i['发证机关'], + 'ccfzrq':i['初次发证日期'] if i['初次发证日期'] else None, + 'yfsrq':i['应复审日期'] if i['应复审日期'] else None, + 'yxqkssj':i['有效期开始时间'] if i['有效期开始时间'] else None, + 'yxqjssj':i['有效期结束时间'] if i['有效期结束时间'] else None, + 'sjfssj':i['实际复审时间'] if i['实际复审时间'] else None, + 'url':i['url'], + } + try: + updated_values['zszt'] = guoqi(i['应复审日期']) + except: + pass + obj, created = Socertificate.objects.update_or_create( + cardnum=cardnum, czxm=i['操作项目'], defaults=updated_values) + data1.append(i['操作项目']) + gender = i['性别'] + else: + obj = Socertificate.objects.get(cardnum=cardnum, czxm=i['操作项目']) + if obj.yxqjssj.strftime('%Y-%m-%d') now1: + return 1 + elif now1 > datetime.strptime(x,'%Y-%m-%d') > now: + return 2 + else: + return 3 +def apisafecert(req): + a = req.GET.get('a') + if a=='listall': + userid = req.session['userid'] + companyid = getcompany(userid) + startnum,endnum=fenye(req) + a = Safecert.objects.filter(usecomp=Partment.objects.get(partid=companyid)).order_by('id')#无deletemark + total = a.count() + startnum,endnum=fenye(req) + if req.GET.get('sort'): + a = a.order_by(req.GET.get('sort')) + a = a[startnum:endnum].values('id','realname','gender','zglx','dwlx','fzjg','yfsrq','yxqkssj','yxqjssj','zszt','url') + return HttpResponse(transjson(total,a),content_type="application/json") + elif a=='listself': + userid = req.session['userid'] + cardnum = Userprofile.objects.get(user__userid=userid).cardnum + a = Safecert.objects.filter(cardnum=cardnum).order_by('id')#无deletemark + total = a.count() + if req.GET.get('sort'): + a = a.order_by(req.GET.get('sort')) + a = a.values('id','realname','gender','zglx','dwlx','fzjg','yfsrq','yxqkssj','yxqjssj','zszt','url') + return HttpResponse(transjson(total,a),content_type="application/json") + elif a == 'addspider': + postdata = json.loads(req.body.decode('utf-8')) + userid = postdata['userid'] + realname = postdata['realname'] + cardnum = postdata['cardnum'] + companyid = getcompany(userid) + data = getAqzs(cardnum,realname) + data1 = [] + gender='' + if data: + for i in data: + if i['资格类型'] not in data1: + updated_values={ + 'user':User.objects.get(userid=userid), + 'usecomp':Partment.objects.get(partid=companyid), + 'realname':i['姓名'], + 'gender':i['性别'], + 'zglx':i['资格类型'], + 'dwlx':i['单位类型'], + 'fzjg':i['发证机关'], + 'yfsrq':i['应复审日期'] if i['应复审日期'] else None, + 'yxqkssj':i['有效期开始时间'] if i['有效期开始时间'] else None, + 'yxqjssj':i['有效期结束时间'] if i['有效期结束时间'] else None, + 'url':i['url'], + } + try: + updated_values['zszt'] = guoqi(i['应复审日期']) + except: + pass + obj, created = Safecert.objects.update_or_create( + cardnum=cardnum, zglx=i['资格类型'],defaults=updated_values) + data1.append(i['资格类型']) + gender = i['性别'] + else: + obj = Safecert.objects.get(cardnum=cardnum,zglx=i['资格类型']) + if obj.yxqjssj.strftime('%Y-%m-%d')0: + qobjs = questionobjs.filter(type=1).order_by('?')[:dxnum] + for i in qobjs: + ExamPaperDetail.objects.create(exampaper=objpaper,question=i,score=dxs) + if duoxnum>0: + qobjs = questionobjs.filter(type=2).order_by('?')[:duoxnum] + for i in qobjs: + ExamPaperDetail.objects.create(exampaper=objpaper,question=i,score=duoxs) + if pdnum>0: + qobjs = questionobjs.filter(type=3).order_by('?')[:pdnum] + for i in qobjs: + ExamPaperDetail.objects.create(exampaper=objpaper,question=i,score=pds) + #结束 + obj.exampaper = objpaper + if 'starttime' in data: + if data['starttime']: + obj.starttime = data['starttime'] + if 'endtime' in data: + if data['endtime']: + obj.endtime = data['endtime'] + obj.totalscore = totalscore + obj.passscore = data['passscore'] + obj.duration = data['duration'] + obj.createuser = User.objects.get(userid=userid) + obj.qrcode = makeqr_examtest('https://safeyun.ctcshe.com/miniprogram/examtest?id='+str(obj.id)) + obj.save() + ksry = data['participant'].split(',') + b = [] + for i in ksry: + uobj = User.objects.get(userid=i) + ExamTestDetail.objects.create(examtest=obj,user=uobj) + b.append(uobj.openid) + postdict={ + 'touser':'', + 'template_id':'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0', + "miniprogram":{"appid":"wx5c39b569f01c27db","path":"pages/examtest/index"}, + 'data':{ + 'first':{ + 'value': '小程序考试通知:' + }, + 'keyword1':{ + 'value':data['name'] + }, + 'keyword2':{ + 'value':'满分'+ str(obj.totalscore) + }, + 'remark':{ + 'value':'用时限制为'+data['duration']+'分钟,注意把握时间' + } + } + } + send_wechatmsgs.delay(postdict,b) + return JsonResponse({"code":1}) + elif a == 'del': + id = req.GET.get('id') + user = User.objects.get(userid=userid) + a = ExamTest.objects.get(id=id) + if user.issuper==1 or a.createuser==user: + ExamTestDetail.objects.filter(examtest=a).delete() + a.delete() + return JsonResponse({"code":1}) + else: + return JsonResponse({"code":0}) + elif a == 'close': + id = req.GET.get('id') + user = User.objects.get(userid=userid) + a = ExamTest.objects.get(id=id) + if user.issuper==1 or a.createuser==user: + a.state = 0 + a.save() + return JsonResponse({"code":1}) + else: + return JsonResponse({"code":0}) + elif a == 'detail': + id = req.GET.get('id') + a = ExamTest.objects.filter(id=id).values('id','num','name','starttime','endtime','duration','totalscore','passscore','exampaper__total','createtime','state','exampaper__name','createuser__name','type','qrcode')[0] + objs = ExamTestDetail.objects.filter(examtest__id=id).order_by('-score').values('id','user__name','user__ubelongpart__partname','took','score','ison','passcode') + a['cjrydetail'] = list(objs) + return HttpResponse(json.dumps(a,cls=MyEncoder),content_type="application/json") + elif a == 'detailtm': + id = req.GET.get('id') + test = ExamTest.objects.get(id=id) + objs = ExamPaperDetail.objects.filter(exampaper=test.exampaper).values('id','question__id','score','question__title','question__type','question__answer','question__right','question__resolution') + duration = test.duration + data = {'duration':duration,'tms':list(objs)} + return JsonResponse(data) + elif a == 'exportword': + data = json.loads(req.body.decode('utf-8')) + url = exportdoc2('ks',data) + return JsonResponse({"code":1,"downloadurl":url}) + + +def apiexamtestdetail(req): + a = req.GET.get('a') + userid = req.session['userid'] + companyid = getcompany(userid) + if a=='dknum': + a = ExamTestDetail.objects + a = a.filter(user__userid=userid,examtest__state=1,ison=0,examtest__endtime__gte=datetime.now()) + dknum = a.count() + return JsonResponse({"code":1,"dknum":dknum}) + elif a=='listdk': + a = ExamTestDetail.objects + a = a.filter(user__userid=userid,examtest__state=1,ison=0).order_by('-id') + total = a.count() + startnum,endnum=fenye(req) + a = a[startnum:endnum].values('id','examtest__id','examtest__name','examtest__starttime','examtest__endtime','examtest__passscore','examtest__state','examtest__duration') + for i in a: + if i['examtest__endtime']: + if i['examtest__endtime']>datetime.now(): + i['isActive'] = True + else: + i['isActive'] = False + else: + i['isActive'] = True + return HttpResponse(transjson(total,a),content_type="application/json") + elif a=='listyk': + a = ExamTestDetail.objects + a = a.filter(user__userid=userid).exclude(ison=0).order_by('-id') + total = a.count() + startnum,endnum=fenye(req) + a = a[startnum:endnum].values('id','examtest__id','examtest__name','starttime','examtest__passscore','examtest__state','ison','examtest__duration','took','score','passcode') + return HttpResponse(transjson(total,a),content_type="application/json") + elif a == 'handtest': + data = json.loads(req.body.decode('utf-8')) + testid = data['testid'] + starttime = data['starttime'] + endtime = data['endtime'] + took = round((datetime.strptime(endtime, '%Y-%m-%d %H:%M:%S')-datetime.strptime(starttime, '%Y-%m-%d %H:%M:%S')).total_seconds()/60) + testdetail = data['sheet'] + score = 0 + rights = 0 + tms = [] + wrongs = [] + for i in testdetail:#判卷 + iscore = 0 + if i['question__type'] == 2: + if 'userchecked' in i: + if i['userchecked']: + if set(i['userchecked']) == set(i['question__right']): + iscore = i['score'] + rights = rights + 1 + else: + wrongs.append(str(i['question__id'])) + for x in i['userchecked']: + if x in i['question__right']: + iscore = iscore + 0.5 + else: + iscore = 0 + break + else: + if 'userchecked' in i: + if i['userchecked']: + if i['userchecked'] == i['question__right']: + iscore = i['score'] + rights = rights + 1 + else: + wrongs.append(str(i['question__id'])) + i['iscore'] = iscore + score = score + iscore + tms.append(str(i['question__id'])) + obj = ExamTestDetail.objects.get(examtest__id=testid,user__userid=userid) + obj.testnum = obj.testnum + 1 + obj.starttime = starttime + obj.endtime = endtime + obj.took = took + obj.testdetail = testdetail + obj.rights = rights + obj.score = score + obj.ison = 1 + examtestobj = obj.examtest + totalscore = examtestobj.totalscore + passscore = examtestobj.passscore + if score >= passscore: + passcode = 1 + else: + passcode = 0 + obj.passcode = passcode + if tms: + obj.tms = ','+','.join(tms)+',' + if wrongs: + obj.wrongs = ','+','.join(wrongs)+',' + obj.save() + tmnum = len(testdetail) + objs = ExamTestDetail.objects.filter(examtest__id=testid,ison=0) + if objs.exists(): + pass + else: + ExamTest.objects.filter(id=testid).update(state=0) + return JsonResponse({'code':1,'data':{'passcode':passcode,'score':score,'totalscore':totalscore,'rights':rights,'tmnum':tmnum,'examtestdetailid':obj.id}}) + elif a == 'detail': + id = req.GET.get('id') + obj = ExamTestDetail.objects.filter(id=id) + data = obj.values('id','starttime','took','score','passcode','testdetail','examtest__name','user__headimgurl','user__name')[0] + return JsonResponse(data) + elif a=='updateison': + id = req.GET.get('id') + examdlid = req.GET.get('examdlid') + user = User.objects.get(userid=userid) + a = ExamTest.objects.get(id=id) + if a.createuser==user: + objss = ExamTestDetail.objects.get(id=examdlid) + objss.ison=0 + objss.testnum=objss.testnum+1 + objss.save() + return JsonResponse({"code":1,"message":"发布成功!"}) + else: + return JsonResponse({"code":2,"message":"您没有发布权限!"}) +def apitrain(req): + if req.GET.get('a')=='listjoin': + userid = req.session['userid'] + objs = Trainuser.objects.filter(train__deletemark=1) + if req.GET.get('sry'): + objs = objs.filter(participant__userid=req.GET.get('sry')) + else: + objs = objs.filter(participant__userid=userid) + total= objs.count() + startnum,endnum=fenye(req) + objs=objs[startnum:endnum].values('train__trainnum','train__trainid','train__state','train__trainplace','train__starttime','train__trainname','train__teacher','train__lecturer__name','participant__name','participant__name','checked','train__duration','examtestdetail') + return HttpResponse(transjson(total,objs),content_type="application/json") + +def apiquestioncat(req): + a = req.GET.get('a') + userid = req.session['userid'] + companyid = getcompany(userid) + if a == 'tree1': + list_items = (Questioncat.objects.filter(usecomp__partid=1,deletemark=1)).annotate(parentId=F('parent__id')).values('id','parentId','name') + return HttpResponse(json.dumps(list(list_items)),content_type="application/json") + elif a == 'tree2': + list_items = (Questioncat.objects.filter(usecomp__partid=companyid,deletemark=1)).annotate(parentId=F('parent__id')).values('id','parentId','name') + return HttpResponse(json.dumps(list(list_items)),content_type="application/json") + elif a == 'tree': + list_items = (Questioncat.objects.filter(usecomp__partid=1,deletemark=1)|Questioncat.objects.filter(usecomp__partid=companyid,deletemark=1)).annotate(parentId=F('parent__id')).values('id','parentId','name') + return HttpResponse(json.dumps(list(list_items)),content_type="application/json") + elif a == 'add': + data = json.loads(req.body.decode('utf-8')) + obj = Questioncat() + name = data['name'] + obj.name = name + if 'parent' in data: + if data['parent']: + parent = data['parent'] + parentobj = Questioncat.objects.get(id=parent) + obj.parent = parentobj + obj.link = parentobj.link + str(data['parent']) + ',' + obj.usecomp = Partment.objects.get(partid=companyid) + obj.save() + return JsonResponse({"code":1}) + elif a == 'del': + id = req.GET.get('id') + user = User.objects.get(userid=userid) + a = Questioncat.objects.get(id=id) + if user.issuper==1 or a.usecomp.partid == companyid: + Questioncat.objects.filter(id = id).update(deletemark=0) + return JsonResponse({"code":1}) + else: + return JsonResponse({"code":0}) + return JsonResponse({"code":1}) + elif a == 'detail': + id = req.GET.get('id') + a = Questioncat.objects.filter(id=id).values('id','name','parent__id')[0] + return JsonResponse(a) + elif a == 'edit': + data = json.loads(req.body.decode('utf-8')) + id = data['id'] + a = Questioncat.objects.get(id=id) + a.name = data['name'] + if 'parent' in data: + if data['parent']: + parent = Questioncat.objects.get(id=data['parent']) + a.parent = parent + oldlink = a.link + a.link = parent.link + str(parent.id) + ',' + Questioncat.objects.filter(link__contains = oldlink + str(id) + ',').update(link= a.link + str(id) +',' ) + a.save() + return JsonResponse({"code":1}) + +def apimap(req): + a = req.GET.get('a') + userid = req.session['userid'] + companyid = getcompany(userid) + if a == 'tree': + list_items = (Map.objects.filter(usecomp__partid=companyid,deletemark=1)).annotate(parentId=F('parent__id')).values('id','parentId','name','pic') + return HttpResponse(json.dumps(list(list_items)),content_type="application/json") + elif a == 'default': + obj = Map.objects.filter(usecomp__partid=companyid,deletemark=1,default=1).values('id','name','pic') + return JsonResponse(obj[0]) + elif a == 'update': + id = req.POST.get('id') + Map.objects.filter(id=id).update(pic=req.POST.get('pic')) + return JsonResponse({"code":1}) + +def apiarea(req): + a = req.GET.get('a') + userid = req.session['userid'] + companyid = getcompany(userid) + if a=='listall': + a = Area.objects.filter(deletemark=1,belongmap__id=req.GET.get('map')) + total = a.count() + a = a.order_by('order').values('id','name','polygon','order','belongmap__id') + return HttpResponse(transjson(total,a),content_type="application/json") + elif a=='bind': + data = json.loads(req.body.decode('utf-8')) + Area.objects.filter(id=data['id']).update(polygon=data['polygon']) + return JsonResponse({"code":1}) + elif a == 'tree': + mapobj = Map.objects.filter(usecomp__partid=companyid,deletemark=1) + if mapobj.count()==1: + objs = Area.objects.filter(belongmap=mapobj[0],deletemark=1).order_by('order').values('id','name') + return HttpResponse(json.dumps(list(objs)),content_type="application/json") + elif a == 'add': + data = json.loads(req.body.decode('utf-8')) + name = data['name'] + if Area.objects.filter(usecomp__partid=companyid,name=name).exists(): + return JsonResponse({"code":0}) + map = data['map'] + order = data['order'] + obj = Area.objects.create(name = name,order=order,belongmap=Map.objects.get(id=map),usecomp=Partment.objects.get(partid=companyid)) + makeqr_area('https://safeyun.ctcshe.com/miniprogram/area?id='+str(obj.id)) + return JsonResponse({"code":1}) + elif a == 'del': + if User.objects.get(userid=userid).issuper==1: + Area.objects.filter(id=req.GET.get('id')).update(deletemark=0) + return JsonResponse({"code":1}) + else: + return JsonResponse({"code":0}) + elif a == 'detail': + obj = Area.objects.filter(deletemark=1,id=req.GET.get('id')).values('id','name','polygon','order','qrcode')[0] + return JsonResponse(obj) + elif a == 'edit': + data = json.loads(req.body.decode('utf-8')) + name = data['name'] + order = data['order'] + Area.objects.filter(id=data['id']).update(name = name,order=order) + return JsonResponse({"code":1}) + +def apimapshow(req): + a = req.GET.get('a') + userid = req.session['userid'] + companyid = getcompany(userid) + if a=='trouble': + objs = Trouble.objects.filter(usecomp__partid = companyid,deletemark=1).exclude(yhzt=6).exclude(yhqy=None).exclude(yhqy__deletemark=0).values('yhqy__id','yhqy__name','yhqy__polygon').annotate(num=Count('yhqy')) + return HttpResponse(json.dumps(list(objs)),content_type="application/json") + elif a=='miss': + date1 = datetime.now() - timedelta(days=30) + objs = Miss.objects.filter(usecomp__partid = companyid,deletemark=1,submittime__gte = date1).exclude(missqy=None).values('missqy__id','missqy__name','missqy__polygon').annotate(num=Count('missqy')) + return HttpResponse(json.dumps(list(objs)),content_type="application/json") + elif a=='risk': + objs = Area.objects.filter(usecomp__partid = companyid,deletemark=1).exclude(risklevel=None).values('id','name','polygon','risklevel')#缺少deletemark + return HttpResponse(json.dumps(list(objs)),content_type="application/json") + elif a=='operation': + objs = Operation.objects.filter(usecomp__partid = companyid,deletemark=1).exclude(zyqy=None).exclude(zyzt__zyzt='已关闭') + objs=objs.values('zyqy__id','zyqy__name','zyqy__polygon').annotate(num=Count('zyqy')) + return HttpResponse(json.dumps(list(objs)),content_type="application/json") + elif a=='all': + date1 = datetime.now() - timedelta(days=30) + yh = Trouble.objects.filter(usecomp__partid = companyid,deletemark=1).exclude(yhzt=6).exclude(yhqy=None).exclude(yhqy__deletemark=0).values('yhqy__id','yhqy__name','yhqy__polygon').annotate(num=Count('yhqy')) + ws = Miss.objects.filter(usecomp__partid = companyid,deletemark=1,submittime__gte = date1).exclude(missqy=None).values('missqy__id','missqy__name','missqy__polygon').annotate(num=Count('missqy')) + zy = Operation.objects.filter(usecomp__partid = companyid,deletemark=1).exclude(zyqy=None).exclude(zyzt__zyzt='已关闭').values('zyqy__id','zyqy__name','zyqy__polygon').annotate(num=Count('zyqy')) + fx = Area.objects.filter(usecomp__partid = companyid).exclude(risklevel=None).values('id','name','polygon','risklevel') + return JsonResponse({'code':1,'data':{'yh':list(yh),'ws':list(ws),'zy':list(zy),'fx':list(fx)}}) + + + + + +def apiequipment(req): + a = req.GET.get('a') + userid = req.session['userid'] + companyid = getcompany(userid) + if a=='listall': + objs = Equipment.objects.filter(deletemark=1,usecomp__partid=companyid) + if req.GET.get('area',False): + objs = objs.filter(area__id=req.GET.get('area')) + if req.GET.get('cate'): + objs = objs.filter(cate__dickeyid=req.GET.get('cate')) + if req.GET.get('state'): + objs = objs.filter(state=req.GET.get('state')) + if req.GET.get('name'): + objs = objs.filter(name__contains=req.GET.get('name')) + if req.GET.get('b',None) == 'exportexcel': + res = exportxlsx('equipment',objs)#导出设备列表 + return res + total = objs.count() + startnum,endnum=fenye(req) + objs = objs.order_by('num')[startnum:endnum].values('id','num','name','type','oem','udate','place','istz','iskey','state','cate__dickeyname','area__name') + return HttpResponse(transjson(total,objs),content_type="application/json") + elif a == 'update': + data = json.loads(req.body.decode('utf-8')) + id = data['id'] + if id: + obj = Equipment.objects.get(id=id) + else: + obj = Equipment() + obj.num = data['num'] + obj.name = data['name'] + obj.cate = Dickey.objects.get(dickeyid=data['cate']) + obj.area = Area.objects.get(id=data['area']) + obj.type = data['type'] + obj.oem = data['oem'] + obj.fnum = data['fnum'] + obj.istz = 1 if 'istz' in data else 0 + obj.iskey = 1 if 'iskey' in data else 0 + if data['fdate']: + obj.fdate = data['fdate'] + if data['udate']: + obj.udate = data['udate'] + obj.place = data['place'] + if data['zrbm']: + obj.zrbm = Partment.objects.get(partid=data['zrbm']) + if data['zrr']: + obj.zrr = User.objects.get(userid=data['zrr'] ) + if data['riskact']: + obj.riskact = RiskAct.objects.get(id=data['riskact']) + obj.parameter = data['parameter'] + obj.usecomp=Partment.objects.get(partid=companyid) + obj.save() + obj.qrcode = makeqr('https://safeyun.ctcshe.com/miniprogram/equipment?id='+str(obj.id)) + obj.save() + return JsonResponse({"code":1}) + elif a == 'del': + id = req.GET.get('id') + user = User.objects.get(userid=userid) + a = Equipment.objects.get(id=id) + if user.issuper==1: + a.delete() + return JsonResponse({"code":1}) + else: + return JsonResponse({"code":0}) + elif a == 'detail': + id = req.GET.get('id') + a = Equipment.objects.filter(id=id).values('id','num','name','type','oem','udate','fdate','fnum','place','istz','iskey','state','cate__dickeyname','cate__dickeyid','parameter','img','area__name','area__id','zrbm__partid','zrr__userid','zrbm__partname','zrr__name','qrcode','riskact__name','riskact__id') + return JsonResponse(a[0]) + + +def apiinspect(req): + a = req.GET.get('a') + userid = req.session['userid'] + companyid = getcompany(userid) + if a=='listall': + a = Inspect.objects.filter(usecomp__partid=companyid) + total = a.count() + startnum,endnum=fenye(req) + a = a.order_by('-id')[startnum:endnum].values('id','state','content','creattime','equipment__num','equipment__name','equipment__area__name','user__name','user__ubelongpart__partname','trouble__yhzt','trouble__yhnum','trouble__yhms') + return HttpResponse(transjson(total,a),content_type="application/json") + elif a == 'listself': + a = Inspect.objects.filter(usecomp__partid=companyid,user__userid=userid) + total = a.count() + startnum,endnum=fenye(req) + a = a.order_by('-id')[startnum:endnum].values('id','state','content','creattime','equipment__num','equipment__name','equipment__area__name','user__name','user__ubelongpart__partname','trouble__yhzt','trouble__yhnum','trouble__yhms') + return HttpResponse(transjson(total,a),content_type="application/json") + elif a == 'listsearch': + a = Inspect.objects.filter(usecomp__partid=companyid) + qssj = req.GET.get('qssj') + jssj = req.GET.get('jssj') + xjbm= req.GET.get('xjbm') + xjr = req.GET.get('xjr') + state = req.GET.get('state') + if xjbm or xjr: + if xjr: + a = a.filter(user__userid=xjr) + else: + parts = Partment.objects.filter(partid=xjbm)|Partment.objects.filter(partlink__contains=','+xjbm+',') + a = a.filter(user__ubelongpart__in = parts) + if qssj: + a = a.filter(creattime__gte=qssj) + if jssj: + a = a.filter(creattime__lte=jssj) + if state: + a = a.filter(state=state) + total=a.count() + startnum,endnum=fenye(req) + a = a.order_by('-creattime')[startnum:endnum].values('id','state','content','creattime','equipment__num','equipment__name','equipment__area__name','user__name','user__ubelongpart__partname','trouble__yhzt','trouble__yhnum','trouble__yhms') + return HttpResponse(transjson(total,a),content_type="application/json") + elif a == 'exportexcel': + objs = Inspect.objects.filter(usecomp__partid=companyid) + qssj = req.GET.get('qssj') + jssj = req.GET.get('jssj') + xjbm= req.GET.get('xjbm') + xjr = req.GET.get('xjr') + state = req.GET.get('state') + if xjbm or xjr: + if xjr: + objs = objs.filter(user__userid=xjr) + else: + parts = Partment.objects.filter(partid=xjbm)|Partment.objects.filter(partlink__contains=','+xjbm+',') + objs = objs.filter(user__ubelongpart__in = parts) + if qssj: + objs = objs.filter(creattime__gte=qssj) + if jssj: + objs = objs.filter(creattime__lte=jssj) + if state: + objs = objs.filter(state=state) + res = exportxlsx('xj',objs) + return res + elif a=='add': + data = json.loads(req.body.decode('utf-8')) + a = Inspect() + equipment = data['equipment'] + state = data['state'] + if 'content' in data: + if data['content']: + content = data['content'] + a.content=content + if 'trouble' in data: + if data['trouble']: + a.trouble = Trouble.objects.get(troubleid=data['trouble']) + x = Equipment.objects.get(id=equipment) + a.equipment = x + a.state = state + x.state=state + x.save() + a.usecomp = Partment.objects.get(partid=companyid) + a.user = User.objects.get(userid=userid) + a.save() + return JsonResponse({"code":1}) + elif a == 'del': + id = req.GET.get('id') + user = User.objects.get(userid=userid) + obj = Inspect.objects.get(id=id) + if user.issuper==1 or obj.user==user: + obj.delete() + return JsonResponse({"code":1}) + else: + return JsonResponse({"code":0}) + elif a == 'detail': + id = req.GET.get('id') + a = Inspect.objects.filter(id=id).values('id','state','content','creattime','equipment__num','equipment__id','equipment__name','equipment__area__name','user__name','user__ubelongpart__partname','trouble__yhzt','trouble__yhnum','trouble__yhms','trouble__troubleid') + return JsonResponse(a[0]) + +def apiriskact(req): + a = req.GET.get('a') + userid = req.session['userid'] + companyid = getcompany(userid) + if a=='listall': + a = RiskAct.objects.filter(usecomp__partid=companyid) + if int(req.GET.get('area',0)): + a = a.filter(area__id = req.GET.get('area')) + if int(req.GET.get('type',0)): + a = a.filter(type__dickeyid=req.GET.get('type')) + total = a.count() + startnum,endnum=fenye(req) + a = a.order_by('area')[startnum:endnum].values('id','area__name','type__dickeyname','name','level','qrcode','group__groupname','zrbm__partname','zrr__name','gkcj') + return HttpResponse(transjson(total,a),content_type="application/json") + elif a=='listall2': + a = RiskAct.objects + if req.GET.get('area'): + a = a.filter(area__id = req.GET.get('area')) + total = a.count() + a = a.values('id','area__name','type__dickeyname','name','level','qrcode','group__groupname','zrbm__partname','zrr__name','gkcj') + return HttpResponse(transjson(total,a),content_type="application/json") + elif a=='listself': + groups = Group.objects.filter(users=User.objects.get(userid=userid)) + objs = RiskAct.objects.filter(group__in=groups) + if req.GET.get('area'): + objs = objs.filter(area__id = req.GET.get('area')) + if req.GET.get('type'): + objs = objs.filter(type__dickeyid=req.GET.get('type')) + total = objs.count() + startnum,endnum=fenye(req) + objs = objs.order_by('area')[startnum:endnum].values('id','area__name','type__dickeyname','name','level','qrcode','group__groupname','zrbm__partname','zrr__name','gkcj') + return HttpResponse(transjson(total,objs),content_type="application/json") + elif a == 'add': + data = json.loads(req.body.decode('utf-8')) + obj = RiskAct() + obj.area = Area.objects.get(id=data['area']) + obj.type = Dickey.objects.get(dickeyid=data['type']) + obj.name = data['name'] + obj.place = data['place'] if data['place'] else None + obj.usecomp = Partment.objects.get(partid=companyid) + obj.gkcj = data['gkcj'] + obj.zrbm = Partment.objects.get(partid=data['zrbm']) + obj.zrr = User.objects.get(userid=data['zrr']) + obj.group = Group.objects.get(groupid=data['group']) + obj.save() + obj.qrcode = makeqr_riskact('https://safeyun.ctcshe.com/miniprogram/riskact?id='+str(obj.id)) + obj.save() + return JsonResponse({'code':1}) + elif a == 'edit': + data = json.loads(req.body.decode('utf-8')) + obj = RiskAct.objects.get(id=data['id']) + obj.area = Area.objects.get(id=data['area']) + obj.type = Dickey.objects.get(dickeyid=data['type']) + obj.name = data['name'] + obj.place = data['place'] if data['place'] else None + obj.usecomp = Partment.objects.get(partid=companyid) + obj.gkcj = data['gkcj'] + obj.zrbm = Partment.objects.get(partid=data['zrbm']) + obj.zrr = User.objects.get(userid=data['zrr']) + obj.group = Group.objects.get(groupid=data['group']) + obj.save() + return JsonResponse({'code':1}) + elif a == 'detail': + obj = RiskAct.objects.filter(id=req.GET.get('id')) + num = Risk.objects.filter(riskact=obj[0]).count() + obj = obj.values('id','area__id','place','type__dickeyid','name','type__dickeyname','area__name','level','qrcode','gkcj','group__groupid','zrbm__partid','zrr__userid','group__groupname','zrbm__partname','zrr__name')[0] + obj['num']=num + return JsonResponse({'code':1,'data':obj}) + elif a == 'del': + id = req.GET.get('id') + user = User.objects.get(userid=userid) + if user.issuper==1: + obj = RiskAct.objects.get(id=id) + obj.delete() + try: + cal_area_risk_level(obj.area) + except: + pass + return JsonResponse({"code":1}) + else: + return JsonResponse({"code":0}) + elif a=='listalltask': + a = RiskAct.objects.filter(usecomp__partid=companyid,type__dickeyid=396) + total = a.count() + startnum,endnum=fenye(req) + a = a.order_by('-tasktype','group')[startnum:endnum].values('group__groupname','area__name','type__dickeyname','id','group__groupid','name','tasktype','tasktime') + return HttpResponse(transjson(total,a),content_type="application/json") + elif a == 'updatetask': + tasktype = int(req.POST.get('tasktype')) + riskacts = json.loads(req.POST.get('riskacts')) + firsttime = req.POST.get('firsttime') + if firsttime: + firsttime = datetime.strptime(str(firsttime), '%Y-%m-%d %H:%M') + tasktime=datetime.now()#任务开始时间 + if firsttime: + tasktime = firsttime + for x in riskacts: + obj = RiskAct.objects.get(id=x['id']) + obj.tasktype = tasktype + obj.tasktime = tasktime + obj.save() + RiskActTask.objects.filter(riskact=obj,usable=1,istask=1).update(usable=2) + if tasktype == 1: + RiskActTask.objects.create(riskact=obj,taskadd=tasktime,taskexpire = tasktime + timedelta(hours=8),istask=1) + elif tasktype == 2: + RiskActTask.objects.create(riskact=obj,taskadd=tasktime,taskexpire = tasktime + timedelta(days=1),istask=1) + elif tasktype == 3: + RiskActTask.objects.create(riskact=obj,taskadd=tasktime,taskexpire = tasktime + timedelta(days=7),istask=1) + return JsonResponse({"code":1}) + +def apirisk(req): + a = req.GET.get('a') + userid = req.session['userid'] + companyid = getcompany(userid) + if a=='listall': + a = Risk.objects.filter(usecomp__partid=companyid) + if req.GET.get('riskact'): + a = a.filter(riskact__id=req.GET.get('riskact')) + total = a.count() + else: + startnum,endnum=fenye(req) + total = a.count() + a = a[startnum:endnum] + a = a.values('id','step','hazard','result','level','riskl','riske','riskc','riskd','measure1','measure2','measure3','measure4','measure5','riskact__name','riskact__area__name','riskact__area__id','riskact__place') + return HttpResponse(transjson(total,a),content_type="application/json") + elif a=='listall2':#按风险点聚合 + a = Risk.objects.filter(usecomp__partid=companyid,riskact__type__dickeyid=396)#设备设施类 + total = a.count() + startnum,endnum=fenye(req) + a = a.order_by('-tasktype','group__groupid')[startnum:endnum].values('group__groupname','riskact__area__name','riskact__type__dickeyname','riskact__id','group__groupid','riskact__name','tasktype','tasktime').annotate(num = Count('group')) + return HttpResponse(transjson(total,a),content_type="application/json") + elif a == 'listself': + groups = Group.objects.filter(users=User.objects.get(userid=userid)) + a = Risk.objects.filter(group__in=groups).values('id','step','level','riskact__id','riskact__name','riskact__area__name','riskact__area__id').order_by('riskact__id','id') + total = a.count() + return HttpResponse(transjson(total,a),content_type="application/json") + elif a == 'detail': + obj = Risk.objects.filter(id=req.GET.get('id')) + data = obj.values('id','riskact__name','riskact__area__name','riskact__type__dickeyname','step','hazard','level','result','measure1','measure2','measure3','measure4','measure5','riskl','riske','riskc','riskd','riskact__group__groupname','riskact__zrbm__partname','riskact__zrr__name','riskact__gkcj') + return JsonResponse(data[0]) + elif a == 'steps': + data = json.loads(req.body.decode('utf-8')) + if req.GET.get('type') == 'equipment': + areaid = data['areaid'] + equipmentid = data['id'] + equipmentname = data['name'] + objs = Risk.objects.filter(usecomp__partid=companyid) + equipment = Equipment.objects.get(id=equipmentid) + if equipment.riskact:#如果该设备存在绑定的风险 + objs = objs.filter(riskact=equipment.riskact) + else: + objs = objs.filter(riskact__area__id=areaid,riskact__name__contains=equipmentname) + if objs.exists(): + return JsonResponse({'code':1,'steps':list(objs.values('id','step','hazard','result','level','riskact__group__groupname','riskact__zrbm__partname','riskact__zrr__name'))}) + else: + return JsonResponse({'code':0}) + elif a == 'del': + id = req.GET.get('id') + user = User.objects.get(userid=userid) + obj = Risk.objects.get(id=id) + obj.delete() + try: + cal_riskact_level(obj.riskact) + except: + pass + return JsonResponse({"code":1}) + elif a == 'add': + data = json.loads(req.body.decode('utf-8')) + obj = Risk() + obj.step = data['step'] + obj.hazard = data['hazard'] + obj.result = data['result'] + obj.measure1 = data['measure1'] if data['measure1'] else None + obj.measure2 = data['measure2'] if data['measure2'] else None + obj.measure3 = data['measure3'] if data['measure3'] else None + obj.measure4 = data['measure4'] if data['measure4'] else None + obj.measure5 = data['measure5'] if data['measure5'] else None + obj.riskact = RiskAct.objects.get(id=data['riskact']) + obj.createuser = User.objects.get(userid=userid) + obj.riskl = data['riskl'] + obj.riske = data['riske'] + obj.riskc = data['riskc'] + riskd = float(data['riskl'])*float(data['riske'])*float(data['riskc']) + obj.riskd = riskd + if riskd>=320: + obj.level='重大风险' + elif 320>riskd>=160: + obj.level='较大风险' + elif 160>riskd>=70: + obj.level='一般风险' + else: + obj.level='低风险' + obj.usecomp = Partment.objects.get(partid=companyid) + obj.save() + try: + cal_riskact_level(obj.riskact) + except: + pass + return JsonResponse({"code":1}) + elif a == 'update': + data = json.loads(req.body.decode('utf-8')) + obj = Risk.objects.get(id=data['id']) + obj.step = data['step'] + obj.hazard = data['hazard'] + obj.result = data['result'] + obj.measure1 = data['measure1'] if data['measure1'] else None + obj.measure2 = data['measure2'] if data['measure2'] else None + obj.measure3 = data['measure3'] if data['measure3'] else None + obj.measure4 = data['measure4'] if data['measure4'] else None + obj.measure5 = data['measure5'] if data['measure5'] else None + obj.createuser = User.objects.get(userid=userid) + obj.riskl = data['riskl'] + obj.riske = data['riske'] + obj.riskc = data['riskc'] + riskd = float(data['riskl'])*float(data['riske'])*float(data['riskc']) + obj.riskd = riskd + if riskd>=320: + obj.level='重大风险' + elif 320>riskd>=160: + obj.level='较大风险' + elif 160>riskd>=70: + obj.level='一般风险' + else: + obj.level='低风险' + obj.usecomp = Partment.objects.get(partid=companyid) + obj.save() + try: + cal_riskact_level(obj.riskact) + except: + pass + return JsonResponse({"code":1}) + elif a == 'update': + data = json.loads(req.body.decode('utf-8')) + obj = Risk.objects.get(id=data['id']) + obj.step = data['step'] + obj.hazard = data['hazard'] + obj.result = data['result'] + obj.measure1 = data['measure1'] if data['measure1'] else None + obj.measure2 = data['measure2'] if data['measure2'] else None + obj.measure3 = data['measure3'] if data['measure3'] else None + obj.measure4 = data['measure4'] if data['measure4'] else None + obj.measure5 = data['measure5'] if data['measure5'] else None + obj.createuser = User.objects.get(userid=userid) + obj.riskl = data['riskl'] + obj.riske = data['riske'] + obj.riskc = data['riskc'] + riskd = float(data['riskl'])*float(data['riske'])*float(data['riskc']) + obj.riskd = riskd + if riskd>=320: + obj.level='重大风险' + elif 320>riskd>=160: + obj.level='较大风险' + elif 160>riskd>=70: + obj.level='一般风险' + else: + obj.level='低风险' + obj.usecomp = Partment.objects.get(partid=companyid) + obj.save() + try: + cal_riskact_level(obj.riskact) + except: + pass + return JsonResponse({"code":1}) + +def apirisktask(req): + a = req.GET.get('a') + userid = req.session['userid'] + companyid = getcompany(userid) + if a == 'updates': + tasktype = int(req.POST.get('tasktype')) + risks = json.loads(req.POST.get('risks')) + firsttime = req.POST.get('firsttime') + if firsttime: + firsttime = datetime.strptime(str(firsttime), '%Y-%m-%d %H:%M') + for i in risks: + objs = Risk.objects.filter(riskact__id=i['riskact__id'],group__groupid=i['group__groupid']) + tasktime=datetime.now()#任务开始时间 + if firsttime: + tasktime = firsttime + # if tasktype == 1:#每班 + # tasktime = firsttime + timedelta(hours=8) + # elif tasktype == 2:#每天 + # tasktime = firsttime + timedelta(days=1) + # elif tasktype == 3:#每周 + # tasktime = firsttime + timedelta(weeks=1) + # elif tasktype == 4:#每月 + # tasktime = firsttime - timedelta(weeks=4) + objs.update(tasktype=tasktype,tasktime=tasktime) + for x in objs: + Risktask.objects.filter(risk=x,usable=1).update(usable=2) + if tasktype == 1: + Risktask.objects.create(risk=x,group=x.group,taskadd=tasktime,taskexpire = tasktime + timedelta(hours=8)) + elif tasktype == 2: + Risktask.objects.create(risk=x,group=x.group,taskadd=tasktime,taskexpire = tasktime + timedelta(days=1)) + elif tasktype == 3: + Risktask.objects.create(risk=x,group=x.group,taskadd=tasktime,taskexpire = tasktime + timedelta(days=7)) + return JsonResponse({"code":1}) + elif a == 'list2todo': + groups = Group.objects.filter(users__userid=userid) + objs = Risktask.objects.filter(group__in=groups,usable=1).values('risk__group__groupname','risk__riskact__area__name','risk__riskact__type__dickeyname','risk__riskact__id','risk__group__groupid','risk__riskact__name','risk__riskact__level','risk__tasktype','taskadd','taskexpire','user__userid').annotate(num = Count('risk__group')) + total = objs.count() + startnum,endnum=fenye(req) + objs = objs[startnum:endnum] + return HttpResponse(transjson(total,objs),content_type="application/json") + elif a == 'todonum': + groups = Group.objects.filter(users__userid=userid) + objs = Risktask.objects.filter(group__in=groups,usable=1,user=None).annotate(num = Count('risk__group')) + total = objs.count() + return JsonResponse({"code":1,"todonum":total}) + elif a == 'list2done': + groups = Group.objects.filter(users__userid=userid) + objs = Risktask.objects.filter(Q(group__in=groups)|Q(user__userid=userid),usable__in=[0,2]).values('risk__group__groupname','risk__riskact__area__name','risk__riskact__type__dickeyname','risk__riskact__id','risk__tasktype','taskadd','taskexpire','user__userid','usable').annotate(num = Count('risk__group')) + total = objs.count() + startnum,endnum=fenye(req) + objs = objs[startnum:endnum] + return HttpResponse(transjson(total,objs),content_type="application/json") + elif a == 'listalltodo': #全厂待办 + groups = Group.objects.filter(usecomp__partid=companyid) + objs = Risktask.objects.filter(group__in=groups,usable=1).values('risk__group__groupname','risk__riskact__area__name','risk__riskact__type__dickeyname','risk__riskact__id','risk__group__groupid','risk__riskact__name','risk__riskact__level','risk__tasktype','taskadd','taskexpire','user__userid').annotate(num = Count('risk__group')) + total = objs.count() + startnum,endnum=fenye(req) + objs = objs[startnum:endnum] + return HttpResponse(transjson(total,objs),content_type="application/json") + elif a == 'listall': #全厂任务聚合 + groups = Group.objects.filter(usecomp__partid=companyid) + objs = Risktask.objects.filter(group__in=groups).order_by('-usable','risk__group__groupid').values('risk__group__groupname','risk__riskact__area__name','risk__riskact__type__dickeyname','risk__riskact__id','risk__group__groupid','risk__riskact__name','risk__riskact__level','risk__tasktype','taskadd','taskexpire','user__userid','usable').annotate(num = Count('risk__group')) + total = objs.count() + startnum,endnum=fenye(req) + objs = objs[startnum:endnum] + return HttpResponse(transjson(total,objs),content_type="application/json") + elif a == 'listtask': + objs = Risktask.objects.filter(usable=1,risk__riskact__usecomp__partid=companyid) + if req.GET.get('riskact'): + objs = objs.filter(risk__riskact__id=req.GET.get('riskact')) + if req.GET.get('group'): + objs = objs.filter(group__groupid=req.GET.get('group')) + total = objs.count() + startnum,endnum=fenye(req) + objs = objs[startnum:endnum].values('id','risk__id','risk__step','risk__hazard','risk__level','risk__result','risk__measure1','risk__measure2','risk__measure3','risk__measure4','risk__measure5','risk__riskact__area__name','risk__riskact__area__id','risk__riskact__place','trouble__yhnum','user__userid','user__name','user__ubelongpart__partname','taskdo') + return HttpResponse(transjson(total,objs),content_type="application/json") + elif a == 'checktrouble':#发现隐患 + data = json.loads(req.body.decode('utf-8')) + trouble = data['trouble'] + risktask = data['risktask'] + Risktask.objects.filter(id=risktask).update(trouble=Trouble.objects.get(troubleid=trouble)) + obj = Risktask.objects.get(id=risktask) + Riskcheck.objects.create(risk=obj.risk,user=User.objects.get(userid=userid),risktask=obj,trouble=Trouble.objects.get(troubleid=trouble)) + return JsonResponse({'code':1}) + elif a == 'update': #风险点检查更新 + data = json.loads(req.body.decode('utf-8')) + nowtime = datetime.now() + Risktask.objects.filter(id__in=data['tasks']).update(user=User.objects.get(userid=userid),taskdo=nowtime) + for i in data['tasks']: + objs = Riskcheck.objects.filter(risktask__id=i) + if objs.exists(): + objs.update(dotime=nowtime) + else: + obj = Risktask.objects.get(id=i) + Riskcheck.objects.create(risk=obj.risk,user=User.objects.get(userid=userid),risktask=obj,dotime=nowtime) + return JsonResponse({'code':1}) + +def apiriskacttask(req): + a = req.GET.get('a') + userid = req.session['userid'] + companyid = getcompany(userid) + if a == 'listalltask': #全厂任务 + objs = RiskActTask.objects.filter(riskact__usecomp__partid=companyid,istask=1).order_by('-usable','riskact__group__groupid').values('riskact__group__groupname','riskact__area__name','riskact__type__dickeyname','riskact__id','riskact__group__groupid','riskact__name','riskact__level','riskact__tasktype','taskadd','taskexpire','user__userid','usable','taskdo','user__name') + total = objs.count() + startnum,endnum=fenye(req) + objs = objs[startnum:endnum] + return HttpResponse(transjson(total,objs),content_type="application/json") + elif a == 'listall': #全厂排查记录 + objs = RiskActTask.objects.filter(riskact__usecomp__partid=companyid).exclude(user=None) + if req.GET.get('pcbm'): + parts = getparts(req.GET.get('pcbm')) + objs = objs.filter(user__ubelongpart__in=parts) + if req.GET.get('qssj'): + objs = objs.filter(taskdo_gte=req.GET.get('qssj')) + if req.GET.get('jssj'): + objs = objs.filter(taskdo__lte=req.GET.get('jssj')) + total = objs.count() + startnum,endnum=fenye(req) + objs = objs[startnum:endnum].values('id','riskact__name','riskact__area__name','riskact__place','taskdo','state','user__ubelongpart__partname','user__name','taskdo') + return HttpResponse(transjson(total,objs),content_type="application/json") + elif a == 'listalltodo': #全厂待办任务 + objs = RiskActTask.objects.filter(riskact__usecomp__partid=companyid,istask=1,user=None) + total = objs.count() + startnum,endnum=fenye(req) + objs = objs[startnum:endnum].values('id','riskact__group__groupname','riskact__area__name','riskact__type__dickeyname','riskact__id','riskact__group__groupid','riskact__name','riskact__level','riskact__tasktype','taskadd','taskexpire','user__userid','usable') + return HttpResponse(transjson(total,objs),content_type="application/json") + elif a == 'listself':#排查记录 + a = RiskActTask.objects.filter(user__userid=userid) + total = a.count() + startnum,endnum=fenye(req) + a = a.order_by('-id')[startnum:endnum].values('id','riskact__level','riskact__name','riskact__area__name','riskact__place','taskdo','state','usable','riskact__group__groupname','taskadd','taskexpire','user__userid','riskact__id') + return HttpResponse(transjson(total,a),content_type="application/json") + elif a == 'listmytodo':#待办 + groups = Group.objects.filter(users__userid=userid) + objs = RiskActTask.objects.filter(riskact__group__in=groups,usable=1,istask=1,user=None) + total = objs.count() + startnum,endnum=fenye(req) + objs = objs[startnum:endnum].values('id','riskact__group__groupname','riskact__area__name','riskact__type__dickeyname','riskact__id','riskact__group__groupid','riskact__name','riskact__level','riskact__tasktype','taskadd','taskexpire','user__userid') + return HttpResponse(transjson(total,objs),content_type="application/json") + elif a == 'todonum': + groups = Group.objects.filter(users__userid=userid) + objs = RiskActTask.objects.filter(riskact__group__in=groups,usable=1,user=None) + total = objs.count() + return JsonResponse({"code":1,"todonum":total}) + # elif a == 'listmydone': + # groups = Group.objects.filter(users__userid=userid) + # objs = Risktask.objects.filter(Q(group__in=groups)|Q(user__userid=userid),usable__in=[0,2]).values('risk__group__groupname','risk__riskact__area__name','risk__riskact__type__dickeyname','risk__riskact__id','risk__tasktype','taskadd','taskexpire','user__userid','usable').annotate(num = Count('risk__group')) + # total = objs.count() + # startnum,endnum=fenye(req) + # objs = objs[startnum:endnum] + # return HttpResponse(transjson(total,objs),content_type="application/json") + +def apiriskcheck2(req): + a = req.GET.get('a') + userid = req.session['userid'] + companyid = getcompany(userid) + if a == 'add': + nowtime = datetime.now() + data = json.loads(req.body.decode('utf-8')) + checkrisks = data['checks'] + user = User.objects.get(userid=userid) + objs = RiskActTask.objects.filter(riskact__id=data['riskact'],usable=1,user=None,istask=1)#匹配未处理的任务 + if objs.exists(): + obj=objs[0] + obj.user=user + obj.taskdo=nowtime + obj.save() + else: + obj = RiskActTask() + obj.riskact = RiskAct.objects.get(id=data['riskact']) + obj.user=user + obj.istask=0 + obj.taskdo=nowtime + obj.save() + for i in checkrisks: + risk = Risk.objects.get(id=i['id']) + if 'trouble' in i: + Riskcheck2.objects.create(risk=risk,riskacttask=obj,trouble=Trouble.objects.get(troubleid=i['trouble']),dotime=nowtime) + obj.state=0 + obj.save() + else: + Riskcheck2.objects.create(risk=risk,riskacttask=obj,dotime=nowtime) + return JsonResponse({'code':1}) + elif a == 'listall': + objs = Riskcheck2.objects.filter(risk__usecomp__partid=companyid) + if req.GET.get('riskacttask'): + objs = objs.filter(riskacttask__id=req.GET.get('riskacttask')) + total = objs.count() + startnum,endnum=fenye(req) + objs = objs.order_by('-id')[startnum:endnum].values('id','risk__step','risk__level','trouble__yhnum','risk__hazard','risk__result','risk__measure1','risk__measure2','risk__measure3','risk__measure4','risk__measure5') + return HttpResponse(transjson(total,objs),content_type="application/json") + +def apiriskcheck(req): + a = req.GET.get('a') + userid = req.session['userid'] + companyid = getcompany(userid) + if a == 'add': + nowtime = datetime.now() + data = json.loads(req.body.decode('utf-8'))['checks'] + for i in data: + risk = Risk.objects.get(id=i['id']) + if 'trouble' in i: + Riskcheck.objects.create(risk=risk,user=User.objects.get(userid=userid),trouble=Trouble.objects.get(troubleid=i['trouble']),dotime=nowtime) + objs = Risktask.objects.filter(risk=risk,usable=1,user=None) + if objs.exists(): + objs.update(user=User.objects.get(userid=userid),taskdo=nowtime,trouble=Trouble.objects.get(troubleid=i['trouble'])) + else: + Riskcheck.objects.create(risk=risk,dotime=nowtime,user=User.objects.get(userid=userid)) + objs = Risktask.objects.filter(risk=risk,usable=1,user=None) + if objs.exists(): + objs.update(user=User.objects.get(userid=userid),taskdo=nowtime) + return JsonResponse({'code':1}) + elif a == 'listself': + a = Riskcheck.objects.filter(user__userid=userid) + total = a.count() + startnum,endnum=fenye(req) + a = a.order_by('-id')[startnum:endnum].values('id','risk__step','risk__level','risk__riskact__name','risk__riskact__area__name','risk__riskact__place','dotime','trouble__yhnum') + return HttpResponse(transjson(total,a),content_type="application/json") + elif a == 'listall': + objs = Riskcheck.objects.filter(user__usecomp__partid=companyid) + if req.GET.get('pcbm'): + parts = getparts(req.GET.get('pcbm')) + objs = objs.filter(user__ubelongpart__in=parts) + if req.GET.get('qssj'): + objs = objs.filter(dotime_gte=req.GET.get('qssj')) + if req.GET.get('jssj'): + objs = objs.filter(dotime__lte=req.GET.get('jssj')) + total = objs.count() + startnum,endnum=fenye(req) + objs = objs.order_by('-id')[startnum:endnum].values('id','risk__step','risk__level','risk__riskact__name','risk__riskact__area__name','risk__riskact__place','dotime','trouble__yhnum','user__ubelongpart__partname','user__name') + return HttpResponse(transjson(total,objs),content_type="application/json") + +def apireport(req): + a = req.GET.get('a') + userid = req.session['userid'] + if a == 'detail': + year = req.GET.get('year') + month = req.GET.get('month') + part = req.GET.get('part') + objs = Report.objects.filter(year=year,month=month) + if part and part !='undefined': + objs = objs.filter(part__partid=part) + else: + objs = objs.filter(part=User.objects.get(userid=userid).usecomp) + if objs.exists(): + return JsonResponse({'code':1,'data':objs.values('id','cause','suggest')[0]}) + else: + return JsonResponse({'code':0,'data':''}) + elif a == 'add': + data = json.loads(req.body.decode('utf-8')) + year = req.GET.get('year') + month = req.GET.get('month') + part = req.GET.get('part') + if part: + objs = Report.objects.filter(year=year,month=month,part__partid=part) + else: + objs = Report.objects.filter(year=year,month=month,part=User.objects.get(userid=userid).usecomp) + if objs.exists(): + obj = objs[0] + else: + obj = Report() + obj.year =year + obj.month = month + if part: + obj.part=Partment.objects.get(partid=part) + else: + obj.part = User.objects.get(userid=userid).usecomp + obj.cause = data['cause'] + obj.suggest = data['suggest'] + obj.save() + return JsonResponse({'code':1}) + + +#公司信息展示 +def companyinfo(req): + message='' + try: + user = User.objects.filter(pk=req.session['userid']) + companyid = getcompany(req.session['userid']) + companyname = Partment.objects.get(partid=companyid).partname + # 生成CompanyInof的model对象 + companyinfo = CompanyInfo.objects.get_or_create(partment_id=companyid)[0] + except Exception as e: + raise + # message='操作错误' + # return render( req, 'companyinfo.html',{'message': message}) + + if req.method == 'POST': + companyinfo_form = forms.CompanyInfoForm(req.POST) + if companyinfo_form.is_valid(): + companyinfo.name = companyinfo_form.cleaned_data.get('name') + companyinfo.address = companyinfo_form.cleaned_data.get('address') + companyinfo.nature = companyinfo_form.cleaned_data.get('nature') + companyinfo.fixed_assets = companyinfo_form.cleaned_data.get('fixed_assets') + companyinfo.introduce = companyinfo_form.cleaned_data.get('introduce') + companyinfo.legalperson = companyinfo_form.cleaned_data.get('legalperson') + companyinfo.legalperson_phone = companyinfo_form.cleaned_data.get('legalperson_phone') + companyinfo.liaison = companyinfo_form.cleaned_data.get('liaison') + companyinfo.liaison_fax = companyinfo_form.cleaned_data.get('liaison_fax') + companyinfo.liaison_phone = companyinfo_form.cleaned_data.get('liaison_phone') + companyinfo.peoplenum = companyinfo_form.cleaned_data.get('peoplenum') + companyinfo.website = companyinfo_form.cleaned_data.get('website') + companyinfo.save() + #html = 'companyinfo.html' + #return redirect('/withmenu/', html="companyinfo.html") + #return HttpResponseRedirect("/withmenu/?html=companyinfo.html") + return JsonResponse({'code':1}) + from django.forms import model_to_dict + companyinfo_form = forms.CompanyInfoForm(model_to_dict(companyinfo)) + return render(req, 'companyinfo.html', + {'companyinfo': companyinfo_form}) + +import json +from captcha.models import CaptchaStore +from captcha.helpers import captcha_image_url +def refresh_captcha(request): + hashkey = CaptchaStore.generate_key() + image_url = captcha_image_url(hashkey) + return HttpResponse(json.dumps({'key': hashkey, 'image_url': image_url}), content_type='application/json') + +def dump(obj): + print('\n'.join(['%s:%s' % item for item in obj.__dict__.items()])) + +#教育培训统计图 +def trainfg(req): + a = req.GET.get('a') + userid = req.session['userid'] + companyid = getcompany(userid) + + if a == 'trainfig': + year = int(req.GET.get('year')) + months = [1,2,3,4,5,6,7,8,9,10,11,12] + companylevel=[]#公司级 + workshoplevel=[]#车间/工段级 + teamlevel=[]#班组级 + departmentlevel =[]#部门分厂级 + for month in months: + first_day,first_day_of_next_month = gettime(datetime(year,month,1)) + + a = Train.objects.filter(usecomp__partid=companyid,deletemark=1,starttime__range=(first_day, first_day_of_next_month)) + companylevel.append(a.filter(trainlevel__dicid=5).count()) + workshoplevel.append(a.filter(trainlevel__dicid=6).count()) + teamlevel.append(a.filter(trainlevel__dicid=7).count()) + departmentlevel.append(a.filter(trainlevel__dicid=42).count()) + return JsonResponse({'code':1,'companylevel':companylevel,'workshoplevel':workshoplevel,'teamlevel':teamlevel,'departmentlevel':departmentlevel}) + elif a=='trainuser': + a = Trainuser.objects.filter(participant__usecomp__partid=companyid) + if req.GET.get('qssj'): + a = a.filter(train__submittime__gte=req.GET.get('qssj')) + if req.GET.get('jssj'): + a = a.filter(train__submittime__lte=req.GET.get('jssj')) + if req.GET.get('fxbm'): + fxbm = req.GET.get('fxbm') + parts = Partment.objects.filter(partlink__contains=',' + fxbm + ',')|Partment.objects.filter(partid=fxbm) + a = a.filter(participant__ubelongpart__in=parts) + total = a.count() + objs = a.values('participant__name','participant__username').annotate(count=Count('participant__userid')) + return HttpResponse(transjson(total,objs),content_type="application/json") + elif a=='traintype': + year = int(req.GET.get('year')) + month = int(req.GET.get('month')) + traintypelist=[] + + first_day,first_day_of_next_month = gettime(datetime(year,month,1)) + a = Train.objects.filter(usecomp__partid=companyid,deletemark=1,starttime__range=(first_day, first_day_of_next_month)) + for i in Dickey.objects.filter(Q(usecomps__contains=',1,' )|Q(usecomps__contains=','+str(companyid)+','),dicparent_id=8): + count=a.filter(traintype__dickeyid=i.dickeyid).count() + dickeyname=i.dickeyname + traintypelist.append({'value':count,'name':dickeyname}) + return HttpResponse(json.dumps({'code':1,'data':{'traintypelist':list(traintypelist)}}), content_type='application/json') +#设备统计图 + +def equipmentfig(req): + a = req.GET.get('a') + userid = req.session['userid'] + companyid = getcompany(userid) + + if a=='state': + # year = int(req.GET.get('year')) + # month = int(req.GET.get('month')) + # first_day,first_day_of_next_month = gettime(datetime(year,month,1)) + a = Equipment.objects.filter(usecomp__partid=companyid,deletemark=1) + normal = a.filter(state=1).count()#正常 + abnormal = a.filter(state=0).count()#异常 + return JsonResponse({"code":1,"normal":normal,"abnormal":abnormal}) + elif a=='eqmcount': + eqmlist=Equipment.objects.filter(usecomp__partid=companyid,deletemark=1).values('area__name').annotate(num = Count('area')) + + return HttpResponse(json.dumps({'code':1,'data':{'eqmlist':list(eqmlist)}}), content_type='application/json')