safesite/safesite/views.py

8375 lines
364 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from captcha.helpers import captcha_image_url
from captcha.models import CaptchaStore
from django.shortcuts import render, redirect
from django.http import HttpResponse, HttpResponseRedirect, JsonResponse
from .models import *
from django.template import RequestContext
from django.views.decorators.csrf import csrf_exempt
from django.core import serializers
from django.conf import settings
from django.views.generic import TemplateView
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, Avg
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,drtodotroubles
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
import re
import pickle
import random
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页面
class EquipmentCheckFormUpdateView(TemplateView):
template_name='equipmentcheckformupdate.html'
class EquipmentCheckFormAddView(TemplateView):
template_name='equipmentcheckformadd.html'
class EquipmentCheckFormView(TemplateView):
template_name='equipmentcheckform.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, kind):
return render(req, 'riskactadd.html', {'kind':kind})
def riskadd(req, id):
return render(req, 'riskadd.html', {'id': id})
def risk(req, kind):
return render(req, 'risk.html', {'kind': kind})
def gridtaskset(req):
return render(req, 'gridtaskset.html')
def gridtasksetadd(req, riskact):
return render(req, 'gridtasksetadd.html', {'riskact': riskact})
def gridtasksetedit(req, id):
return render(req, 'gridtasksetedit.html', {'id': id})
def inspect(req):
return render(req, 'inspect.html')
def inspectdetail(req, id):
return render(req, 'inspectdetail.html', {'id':id})
def inspectitem(req):
return render(req, 'inspectitem.html')
def inspectitemdetail(req, id):
return render(req, 'inspectitemdetail.html', {'id':id})
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 fxcsedit(req, id):
return render(req, 'fxcsedit.html', {'id': id})
def operationadd(req):
return render(req, 'operationadd.html')
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 resbility(req):
return render(req, 'resbility.html')
def addresbility(req):#责任制
return render(req,'resbilityadd.html')
def resbilitydetail(req, id):
return render(req, 'resbilitydetail.html', {'id': id})
def operproce(req):#操作规程
return render(req, 'operproce.html')
def addoperproce(req):#责任制
return render(req,'operproceadd.html')
def operprocedetail(req, id):
return render(req, 'operprocedetail.html', {'id': id})
def datashow2(req):
return render(req,'datashow2.html')
def checkdetail(req,id):
return render(req,'checkdetail.html',{'id':id})
def checktask(req):#检查项目
return render(req, 'checktable.html')
def addchecktask(req):#责任制
return render(req,'checktabadd.html')
def checkjob(req):
return render(req,'checkjob.html')
def addcheckjob(req,id):
return render(req,'checkjobadd.html', {'id': id})
def checklist(req):
return render(req,'checklist.html')
def addcheckrw(req):
return render(req,'checklistadd.html')
def addcheckrw2(req):
return render(req,'checklistadd2.html')
def detailjob(req,id):
return render(req,'checkjobdetail.html',{'id':id})
def updchecktable(req,id):
return render(req,'checktabupd.html',{'id':id})
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 checkpw(data): #密码复杂度校验
reg = re.compile('(?=.*[0-9])(?=.*[a-zA-Z]).{8,30}')
return re.match(reg,data)
def init_permission(user,req):
permission_dict = {}
x = []
if user.issuper==1:
menus = user.usecomp.role.permissions.all()
else:
bgroups = user.userg.filter(usecomp=user.usecomp) #所属公司的用户组
if bgroups:
for i in bgroups:
if i.menulist:
x.extend(i.menulist)
menus = Menu.objects.exclude(menuid__in=[11, 9]).filter(menuid__in=list(set(x)), deletemark=1)
for item in menus:
permission_dict[item.menucode] = ({
'url':item.url,
'parentid':item.parentid.menuid if item.parentid else None,
'id': item.menuid,
'name': item.menuname,
})
req.session['permissions'] = permission_dict
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)
init_permission(user[0],req)
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)
pwstr = 0
if checkpw(user.password):
pwstr = 1
companyname = user.usecomp.partname
name = user.name
openid = user.openid
headimgurl = user.headimgurl
nickname = user.nickname
issuper = user.issuper
token = user.token
return render(req, 'index.html', locals())
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']
menus = []
user = User.objects.get(userid=userid)
if user.issuper == 1: # 如果是超管
menus = user.usecomp.role.permissions.filter(type=1).exclude(menuid__in=[11, 9]).order_by(
'sortnum').values('menuid', 'menucode', 'parentid', 'url', 'menuname', 'icon').distinct()
else:
bgroups = user.userg.all()
x = []
for i in bgroups:
x.extend(i.menulist)
menus = Menu.objects.exclude(menuid__in=[11, 9]).filter(menuid__in=list(set(x)), deletemark=1,type=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).menulist
userid = req.session['userid']
user = User.objects.get(userid=userid)
allrights = user.usecomp.role.permissions.all()
menus = allrights.exclude(menuid__in=[11, 9]).order_by(
'sortnum').values('menuid', 'menucode', 'parentid', 'url', 'menuname', 'icon').distinct()
if haverights:
for i in menus:
if i['menuid'] in haverights:
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(i['id'])
Group.objects.filter(groupid=groupid).update(
menulist=list(set(rlist)))
return JsonResponse({"code": 1})
elif a == 'have':
userid = req.session['userid']
user = User.objects.get(userid=userid)
allrights = list(user.usecomp.role.permissions.all().values_list('menuid',flat=True))
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 ''
yhlxo = yhdata['yhlxo'] if 'yhlxo' 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 yhlxo:
a.yhlxo = Dickey.objects.get(dickeyid=yhlxo)
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).order_by('groupid').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('-fxsj')[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('-fxsj')[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('-fxsj')[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')
fxrname = req.GET.get('fxrname',None)
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))
if fxrname:
a = a.filter(fxr__name=fxrname)
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('-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')
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'):
parts = Partment.objects.filter(Q(partid=i.partid)|Q(partlink__contains=','+str(i.partid)+','))
x = Train.objects.filter(trainpart__in=parts, 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'):
parts = Partment.objects.filter(Q(partid=i.partid)|Q(partlink__contains=','+str(i.partid)+','))
x = Drill.objects.filter(drillpart__in=parts, 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 = User.objects.get(userid=a)
user.deletemark=0
user.save()
bgroups = user.userg.all()#该用户所属用户组
for i in bgroups:
i.users.remove(user)
for i in Partment.objects.filter(Q(aqy__contains=','+str(a)+',')|Q(bmzg__contains=','+str(a)+',')|Q(bsq__contains=','+str(a)+',')):#从部门权限中移除
i.aqy = i.aqy.replace(','+str(a)+',',',')
i.bmzg = i.bmzg.replace(','+str(a)+',',',')
i.bsq = i.bsq.replace(','+str(a)+',',',')
i.save()
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)
if partobj.iscompany==1:
partobj.partname = partname
partobj.save()
else:
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(Q(partlink__contains=','+companyid+',') | Q(partid=companyid),Q(deletemark=1))
).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') == 'tree4':#不能选自己部门及以下
userid = req.session['userid']
companyid = getcompany(userid)
expart = req.GET.get('expart')
list_items = (Partment.objects.filter(Q(partlink__contains=','+companyid+',') | Q(partid=companyid),Q(deletemark=1)).exclude(Q(partid=expart)|Q(partlink__contains=','+expart+','))).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+',',deletemark=1)).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 = User.objects.get(userid=userid)
if user.openid:
User.objects.filter(openid=user.openid).update(openid=None,headimgurl=None, nickname=None, mpopenid=None)
user.openid=None
user.headimgurl=None
user.nickname=None
user.mpopenid=None
user.save()
return JsonResponse({"code": 1})
def unbindmp(req): #解绑小程序仅仅置空mpopenid
userid = req.session['userid']
user = User.objects.get(userid=userid)
if user.mpopenid:
User.objects.filter(mpopenid=user.mpopenid).update(mpopenid=None)
user.mpopenid=None
user.save()
req.session.flush() #清除登陆态
return JsonResponse({"code": 1})
def vewechat(req):
return HttpResponse('201810170853050zbwtyaxirqeb757umcehktirlemh2ib10kcdovka13hchyf4s', content_type="text/plain")
def vewechat2(req):
return redirect('/media/verify/boUR15vyNu.txt')
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']
objs = User.objects.filter(mpopenid=mpopenid)
if objs.exists():
a = objs[0]
userid = a.userid
username = a.username
req.session['userid'] = userid
allrights = list(a.usecomp.role.permissions.all().values_list('menuid',flat=True))
# print(req.session,req.COOKIES)
return JsonResponse({"code": 1, 'userid': userid, 'username': username, 'mpopenid': mpopenid,'openid':a.openid, 'nickname':a.nickname, 'headimgurl':a.headimgurl, 'companyid':a.usecomp.partid, 'rights': allrights, 'name':a.name})
else:
return JsonResponse({"code": 0, 'mpopenid': mpopenid})
def bindmp(req):
data = json.loads(req.body.decode('utf-8'))
username = data['username']
password = data['password']
mpopenid = data['mpopenid']
userinfo = data['userInfo']
# 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,headimgurl=userinfo['avatarUrl'],nickname=userinfo['nickName'])
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, menulist=menurights)
Group.objects.create(
groupname='安全员', grouptype=1, usecomp=part, menulist=menurights)
Group.objects.create(
groupname='全体用户', grouptype=3, usecomp=part, menulist=menurights)
z = Group(groupname='主管', grouptype=2,
usecomp=part, menulist=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})
elif a == 'todotrouble':
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 = drtodotroubles(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') < i['有效期结束时间']:
obj.yfsrq = i['应复审日期'] if i['应复审日期'] else None
obj.yxqkssj = i['有效期开始时间'] if i['有效期开始时间'] else None
obj.yxqjssj = i['有效期结束时间'] if i['有效期结束时间'] else None
obj.sjfssj = i['实际复审时间'] if i['实际复审时间'] else None
try:
zsst = guoqi(i['应复审日期'])
obj.zszt = zsst
except:
pass
obj.save()
try:
obj = Userprofile.objects.get(user__userid=userid)
obj.realname = realname
obj.cardnum = cardnum
obj.gender = gender
obj.save()
except Userprofile.DoesNotExist:
obj = Userprofile(user=User.objects.get(
userid=userid), realname=realname, cardnum=cardnum, gender=gender)
obj.save()
return JsonResponse({"code": 1})
else:
return JsonResponse({"code": 0})
elif a == 'addspiderself':
userid = req.session['userid']
a = Userprofile.objects.get(user__userid=userid)
realname = a.realname
cardnum = a.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') < i['有效期结束时间']:
obj.yfsrq = i['应复审日期'] if i['应复审日期'] else None
obj.yxqkssj = i['有效期开始时间'] if i['有效期开始时间'] else None
obj.yxqjssj = i['有效期结束时间'] if i['有效期结束时间'] else None
obj.sjfssj = i['实际复审时间'] if i['实际复审时间'] else None
try:
zsst = guoqi(i['应复审日期'])
obj.zszt = zsst
except:
pass
obj.save()
return JsonResponse({"code": 1})
elif a == 'del':
id = req.GET.get('id')
userid = req.session['userid']
a = Socertificate.objects.get(id=id)
if User.objects.get(userid=userid).issuper == 1:
a.delete()
return JsonResponse({"code": 1})
else:
return JsonResponse({"code": 0})
elif a == 'detail':
id = req.GET.get('id')
a = Socertificate.objects.filter(id=id).values(
'id', 'realname', 'gender', 'zylb', 'czxm', 'fzjg', 'ccfzrq', 'yfsrq', 'yxqkssj', 'yxqjssj', 'sjfssj')
return JsonResponse(a[0])
elif a == 'getjson':
cardnum = req.GET.get('cardnum')
realname = req.GET.get('realname')
return JsonResponse({"code": 1, "data": getTzzs(cardnum, realname)})
elif a == 'updateTzzs':
updateTzzs()
def guoqi(x):
now = datetime.now()
now1 = datetime.now() + timedelta(days=180)
if datetime.strptime(x, '%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') < i['有效期结束时间']:
obj.yfsrq = i['应复审日期'] if i['应复审日期'] else None
obj.yxqkssj = i['有效期开始时间'] if i['有效期开始时间'] else None
obj.yxqjssj = i['有效期结束时间'] if i['有效期结束时间'] else None
try:
zsst = guoqi(i['应复审日期'])
obj.zszt = zsst
except:
pass
obj.save()
try:
obj = Userprofile.objects.get(user__userid=userid)
obj.realname = realname
obj.cardnum = cardnum
obj.gender = gender
obj.save()
except Userprofile.DoesNotExist:
obj = Userprofile(user=User.objects.get(
userid=userid), realname=realname, cardnum=cardnum, gender=gender)
obj.save()
return JsonResponse({"code": 1})
else:
return JsonResponse({"code": 0})
elif a == 'addspiderself':
userid = req.session['userid']
a = Userprofile.objects.get(user__userid=userid)
realname = a.realname
cardnum = a.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 = Socertificate.objects.get(
cardnum=cardnum, czxm=i['资格类型'])
if obj.yxqjssj.strftime('%Y-%m-%d') < i['有效期结束时间']:
obj.yfsrq = i['应复审日期'] if i['应复审日期'] else None
obj.yxqkssj = i['有效期开始时间'] if i['有效期开始时间'] else None
obj.yxqjssj = i['有效期结束时间'] if i['有效期结束时间'] else None
try:
zsst = guoqi(i['应复审日期'])
obj.zszt = zsst
except:
pass
obj.save()
return JsonResponse({"code": 1})
elif a == 'del':
id = req.GET.get('id')
userid = req.session['userid']
a = Safecert.objects.get(id=id)
if User.objects.get(userid=userid).issuper == 1:
a.delete()
return JsonResponse({"code": 1})
else:
return JsonResponse({"code": 0})
elif a == 'detail':
id = req.GET.get('id')
a = Safecert.objects.filter(id=id).values(
'id', 'realname', 'gender', 'zglx', 'dwlx', 'fzjg', 'yfsrq', 'yxqkssj', 'yxqjssj', 'zszt', 'url')
return JsonResponse(a[0])
elif a == 'getjson':
cardnum = req.GET.get('cardnum')
realname = req.GET.get('realname')
return JsonResponse({"code": 1, "data": getAqzs(cardnum, realname)})
elif a == 'updateAqzs':
updateAqzs()
def apipartuser(req):
a = req.GET.get('a')
if a == 'getall':
userid = req.session['userid']
if req.GET.get('parentid') == 'company':
lst = []
company = User.objects.get(userid=userid).usecomp
partobjs = Partment.objects.filter(parentid=company, deletemark=1)
for i in partobjs:
lst.append({'id': i.partid, 'name': i.partname, 'parentId': 0,
'checked': False, 'isPeople': False, 'children': []})
userobjs = User.objects.filter(
ubelongpart=company, deletemark=1).exclude(issuper=1)
for i in userobjs:
lst.append({'id': i.userid, 'name': i.name, 'parentId': 0,
'checked': False, 'isPeople': True, 'children': []})
return JsonResponse({"code": 1, "data": lst})
else:
lst = []
partobjs = Partment.objects.filter(
parentid=req.GET.get('parentid'), deletemark=1)
for i in partobjs:
lst.append({'id': i.partid, 'name': i.partname, 'parentId': 0,
'checked': False, 'isPeople': False, 'children': []})
userobjs = User.objects.filter(ubelongpart=req.GET.get(
'parentid'), deletemark=1).exclude(issuper=1)
for i in userobjs:
lst.append({'id': i.userid, 'name': i.name, 'parentId': 0,
'checked': False, 'isPeople': True, 'children': []})
return JsonResponse({"code": 1, "data": lst})
def apiuser(req):
a = req.GET.get('a')
if a == 'detail':
userid = req.GET.get('userid')
companyid = getcompany(userid)
companyname = Partment.objects.get(partid=companyid).partname
userlist = User.objects.filter(userid=userid).values(
'userid', 'username', 'name', 'userprofile__realname', 'userprofile__cardnum', 'ubelongpart__partname', 'userprofile__gender')
userdict = userlist[0]
userdict['companyname'] = companyname
return HttpResponse(json.dumps(userdict, cls=MyEncoder), content_type="application/json")
elif a == 'get_user_from_username':
username = req.GET.get('username')
if username:
objs = User.objects.filter(username=username)
if objs.exists():
userdata = objs.values('name','username','ubelongpart__partname','usecomp__partname')
return JsonResponse({"code": 1, "data": list(userdata)[0]})
return JsonResponse({"code":0})
elif a == 'detailself':
userid = req.session['userid']
companyid = getcompany(userid)
companyname = Partment.objects.get(partid=companyid).partname
userlist = User.objects.filter(userid=userid).values(
'userid', 'username', 'name', 'userprofile__realname', 'userprofile__cardnum', 'ubelongpart__partname', 'userprofile__gender')
userdict = userlist[0]
userdict['companyname'] = companyname
return HttpResponse(json.dumps(userdict, cls=MyEncoder), content_type="application/json")
elif a == 'resetpass':
userid = req.session['userid']
nowuserid = req.GET.get('userid')
a = User.objects.get(userid=userid)
if a.issuper == 1:
User.objects.filter(userid=nowuserid).update(
password='0000', epassword=make_password('0000'))
return JsonResponse({"code": 1})
else:
return JsonResponse({"code": 0})
elif a == 'editself':
userid = req.session['userid']
cardnum = req.POST.get('cardnum')
realname = req.POST.get('realname')
gender = req.POST.get('gender')
try:
obj = Userprofile.objects.get(user__userid=userid)
obj.realname = realname
obj.cardnum = cardnum
obj.gender = gender
obj.save()
except Userprofile.DoesNotExist:
obj = Userprofile(user=User.objects.get(
userid=userid), realname=realname, cardnum=cardnum, gender=gender)
obj.save()
return JsonResponse({"code": 1})
elif a == 'checkaqy':
userid = req.session['userid']
if Partment.objects.filter(Q(aqy__contains=','+str(userid)+',') | Q(bmzg__contains=','+str(userid)+',') | Q(bsq__contains=','+str(userid)+',')).exists():
return JsonResponse({"code": 1})
else:
return JsonResponse({"code": 0})
elif a == 'uuserdatagrid':
userid = req.session['userid']
usecomp = User.objects.get(userid=userid).usecomp
a = User.objects.filter(usecomp=usecomp, deletemark=0).exclude(issuper=1).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")
elif a == 'recovery':
ruserid = req.GET.get('userid')
user = User.objects.get(userid=ruserid)
user.deletemark=1
user.save()
Group.objects.get(usecomp=user.usecomp,grouptype=3).users.add(user)#授予基本权限
return JsonResponse({"code": 1})
elif a == 'updateHeadimg':
userid = req.GET.get('userid')
user = User.objects.get(userid=ruserid)
data = json.loads(req.body.decode('utf-8'))
if 'headimgurl' in data:
user.headimgurl = data['headimgurl']
if 'nickname' in data:
user.nickname = data['nickname']
user.save()
return JsonResponse({'code':1})
def apiduibiao(req):
text = req.POST.get('yhms')
result = calsim.calsimTojson(text)
return JsonResponse({'code': 1, 'data': result})
def apisuggest(req):
a = req.GET.get('a')
if a == 'add':
userid = req.session['userid']
oneuser = User.objects.get(userid=userid)
obj = Suggest()
data = json.loads(req.body.decode('utf-8'))
obj.jylb = Dickey.objects.get(dickeyid=data['jylb'])
obj.jyr = oneuser
obj.jybm = oneuser.ubelongpart
obj.jynr = data['jynr']
obj.dqxz = data['dqxz']
obj.qwxg = data['qwxg']
obj.jynum = 'JY'+time.strftime('%Y%m%d%H%M%S')
obj.usecomp = oneuser.usecomp
if 'jyimg' in data:
obj.jyimg = '?'.join(data['jyimg'])
if 'jyqy' in data:
if data['jyqy']:
obj.jyqy = Area.objects.get(id=data['jyqy'])
if 'jydd' in data:
obj.jydd = data['jydd']
obj.jyzt = 1
todouser = getpgr2(userid, User.objects.get(userid=userid).ubelongpart)
obj.todouser = todouser
obj.pgr = todouser
obj.save()
Suggestflow.objects.create(suggest=obj, user=oneuser, action='提出新建议')
return JsonResponse({"code": 1})
elif a == 'listall':
userid = req.session['userid']
companyid = getcompany(userid)
startnum, endnum = fenye(req)
a = Suggest.objects.filter(usecomp=Partment.objects.get(
partid=companyid)).order_by('-submittime')
total = a.count()
startnum, endnum = fenye(req)
a = a[startnum:endnum].values('jyid', 'jylb__dickeyname', 'jyr__name', 'jybm__partname', 'dqxz', 'jynr',
'jynum', 'jyzt', 'todouser__userid', 'todouser__name', 'jyqy__name', 'jydd', 'submittime', 'accept')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'listself':
userid = req.session['userid']
startnum, endnum = fenye(req)
a = Suggest.objects.filter(jyr__userid=userid).order_by('-submittime')
total = a.count()
startnum, endnum = fenye(req)
a = a[startnum:endnum].values('jyid', 'jylb__dickeyname', 'jyr__name', 'jybm__partname', 'dqxz', 'jynr',
'jynum', 'jyzt', 'todouser__userid', 'todouser__name', 'jyqy__name', 'jydd', 'submittime', 'accept')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'listtodo':
userid = req.session['userid']
startnum, endnum = fenye(req)
a = Suggest.objects.filter(
todouser__userid=userid).order_by('-submittime')
total = a.count()
startnum, endnum = fenye(req)
a = a[startnum:endnum].values('jyid', 'jylb__dickeyname', 'jyr__name', 'jybm__partname', 'dqxz', 'jynr',
'jynum', 'jyzt', 'todouser__userid', 'todouser__name', 'jyqy__name', 'jydd', 'submittime', 'accept')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'todonum':
userid = req.session['userid']
a = Suggest.objects.filter(todouser__userid=userid).count()
return JsonResponse({'code': 1, 'todonum': a})
elif a == 'detail':
jyid = req.GET.get('jyid')
a = Suggest.objects.filter(jyid=jyid)
x = a.values('jyid', 'jylb__dickeyname', 'jynum', 'submittime', 'jyr__name', 'dqxz', 'jynr', 'jybm__partname', 'jyimg',
'qwxg', 'jyqy__name', 'jydd', 'jyzt', 'clr__name', 'jyfk', 'clcs', 'pgr__name', 'clms', 'jyimg2', 'sjwcsj', 'accept')[0]
if x['jyimg'] != '':
x['jyimg'] = x['jyimg'].split('?')
else:
x['jyimg'] = []
for key in x:
if x[key] == None:
x[key] = ''
x['flow'] = []
for i in Suggestflow.objects.filter(suggest=a[0]).order_by('submittime'):
x['flow'].append(
{'name': i.user.name, 'action': i.action, 'submittime': i.submittime})
return HttpResponse(json.dumps(x, cls=MyEncoder), content_type="application/json")
elif a == 'del':
jyid = req.GET.get('jyid')
userid = req.session['userid']
a = Suggest.objects.get(jyid=jyid)
if User.objects.get(userid=userid).issuper == 1:
a.delete()
return JsonResponse({"code": 1})
else:
return JsonResponse({"code": 0})
elif a == 'listsearch':
userid = req.session['userid']
startnum, endnum = fenye(req)
a = Suggest.objects.filter(
usecomp=User.objects.get(userid=userid).usecomp)
if req.GET.get('qssj'):
a = a.filter(submittime__gte=req.GET.get('qssj'))
if req.GET.get('jssj'):
a = a.filter(submittime__lte=req.GET.get('jssj'))
total = a.count()
a = a.order_by('-submittime')[startnum:endnum].values('jyid', 'jylb__dickeyname', 'jyr__name', 'jybm__partname',
'dqxz', 'jynr', 'jynum', 'jyzt', 'todouser__userid', 'todouser__name', 'jyqy__name', 'jydd', 'submittime', 'accept')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'exportexcel':
userid = req.session['userid']
companyid = getcompany(userid)
a = Suggest.objects.filter(
usecomp=Partment.objects.get(partid=companyid))
if req.GET.get('qssj'):
a = a.filter(jyrq__gte=req.GET.get('qssj'))
if req.GET.get('jssj'):
a = a.filter(jyrq__lte=req.GET.get('jssj'))
res = exportxlsx('jy', a)
return res
elif a == 'exportword':
id = req.GET.get('id')
res = exportdoc('jy', id)
return res
elif a == 'update': # 评估
userid = req.session['userid']
data = json.loads(req.body.decode('utf-8'))
obj = Suggest.objects.get(jyid=data['jyid'])
if data['jyzt'] == 1:
if data['apcl'] == True:
obj.jyzt = 2 # 处理
user = User.objects.get(userid=data['clr'])
obj.todouser = user
obj.clr = user
obj.jyfk = data['jyfk']
obj.clcs = data['clcs']
obj.save()
Suggestflow.objects.create(suggest=obj, user=User.objects.get(
userid=userid), action='指派'+user.name+'处理')
return JsonResponse({"code": 1})
elif data['zjtr'] == True:
user = User.objects.get(userid=data['npgr'])
obj.todouser = user
obj.pgr = user
if 'jyfk' in data:
if data['jyfk']:
obj.jyfk = data['jyfk']
obj.save()
Suggestflow.objects.create(suggest=obj, user=User.objects.get(
userid=userid), action='转交'+user.name+'评估')
return JsonResponse({"code": 1})
elif 'accept' in data:
if data['accept'] == 'no':
obj.jyzt = 4
obj.todouser = None
obj.jyfk = data['jyfk']
obj.accept = 0
obj.save()
Suggestflow.objects.create(
suggest=obj, user=User.objects.get(userid=userid), action='未采纳该建议')
return JsonResponse({"code": 1})
else:
obj.jyzt = 4
obj.todouser = None
obj.jyfk = data['jyfk']
obj.save()
Suggestflow.objects.create(
suggest=obj, user=User.objects.get(userid=userid), action='完成建议反馈')
return JsonResponse({"code": 1})
elif data['jyzt'] == 2:
obj.jyzt = 3
if 'clms' in data:
obj.clms = data['clms']
if 'jyimg2' in data:
if data['jyimg2']:
obj.jyimg2 = data['jyimg2']
obj.todouser = obj.pgr
obj.sjwcsj = datetime.now()
obj.save()
Suggestflow.objects.create(
suggest=obj, user=User.objects.get(userid=userid), action='提交处理结果')
return JsonResponse({"code": 1})
elif data['jyzt'] == 3:
if data['shresult'] != 'reject':
obj.jyzt = 4
obj.todouser = None
obj.save()
Suggestflow.objects.create(
suggest=obj, user=User.objects.get(userid=userid), action='确认处理结果')
return JsonResponse({"code": 1})
else:
obj.jyzt = 2
obj.todouser = obj.clr
if 'shyj' in data:
if data['shyj']:
obj.shyj = data['shyj']
obj.save()
Suggestflow.objects.create(
suggest=obj, user=User.objects.get(userid=userid), action='驳回处理结果')
return JsonResponse({"code": 1})
# 特别操作
def apitool(req):
a = req.GET.get('a')
if a == 'updatecompany':
for i in User.objects.all():
companyid = getcompany(i.userid)
i.usecomp = Partment.objects.get(partid=companyid)
i.save()
elif a == 'correctcompany':
objs = Partment.objects.filter(iscompany=1)
clist = []
for i in objs:
users = User.objects.filter(usecomp=i)
if users.exists():
pass
else:
i.delete()
clist.append({'id': i.partid, 'name': i.partname})
return JsonResponse({'code': 1, 'clist': clist})
elif a == 'correct_train_qr':
for i in Train.objects.all():
i.checkqr = makeqr_train(
'https://safeyun.ctcshe.com/miniprogram/checktrain?trainid='+str(i.trainid))
i.save()
return JsonResponse({'code': 1})
elif a == 'correct_teacher':
for i in Train.objects.all():
if i.lecturer != None:
i.teacher = i.lecturer.name
i.save()
return JsonResponse({'code': 1})
elif a == 'correct_riskact_qr':
for i in RiskAct.objects.all():
i.qrcode = makeqr_riskact(
'https://safeyun.ctcshe.com/miniprogram/riskact?id='+str(i.id))
i.save()
return JsonResponse({'code': 1})
elif a == 'correct_examtest_qr':
for i in ExamTest.objects.all():
i.qrcode = makeqr_examtest(
'https://safeyun.ctcshe.com/miniprogram/examtest?id='+str(i.id))
i.save()
return JsonResponse({'code': 1})
elif a == 'correct_area_qr':
for i in Area.objects.all():
i.qrcode = makeqr_area(
'https://safeyun.ctcshe.com/miniprogram/area?id='+str(i.id))
i.save()
return JsonResponse({'code': 1})
elif a == 'correct_risk':
for i in Risk.objects.all():
cal_riskact_level(i.riskact)
return JsonResponse({'code': 1})
elif a == 'correct_riskarea':
for i in RiskAct.objects.all():
cal_area_risk_level(i.area)
return JsonResponse({'code': 1})
elif a == 'addright':
menu = req.GET.get('menu')
objs = Group.objects.all()
if req.GET.get('company'):
objs = objs.filter(usecomp__partid=req.GET.get('company'))
for i in objs:
menulist = i.menulist
menulist.append(menu)
if menu == 30:
company = Partment.objects.get(partid=req.GET.get('company'))
objs = Map.objects.filter(usecomp=company)
if objs.exists():
pass
else:
Map.objects.create(
name='默认地图', pic='/static/safesite/mystatic/images/snc.jpg', usecomp=company, default=1)
i.menulist = list(set(menulist))
i.save()
return JsonResponse({"code": 1})
elif a == 'correction':
for i in Yjyc.objects.all():
if i.ycz < 0:
i.ycz = 0
i.save()
if round(i.yjz, 2) != i.troublevalue+i.trainvalue+i.drillvalue:
i.yjz = round(i.troublevalue+i.trainvalue+i.drillvalue, 2)
i.save()
return JsonResponse({"code": 1})
elif a == 'servertime':
return JsonResponse({"code": 1, "year": datetime.now().year, "month": datetime.now().month})
elif a == 'transfer':
newpart = req.GET.get('part')
username = req.GET.get('username')
user = User.objects.get(username=username)
for i in Partment.objects.filter(Q(aqy__contains=','+str(user.userid)+',')|Q(bmzg__contains=','+str(user.userid)+',')|Q(bsq__contains=','+str(user.userid)+',')):
i.aqy = i.aqy.replace(','+str(user.userid)+',',',')
i.bmzg = i.bmzg.replace(','+str(user.userid)+',',',')
i.bsq = i.bsq.replace(','+str(user.userid)+',',',')
i.save()
part = Partment.objects.get(partid=newpart)
if part.iscompany == 1:
usecomp = part
else:
usecomp = Partment.objects.get(partid=part.partlink.split(',')[1])
user.ubelongpart = part
user.usecomp = usecomp
user.save()
for i in Group.objects.filter(usecomp=usecomp):
i.users.remove(user)
groupobj = Group.objects.filter(usecomp=usecomp, grouptype=3).first()
groupobj.users.add(user)
return JsonResponse({"code": 1})
elif a == 'correctionzs':
objs = Socertificate.objects.all()
for i in objs:
try:
i.zszt = guoqi(i.yfsrq.strftime("%Y-%m-%d"))
i.save()
except:
pass
return JsonResponse({"code": 1})
elif a == 'correctriskact':
objs = RiskAct.objects.all()
for i in objs:
if Risk.objects.filter(riskact=i).exists():
i.group = Risk.objects.filter(riskact=i)[0].group
i.gkcj = Risk.objects.filter(riskact=i)[0].gkcj
i.zrbm = Risk.objects.filter(riskact=i)[0].zrbm
i.zrr = Risk.objects.filter(riskact=i)[0].zrr
i.save()
return JsonResponse({"code": 1})
elif a == 'correct_png':
objs = Trouble.objects.filter(
Q(yhtp__contains='#') | Q(zghtp__contains='#'))
for i in objs:
i.yhtp = i.yhtp.replace('#', '')
i.zghtp = i.zghtp.replace('#', '')
i.save()
return JsonResponse({"code": 1})
elif a == 'correct_yjyc':
for i in Partment.objects.filter(iscompany=1, deletemark=1):
yjjs(i.partid)
yjjs_gc(i.partid)
yjjs_px(i.partid)
yjjs_ws(i.partid)
yjjs_yl(i.partid)
return JsonResponse({"code": 1})
elif a == 'correct_company':
m = []
for i in Partment.objects.filter(iscompany=1, deletemark=1):
if User.objects.filter(usecomp=i).exists():
pass
else:
x = {}
x['name'] = i.partname
x['id'] = i.partid
m.append(x)
return JsonResponse({'wxgs': m})
elif a == 'correct_spjd':
for i in Operationspjd.objects.all():
if i.spr:
i.sprs = [i.spr.userid]
i.save()
return JsonResponse({"code": 1})
elif a == 'supercompany':
supergroup = g_models.Group.objects.get(groupname='supergroup')
for i in Partment.objects.filter(iscompany=1, deletemark=1):
obj, create = g_models.Groupmember.objects.get_or_create(
group=supergroup, member=i, defaults={'group': supergroup, 'member': i})
if create:
print(i.partname+'---加入supergroup')
return JsonResponse({"code": 1})
elif a == 'correct_password':
for i in User.objects.filter(epassword=None):
i.epassword = make_password(i.password)
i.save()
return JsonResponse({"code": 1})
elif a == 'correct_operation':
for i in Operation.objects.all():
if i.zyzt['zyzt'] == '待关闭' or i.zyzt['zyzt'] == '已关闭':
if 'jdmc' in i.zyzt:
i.zyzt['jdmc'] = ''
i.save()
return JsonResponse({"code": 1})
elif a == 'correct_examtest':
for i in ExamTest.objects.filter(Q(starttime=None) | Q(endtime=None)):
if i.starttime:
pass
else:
print(i.id, 'start')
i.starttime = i.createtime
i.save()
if i.endtime:
pass
else:
print(i.id, 'end')
i.endtime = i.createtime + timedelta(days=1)
i.save()
return JsonResponse({"code": 1})
elif a == 'correct_bmzg':
for i in Partment.objects.filter(Q(bmzg__contains=',,') | Q(aqy__contains=',,')):
print(i)
if ',,' in i.bmzg:
i.bmzg = i.bmzg.replace(',,', ',')
i.save()
if ',,' in i.aqy:
i.aqy = i.aqy.replace(',,', ',')
i.save()
return JsonResponse({"code": 1})
elif a == 'correct_question':
for i in Question.objects.exclude(questioncat__usecomp__partid=1):
i.usecomps = ','+str(i.questioncat.usecomp.partid)+','
i.save()
return JsonResponse({"code": 1})
elif a == 'correct_menulist':
for i in Group.objects.all():
if i.menulink:
i.menulist = list(set(list(filter(None, i.menulink.split(',')))))
i.save()
return JsonResponse({"code": 1})
elif a == 'correct_menuhas':
buttons = Menu.objects.filter(type=2)
for group in Group.objects.all():
menulist = group.menulist
for button in buttons:
if button.parentid.menuid in menulist: #如果菜单在所拥有权限内
menulist.append(button.menuid)
group.menulist = list(set(menulist))
group.save()
return JsonResponse({"code": 1})
elif a == 'correct_user_delete': #删除用户
for user in User.objects.filter(deletemark=0):
bgroups = user.userg.all()#该用户所属用户组
for i in bgroups:
i.users.remove(user)
for i in Partment.objects.filter(Q(aqy__contains=','+str(user.userid)+',')|Q(bmzg__contains=','+str(user.userid)+',')|Q(bsq__contains=','+str(user.userid)+',')):#从部门权限中移除
i.aqy = i.aqy.replace(','+str(user.userid)+',',',')
i.bmzg = i.bmzg.replace(','+str(user.userid)+',',',')
i.bsq = i.bsq.replace(','+str(user.userid)+',',',')
i.save()
return JsonResponse({"code": 1})
elif a == 'correct_company_role':
for i in Partment.objects.filter(iscompany=1):
i.role=Role.objects.get(id=1)
i.save()
return JsonResponse({"code": 1})
elif a == 'correct_riskgroups':
for i in Group.objects.filter(menulist__contains=[38]):
menulist = i.menulist
menulist.append(181)
i.menulist = menulist
i.save()
return JsonResponse({"code": 1})
elif a == 'correct_examtesttook':
for i in ExamTestDetail.objects.exclude(starttime=None,endtime=None):
i.took = (i.endtime-i.starttime).total_seconds()
i.save()
return JsonResponse({"code":1})
elif a == 'correct_map':
for i in Partment.objects.filter(iscompany=1):
obj,created = Map.objects.get_or_create(usecomp=i,defaults={'name':'默认地图','pic':'/static/safesite/mystatic/images/snc.jpg','usecomp':i})
if created:
print(i.partname + '建立默认地图')
return JsonResponse({"code":1})
elif a == 'panjuan':
test = ExamTest.objects.get(id=req.GET.get('test'))
answers = ExamPaperDetail.objects.filter(exampaper=test.exampaper).values('id', 'question__right')
answersdict = {}
for i in answers:
answersdict['paperdetail' + str(i['id'])] = i['question__right']
panjuanlist = ExamTestDetail.objects.filter(examtest=test)
num = 0
for obj in panjuanlist:
tms = []
wrongs = []
rights = 0
testdetail = obj.testdetail
if testdetail:
score = 0
for i in testdetail: # 判卷
iscore = 0
i['question__right'] = answersdict['paperdetail'+str(i['id'])]
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:
miniscore = i['score']/len(i['question__right'])
wrongs.append(str(i['question__id']))
for x in i['userchecked']:
if x in i['question__right']:
iscore = iscore + miniscore
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.testdetail = testdetail
obj.rights = rights
score = round(score,1)
obj.score = score
obj.ison = 1
totalscore = test.totalscore
passscore = test.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()
num = num + 1
print(str(num) + obj.examtest.name + obj.user.name + '得分' + str(score))
return JsonResponse({"code":1})
elif a == 'correct_aqzs':
from .tasks import updateAqzs
updateAqzs()
return JsonResponse({"code":1})
def apinotice(req):
a = req.GET.get('a')
if a == 'add':
userid = req.session['userid']
oneuser = User.objects.get(userid=userid)
obj = Notice()
data = json.loads(req.body.decode('utf-8'))
obj.title = data['title']
obj.content = data['content']
obj.pubuser = oneuser
obj.pubpart = oneuser.ubelongpart
obj.usecomps = ',' + str(oneuser.usecomp.partid)+','
if data['tzfile']:
obj.material = '?'.join(data['tzfile'])
obj.save()
if data['tousers']:
obj.isgg = 0
obj.save()
ulist = data['tousers'].split(',')
b = []
for i in ulist:
x = User.objects.get(userid=i)
m = Noticeto(noticeid=obj, receiver=x)
m.save()
b.append(x.openid)
postdict = {
'touser': '',
'template_id': 'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0',
"miniprogram": {"appid": "wx5c39b569f01c27db"},
'data': {
'first': {
'value': '公司通知:'
},
'keyword1': {
'value': obj.title
},
'keyword2': {
'value': obj.submittime
},
'keyword3': {
'value': oneuser.name
},
'remark': {
'value': '请及时查看阅读'
}
}
}
send_wechatmsgs.delay(postdict, b)
return JsonResponse({"code": 1})
elif a == 'edit':
data = json.loads(req.body.decode('utf-8'))
obj = Notice.objects.get(id=data['id'])
obj.title = data['title']
obj.content = data['content']
if data['tzfile']:
obj.material = '?'.join(data['tzfile'])
obj.modifytime = datetime.now()
obj.save()
return JsonResponse({"code": 1})
elif a == 'listall':
userid = req.session['userid']
usecomp = User.objects.get(userid=userid).usecomp
a = (Notice.objects.filter(usecomps__contains=',' + str(usecomp.partid)+',', deletemark=1) |
Notice.objects.filter(usecomps__contains=',1,', deletemark=1, isgg=1)).distinct().order_by('-submittime')
total = a.count()
startnum, endnum = fenye(req)
a = a[startnum:endnum].values('id', 'title', 'pubpart__partname', 'pubuser__name',
'pubuser__userid', 'submittime', 'modifytime', 'reads', 'isgg')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'listpublic':
userid = req.session['userid']
usecomp = User.objects.get(userid=userid).usecomp
a = (Notice.objects.filter(usecomps__contains=',' + str(usecomp.partid)+',', deletemark=1, isgg=1) |
Notice.objects.filter(usecomps__contains=',1,', deletemark=1, isgg=1)).distinct().order_by('-submittime')
total = a.count()
startnum, endnum = fenye(req)
a = a[startnum:endnum].values('id', 'title', 'pubpart__partname', 'pubuser__name',
'pubuser__userid', 'submittime', 'modifytime', 'reads', 'isgg')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'listdata':
userid = req.session['userid']
usecomp = User.objects.get(userid=userid).usecomp
a = (Notice.objects.filter(usecomps__contains=',' + str(usecomp.partid)+',', deletemark=1, isgg=1) |
Notice.objects.filter(usecomps__contains=',1,', deletemark=1, isgg=1))
if req.GET.get('search'):
a = a.filter(title__contains=req.GET.get('search'))
a = a.distinct().order_by('-submittime')
total = a.count()
startnum, endnum = fenye(req)
a = a[startnum:endnum].values('id', 'title', 'pubpart__partname', 'pubuser__name',
'pubuser__userid', 'submittime', 'modifytime', 'reads', 'isgg')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'listtodomain':
userid = req.session['userid']
a = Noticeto.objects.filter(receiver=User.objects.get(userid=userid)).values(
'noticeid').annotate(num=Sum('read')).order_by('-noticeid__submittime')
total = a.count()
startnum, endnum = fenye(req)
a = a[startnum:endnum].values('noticeid__id', 'noticeid__title', 'num',
'noticeid__submittime', 'noticeid__pubpart__partname', 'noticeid__pubuser__name')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'listtome':
userid = req.session['userid']
b = Noticeto.objects.filter(receiver=User.objects.get(
userid=userid), noticeid__deletemark=1)
a = b.order_by('-noticeid__submittime')
total = a.count()
noread = b.filter(read=0).count()
startnum, endnum = fenye(req)
a = a[startnum:endnum].values('noticeid__id', 'noticeid__title', 'read',
'noticeid__submittime', 'noticeid__pubpart__partname', 'noticeid__pubuser__name')
return HttpResponse(json.dumps({'total': total, 'rows': list(a), 'noread': noread, 'code': 1}, cls=MyEncoder), content_type="application/json")
elif a == 'noreadnum':
userid = req.session['userid']
b = Noticeto.objects.filter(receiver=User.objects.get(
userid=userid), noticeid__deletemark=1)
noread = b.filter(read=0).count()
return JsonResponse({'noread': noread})
elif a == 'listtodo':
userid = req.session['userid']
userobj = User.objects.get(userid=userid)
usecomp = userobj.usecomp
a = (Notice.objects.filter(tousers=userobj, deletemark=1) | Notice.objects.filter(usecomps__contains=',' + str(usecomp.partid) +
',', deletemark=1) | Notice.objects.filter(usecomps__contains=',1,', deletemark=1, isgg=1)).distinct().order_by('-submittime')
total = a.count()
startnum, endnum = fenye(req)
a = a[startnum:endnum].values(
'id', 'title', 'pubpart__partname', 'pubuser__name', 'submittime', 'reads')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'listself':
userid = req.session['userid']
userobj = User.objects.get(userid=userid)
a = Notice.objects.filter(
pubuser=userobj, deletemark=1).order_by('-submittime')
total = a.count()
startnum, endnum = fenye(req)
a = a[startnum:endnum].values(
'id', 'title', 'pubpart__partname', 'pubuser__name', 'submittime', 'reads')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'detail':
id = req.GET.get('id')
userid = req.session['userid']
a = Notice.objects.filter(id=id)
aobj = a[0]
aobj.reads = int(aobj.reads) + 1
aobj.save()
x = a.values('id', 'title', 'pubpart__partname', 'pubuser__name',
'submittime', 'modifytime', 'material', 'content', 'isgg', 'reads')[0]
if x['material']:
x['material'] = x['material'].split('?')
else:
x['material'] = []
for key in x:
if x[key] == None:
x[key] = ''
data = {}
data['notice'] = x
readobj = Noticeto.objects.filter(noticeid__in=a)
reads = readobj.values('receiver__name', 'read')
data['reads'] = list(reads)
data['readpeople'] = readobj.exclude(read=0).count()
data['readsnum'] = readobj.aggregate(num=Sum('read')).get('num') or 0
try:
toobj = Noticeto.objects.get(
noticeid__id=id, receiver__userid=userid)
toobj.read = int(toobj.read) + 1
toobj.save()
except:
pass
return JsonResponse(data)
elif a == 'del':
id = req.GET.get('id')
userid = req.session['userid']
a = Notice.objects.get(id=id)
if a.usecomps != ',1,' and User.objects.get(userid=userid).issuper == 1:
a.deletemark = 0
a.save()
return JsonResponse({"code": 1})
elif userid == 8:
a.deletemark = 0
a.save()
return JsonResponse({"code": 1})
else:
return JsonResponse({"code": 0})
elif a == 'listsearch':
userid = req.session['userid']
startnum, endnum = fenye(req)
a = Notice.objects.filter(
usecomp=User.objects.get(userid=userid).usecomp)
# 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(submittime__gte=req.GET.get('qssj'))
if req.GET.get('jssj'):
a = a.filter(submittime__lte=req.GET.get('jssj'))
total = a.count()
a = a.order_by('-submittime')[startnum:endnum].values('id',
'title', 'pubpart__partname', 'pubuser__name', 'submittime')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'exportexcel':
userid = req.session['userid']
companyid = getcompany(userid)
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'))
v = exportxlsx('ws', a)
return JsonResponse({"code": 1, 'downloadurl': v})
def apioperation(req):
a = req.GET.get('a')
userid = req.session['userid']
if a == 'add':
userid = req.session['userid']
oneuser = User.objects.get(userid=userid)
obj = Operation()
data = json.loads(req.body.decode('utf-8'))
obj.zydd = data['zydd']
obj.zynr = data['zynr']
obj.kssj = data['kssj']
obj.jssj = data['jssj']
if 'zyqy' in data:
obj.zyqy = Area.objects.get(
id=data['zyqy']) if data['zyqy'] else None
obj.zylx = Dickey.objects.get(dickeyid=data['zylx'])
obj.zybm = oneuser.ubelongpart
if 'zybm' in data:
obj.zybm = Partment.objects.get(partid=data['zybm'])
obj.sdbm = Partment.objects.get(partid=data['sdbm'])
obj.zyfzr = oneuser
if 'zyfzr' in data:
obj.zyfzr = User.objects.get(userid=data['zyfzr'])
obj.zynum = 'ZY'+time.strftime('%Y%m%d%H%M%S')
obj.usecomp = oneuser.usecomp
if 'splc' in data:
if data['splc']==0:#无审批
obj.zyzt = {'zyzt':'待关闭','index':0,'splc':0}
obj.save()
for i in data['zyry']:
Operzyry.objects.create(oper=obj, operzyry=User.objects.get(userid=i), checked=1)
return JsonResponse({"code": 1})
if 'zyimg' in data:
obj.zyimg = '?'.join(data['zyimg'])
obj.fxcs = '?'.join(map(str, data['fxcs']))
obj.zyzt = {'zyzt': '确认中', 'index': 0}
splc = []
if 'spr1s' in data:
spr1s = [data['spr1s']]
else:
spr1s = getsprs(userid, obj.zybm)
if 'spr2s' in data:
spr2s = [data['spr2s']]
else:
spr2s = getsprs(userid, obj.sdbm)
splc.append({'jdmc': '作业负责人审批', 'sprs': [userid]})
splc.append({'jdmc': '作业部门审批', 'sprs': spr1s})
splc.append({'jdmc': '属地部门审批', 'sprs': spr2s})
for i in Operationspjd.objects.filter(zylx=obj.zylx, usecomp=Partment.objects.get(partid=getcompany(userid))).order_by('id'):
splc.append({'jdmc': i.jdmc, 'sprs': i.sprs})
obj.zyzt['splc'] = splc
obj.save()
# Operspxq.objects.create(oper=obj,jdmc='作业负责人审批',spr=obj.zyfzr,checked=1,spbm=obj.zyfzr.ubelongpart)
b = [] # 发送通知
for i in data['zyry']:
x = User.objects.get(userid=i)
if int(userid) == int(i): # 申请人包含作业人直接确认
Operzyry.objects.create(oper=obj, operzyry=x, checked=1)
else:
Operzyry.objects.create(oper=obj, operzyry=x)
b.append(x.openid)
if b:
pass
else: # 工作人员全部确认
obj.zyzt['zyzt'] = '审批中'
obj.zyzt['index'] = 0
index = obj.zyzt['index']
sprs = [] # 初始化审批人列表
if 'sprs' in obj.zyzt['splc'][index]:
sprs = obj.zyzt['splc'][index]['sprs']
else:
sprs = [obj.zyzt['splc'][index]['spr']]
jdmc = obj.zyzt['splc'][index]['jdmc']
obj.zyzt['jdmc'] = jdmc
obj.todousers = sprs
obj.save()
postdict = {
'touser': '',
'template_id': 'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0',
'miniprogram': {'appid': 'wx5c39b569f01c27db'},
'data': {
'first': {
'value': obj.zylx.dickeyname + '作业审批,审批节点:' + obj.zyzt['jdmc']
},
'keyword1': {
'value': obj.zynr
},
'keyword2': {
'value': obj.kssj
},
'keyword3': {
'value': obj.zydd
},
'remark': {
'value': '请您及时完成审批!'
}
}
}
tolist = list(User.objects.filter(
userid__in=sprs).values_list('openid', flat=True))
send_wechatmsgs.delay(postdict, tolist)
return JsonResponse({"code": 1})
postdict = {
'touser': '',
'template_id': 'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0',
"miniprogram": {"appid": "wx5c39b569f01c27db"},
'data': {
'first': {
'value': obj.zylx.dickeyname + '作业通知:'
},
'keyword1': {
'value': obj.zynr
},
'keyword2': {
'value': obj.kssj
},
'keyword3': {
'value': obj.zydd
},
'remark': {
'value': obj.zyfzr.name+'为作业负责人,请确认参与作业'
}
}
}
send_wechatmsgs.delay(postdict, b)
return JsonResponse({"code": 1})
elif a == 'listall':
userid = req.session['userid']
usecomp = User.objects.get(userid=userid).usecomp
a = Operation.objects.filter(
usecomp=usecomp, deletemark=1).order_by('-submittime')
if req.GET.get('zyqy', False):
a = a.filter(zyqy__id=req.GET.get('zyqy'))
if req.GET.get('qssj', None):
a = a.filter(kssj__gte=req.GET.get('qssj'))
if req.GET.get('jssj', None):
a = a.filter(jssj__lte=req.GET.get('jssj'))
total = a.count()
startnum, endnum = fenye(req)
a = a[startnum:endnum].values('zyid', 'zylx__dickeyname', 'zynum',
'zyfzr__name', 'zynr', 'zyzt', 'submittime', 'todouser__name','zyqy__name')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'liston':
userid = req.session['userid']
usecomp = User.objects.get(userid=userid).usecomp
objs = Operation.objects.filter(
usecomp=usecomp, deletemark=1).exclude(zyzt__zyzt='已关闭')
total = objs.count()
objs = objs.values('zyid', 'zylx__dickeyname', 'zynum','zyfzr__name', 'zynr','zyqy__name','zyqy__id','zybm__partname','kssj').annotate(num=Count('zyry'))
return HttpResponse(transjson(total, objs), content_type="application/json")
elif a == 'exportexcel':
userid = req.session['userid']
usecomp = User.objects.get(userid=userid).usecomp
a = Operation.objects.filter(
usecomp=usecomp, deletemark=1).order_by('-submittime')
res = exportxlsx('zy', a)
return res
elif a == 'listtodo':
userid = req.session['userid']
usecomp = User.objects.get(userid=userid).usecomp
i = []
b = Operzyry.objects.filter(operzyry__userid=userid, checked=0)
for x in b:
i.append(x.oper.zyid)
a = Operation.objects.filter(Q(usecomp=usecomp), Q(deletemark=1), Q(zyid__in=i)|Q(todouser__userid=userid)|Q(todousers__contains=[userid])).order_by('-submittime')
total = a.count()
startnum, endnum = fenye(req)
a = a[startnum:endnum].values(
'zyid', 'zylx__dickeyname', 'zynum', 'zyfzr__name', 'zynr', 'zyzt', 'submittime','zyqy__name')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'listself':
userid = req.session['userid']
usecomp = User.objects.get(userid=userid).usecomp
a = Operation.objects.filter(
usecomp=usecomp, deletemark=1, zyfzr__userid=userid).order_by('-submittime')
total = a.count()
startnum, endnum = fenye(req)
a = a[startnum:endnum].values('zyid', 'zylx__dickeyname', 'zynum',
'zyfzr__name', 'zynr', 'zyzt', 'submittime', 'todouser__name','zyqy__name')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'detail':
zyid = req.GET.get('zyid')
a = Operation.objects.filter(zyid=zyid)
x = a.values('zyid', 'zydd', 'zylx__dickeyname', 'zynum', 'zyfzr__name', 'zynr', 'zyzt', 'zyimg',
'submittime', 'zybm__partname', 'sdbm__partname', 'kssj', 'jssj', 'fxcs', 'zyimg2','zyqy__name')[0]
if x['zyzt']['splc']:
for i in x['zyzt']['splc']:
i['sprs'] = ','.join(list(User.objects.filter(
userid__in=i['sprs']).values_list('name', flat=True)))
if x['zyimg'] != '':
x['zyimg'] = x['zyimg'].split('?')
else:
x['zyimg'] = []
if x['zyimg2'] != '':
x['zyimg2'] = x['zyimg2'].split('?')
else:
x['zyimg2'] = []
x['fxcs'] = list(Fxcs.objects.filter(
id__in=x['fxcs'].split('?')).values('id', 'fxfx', 'aqcs', 'cslx'))
# 确认详情
qrxqobjs = Operzyry.objects.filter(
oper=Operation.objects.get(zyid=zyid))
qrxq = qrxqobjs.values('operzyry__name', 'checked')
x['qrxq'] = list(qrxq)
x['zyry'] = ','.join(
list(qrxqobjs.values_list('operzyry__name', flat=True)))
# 审批详情
spxq = Operspxq.objects.filter(oper=Operation.objects.get(zyid=zyid)).order_by(
'submittime').values('jdmc', 'spbm__partname', 'spr__name', 'submittime', 'checked')
x['spxq'] = list(spxq)
return HttpResponse(json.dumps(x, cls=MyEncoder), content_type="application/json")
else:
return HttpResponse(json.dumps(x, cls=MyEncoder), content_type="application/json")
elif a == 'exportword':
zyid = req.GET.get('id')
res = exportdoc('zy', zyid)
return res
elif a == 'qrzy':
userid = req.session['userid']
data = json.loads(req.body.decode('utf-8'))
zyid = data['zyid']
obj = Operation.objects.get(zyid=zyid)
Operzyry.objects.filter(
oper__zyid=zyid, operzyry__userid=userid).update(checked=1)
if Operzyry.objects.filter(oper__zyid=zyid, checked=0).exists():
pass
else: # 工作人员全部确认
nowzt = obj.zyzt
obj.zyzt['zyzt'] = '审批中'
obj.zyzt['index'] = 0
index = obj.zyzt['index']
spruser = User.objects.get(userid=userid)
sprs = [] # 初始化审批人列表
if 'sprs' in obj.zyzt['splc'][index]:
sprs = obj.zyzt['splc'][index]['sprs']
else:
sprs = [obj.zyzt['splc'][index]['spr']]
jdmc = obj.zyzt['splc'][index]['jdmc']
obj.zyzt['jdmc'] = jdmc
obj.todousers = sprs
obj.save()
postdict = {
'touser': '',
'template_id': 'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0',
'miniprogram': {'appid': 'wx5c39b569f01c27db'},
'data': {
'first': {
'value': obj.zylx.dickeyname + '作业审批,审批节点:' + obj.zyzt['jdmc']
},
'keyword1': {
'value': obj.zynr
},
'keyword2': {
'value': obj.kssj
},
'keyword3': {
'value': obj.zydd
},
'remark': {
'value': '请您及时完成审批!'
}
}
}
tolist = list(User.objects.filter(
userid__in=sprs).values_list('openid', flat=True))
send_wechatmsgs.delay(postdict, tolist)
return JsonResponse({"code": 1})
elif a == 'spzy':
data = json.loads(req.body.decode('utf-8'))
zyid = data['zyid']
obj = Operation.objects.get(zyid=zyid)
oldtodo = obj.todousers
oldjdmc = obj.zyzt['jdmc']
oldindex = obj.zyzt['index']
nextindex = obj.zyzt['index']+1
spruser = User.objects.get(userid=userid)
if oldindex == 0:
spr1 = data['spr1'] if 'spr1' in data else None
spr2 = data['spr2'] if 'spr2' in data else None
if spr1:
obj.zyzt['splc'][1]['sprs'] = [spr1] # 作业部门审批人
if spr2:
obj.zyzt['splc'][2]['sprs'] = [spr2] # 属地部门审批人
Operspxq.objects.create(
oper=obj, jdmc=obj.zyzt['splc'][oldindex]['jdmc'], spr=spruser, checked=1, spbm=spruser.ubelongpart) # 审批该步
while nextindex < len(obj.zyzt['splc']):
nextsplc = obj.zyzt['splc'][nextindex]
if userid in nextsplc['sprs']: # 本人可审批直接跳过下一步
Operspxq.objects.create(
oper=obj, jdmc=nextsplc['jdmc'], spr=spruser, checked=1, spbm=spruser.ubelongpart)
else:
obj.zyzt['zyzt'] = '审批中'
obj.zyzt['index'] = nextindex
obj.zyzt['jdmc'] = nextsplc['jdmc']
obj.todousers = nextsplc['sprs']
obj.save()
tolist = list(User.objects.filter(
userid__in=nextsplc['sprs']).values_list('openid', flat=True))
toliststr = ','.join(list(User.objects.filter(
userid__in=nextsplc['sprs']).values_list('name', flat=True)))
postdict = {
'touser': '',
'template_id': 'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0',
'miniprogram': {'appid': 'wx5c39b569f01c27db'},
'data': {
'first': {
'value': obj.zylx.dickeyname + '作业审批,审批节点:' + obj.zyzt['jdmc']
},
'keyword1': {
'value': obj.zynr
},
'keyword2': {
'value': obj.kssj
},
'keyword3': {
'value': obj.zydd
},
'remark': {
'value': '请您及时完成审批!可审批人:'+toliststr
}
}
}
send_wechatmsgs.delay(postdict, tolist)
return JsonResponse({"code": 1})
nextindex = nextindex + 1
if 'zjsp' in data: # 转交上级审批
if spruser.ubelongpart.parentid:
newsprs = getsprs(userid, spruser.ubelongpart.parentid)
else:
newsprs = getsprs(userid, spruser.usecomp)
# newsprs = data['newsprs']#新审批人
obj.zyzt['jdmc'] = '上级审批'
obj.zyzt['index'] = nextindex
obj.todousers = newsprs
obj.zyzt['splc'].insert(
nextindex, {'jdmc': '上级审批', 'sprs': newsprs})
obj.save()
tolist = list(User.objects.filter(
userid__in=newsprs).values_list('openid', flat=True))
toliststr = ','.join(list(User.objects.filter(
userid__in=newsprs).values_list('name', flat=True)))
postdict = {
'touser': '',
'template_id': 'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0',
'miniprogram': {'appid': 'wx5c39b569f01c27db'},
'data': {
'first': {
'value': obj.zylx.dickeyname + '作业审批,审批节点:' + obj.zyzt['jdmc']
},
'keyword1': {
'value': obj.zynr
},
'keyword2': {
'value': obj.kssj
},
'keyword3': {
'value': obj.zydd
},
'remark': {
'value': '请您及时完成审批!可审批人:'+toliststr
}
}
}
send_wechatmsgs.delay(postdict, tolist)
Operspxq.objects.create(
oper=obj, jdmc=obj.zyzt['splc'][nextindex-1]['jdmc'], spr=spruser, checked=2, spbm=spruser.ubelongpart)
return JsonResponse({"code": 1})
obj.zyzt['zyzt'] = '待关闭'
obj.zyzt['jdmc'] = ''
obj.zyzt['index'] = nextindex
obj.todouser = None
obj.todousers = [obj.zyfzr.userid]
obj.save()
postdict = {
'touser': obj.zyfzr.openid,
'template_id': 'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0',
'miniprogram': {'appid': 'wx5c39b569f01c27db'},
'data': {
'first': {
'value': obj.zylx.dickeyname + '作业审批通过:'
},
'keyword1': {
'value': obj.zynr
},
'keyword2': {
'value': obj.kssj
},
'keyword3': {
'value': obj.zydd
},
'remark': {
'value': '你是作业负责人,可以开始作业,作业完成请及时关闭!'
}
}
}
# Operspxq.objects.create(oper=obj,jdmc=obj.zyzt['splc'][nextindex-1]['jdmc'],spr=spruser,checked=1,spbm=spruser.ubelongpart)
send_wechatmsg.delay(postdict)
return JsonResponse({"code": 1})
elif a == 'gbzy': # 关闭作业
data = json.loads(req.body.decode('utf-8'))
# print(data)
user = User.objects.get(userid=userid)
zyid = data['zyid']
obj = Operation.objects.get(zyid=zyid)
if obj.zyfzr == user:
if 'zyimg2' in data:
zyimg2 = data['zyimg2']
obj.zyimg2 = '?'.join(zyimg2)
obj.zyzt['zyzt'] = '已关闭'
obj.zyzt['jdmc'] = ''
obj.todouser = None
obj.todousers = None
obj.save()
else:
return JsonResponse({"code": 0,"msg":'非作业负责人不可关闭'})
return JsonResponse({"code": 1})
elif a == 'todonum':
userid = req.session['userid']
i = []
b = Operzyry.objects.filter(operzyry__userid=userid, checked=0)
c = Operation.objects.filter(Q(todouser__userid=userid) | Q(todousers__contains=[userid]),Q(deletemark=1))
for x in b:
i.append(x.oper.zyid)
for x in c:
i.append(x.zyid)
i = list(set(i))
return JsonResponse({"code": 1, "todonum": len(i)})
elif a == 'del':
zyid = req.GET.get('zyid')
userid = req.session['userid']
a = Operation.objects.get(zyid=zyid)
if User.objects.get(userid=userid).issuper == 1:
a.deletemark = 0
a.save()
return JsonResponse({"code": 1})
else:
return JsonResponse({"code": 0})
elif a == 'getspr12':
zybm = User.objects.get(userid=userid).ubelongpart # 作业部门
sdbm = Partment.objects.get(
partid=json.loads(req.body.decode('utf-8'))['sdbm'])
spr1 = getsprs2(userid, zybm)
spr2 = getsprs2(userid, sdbm)
spr1Array = User.objects.filter(userid__in=spr1).annotate(
value=F('userid'), text=F('name')).values('value', 'text')
spr2Array = User.objects.filter(userid__in=spr2).annotate(
value=F('userid'), text=F('name')).values('value', 'text')
return JsonResponse({"code": 1, "data": {'spr1Array': list(spr1Array), 'spr2Array': list(spr2Array)}})
def apioperationsetting(req):
a = req.GET.get('a')
comp = User.objects.get(userid=req.session['userid']).usecomp
if a == 'listall':
objs = (Operationsetting.objects.filter(usecomps__contains=',1,') | Operationsetting.objects.filter(
usecomps__contains=','+str(comp.partid)+',')).exclude(nousecomps__contains=','+str(comp.partid)+',').values('id', 'name')
x = transstr(objs, 'id', 'name')
return HttpResponse(x, content_type="application/json")
def apifxcs(req):
a = req.GET.get('a')
if a == 'listall':
if req.GET.get('zylx'):
zylx = req.GET.get('zylx')
userid = req.session['userid']
companyid = getcompany(userid)
a = Fxcs.objects.filter(
zylx=Dickey.objects.get(dickeyid=zylx), deletemark=1)
a = (a.filter(usecomps__contains=',1,') | a.filter(
usecomps__contains=','+companyid+',')).exclude(nousecomps__contains=','+companyid+',')
total = a.count()
a = a.values('id', 'fxfx', 'aqcs', 'cslx')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'detail':
fxid = req.GET.get('fxid')
obj = Fxcs.objects.filter(id=fxid).values('id','fxfx', 'aqcs', 'cslx')[0]
return JsonResponse({"code": 1, "data":obj})
elif a == 'add':
data = json.loads(req.body.decode('utf-8'))
userid = req.session['userid']
companyid = getcompany(userid)
if data['zylx']:
zylx = data['zylx']
fxfx = data['fxfx']
aqcs = data['aqcs']
cslx = data['cslx']
Fxcs.objects.create(zylx=Dickey.objects.get(
dickeyid=zylx), fxfx=fxfx, aqcs=aqcs, cslx=cslx, usecomps=','+companyid+',')
return JsonResponse({"code": 1})
elif a == 'edit':
data = json.loads(req.body.decode('utf-8'))
fxid = data['id']
userid = req.session['userid']
companyid = getcompany(userid)
if Fxcs.objects.get(id=fxid).usecomps == ','+ companyid +',':
obj = Fxcs.objects.get(id=fxid)
obj.fxfx = data['fxfx']
obj.aqcs = data['aqcs']
obj.cslx = data['cslx']
obj.save()
return JsonResponse({"code": 1})
else:
return JsonResponse({"code": 0})
elif a == 'del':
userid = req.session['userid']
companyid = getcompany(userid)
fxid = req.GET.get('id')
if User.objects.get(userid=userid).issuper == 1:
a = Fxcs.objects.get(id=fxid)
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})
def apioperationspjd(req):
a = req.GET.get('a')
if a == 'add':
data = json.loads(req.body.decode('utf-8'))
userid = req.session['userid']
companyid = getcompany(userid)
if data['zylx']:
zylx = Dickey.objects.get(dickeyid=data['zylx'])
jdmc = data['jdmc']
spbm = Partment.objects.get(partid=data['spbm'])
#spr = User.objects.get(userid=data['spr'])
sprs = data['spr']
Operationspjd.objects.create(
jdmc=jdmc, zylx=zylx, spbm=spbm, sprs=sprs, usecomp=Partment.objects.get(partid=companyid))
return JsonResponse({"code": 1})
elif a == 'listall':
if req.GET.get('zylx'):
zylx = req.GET.get('zylx')
userid = req.session['userid']
companyid = getcompany(userid)
a = Operationspjd.objects.filter(zylx=Dickey.objects.get(
dickeyid=zylx), usecomp=Partment.objects.get(partid=companyid)).order_by('id')
total = a.count()
a = a.values('id', 'jdmc', 'spbm__partname', 'sprs')
for i in a:
i['sprnames'] = list(User.objects.filter(
userid__in=i['sprs']).values_list('name', flat=True))
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'del':
id = req.GET.get('id')
userid = req.session['userid']
if User.objects.get(userid=userid).issuper == 1:
Operationspjd.objects.get(id=id).delete()
return JsonResponse({"code": 1})
else:
return JsonResponse({"code": 0})
def apiquestion(req):
a = req.GET.get('a')
userid = req.session['userid']
companyid = getcompany(userid)
if a == 'listall':
x = Question.objects.filter(deletemark=1)
a = x.exclude(nousecomps__contains=','+companyid+',').filter(Q(usecomps__contains=',1,') | Q(usecomps__contains=','+companyid+','))
if req.GET.get('tmlx'):
tmlx = req.GET.get('tmlx')
a = a.filter(Q(questioncat__link__contains=',' +
str(tmlx)+',') | Q(questioncat__id=tmlx))
elif req.GET.get('gwlx'):
gwlx = req.GET.get('gwlx')
a = a.filter(station=Group.objects.get(groupid=gwlx))
total = a.count()
startnum, endnum = fenye(req)
a = a.order_by('-id')[startnum:endnum].values('id', 'title', 'type', 'level', 'questioncat__id',
'questioncat__name', 'mark', 'createuser__name', 'answer', 'right', 'resolution','usecomps')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'search':
data = json.loads(req.body.decode('utf-8'))
tmfls = data['tmfls']
a = Question.objects.filter(deletemark=1, questioncat__id__in=tmfls)
if 'repeat' in data and data['repeat'] == 'no':
excludequestions = ExamTest.objects.filter(usecomps__contains=','+companyid +
',').exclude(nousecomps__contains=','+companyid+',').values_list('exampaper__question__id',flat=True).distinct()
a = a.exclude(id__in=excludequestions)
dxnum = a.filter(type=1).count()
duoxnum = a.filter(type=2).count()
pdnum = a.filter(type=3).count()
return JsonResponse({'dxnum': dxnum, 'duoxnum': duoxnum, 'pdnum': pdnum})
elif a == 'add' or a == 'edit':
data = json.loads(req.body.decode('utf-8'))
userid = req.session['userid']
companyid = getcompany(userid)
type = data['type']
level = data['level']
title = data['title']
if a == 'add':
obj = Question()
else:
obj = Question.objects.get(id=data['id'])
obj.type = type
obj.level = level
obj.title = title
if 'cate' in data:
obj.questioncat = Questioncat.objects.get(id=data['cate'])
if 'station' in data: # 岗位
if data['station']:
obj.station = Group.objects.get(groupid=data['station'])
answer = {}
if 'A' in data:
answer['A'] = data['A']
if 'B' in data:
answer['B'] = data['B']
if 'C' in data:
answer['C'] = data['C']
if 'D' in data:
answer['D'] = data['D']
if 'E' in data:
answer['E'] = data['E']
if 'F' in data:
answer['F'] = data['F']
obj.answer = answer
obj.right = data['right']
if 'resolution' in data:
obj.resolution = data['resolution']
if 'label' in data:
obj.label = data['label']
obj.usecomps = ','+companyid+','
obj.createuser = User.objects.get(userid=userid)
obj.save()
return JsonResponse({"code": 1})
elif a == 'del':
id = req.GET.get('id')
user = User.objects.get(userid=userid)
a = Question.objects.get(id=id)
if user.issuper == 1 or a.createuser == user:
nl = a.nousecomps.split(',')
nl.append(companyid)
nl = ','+','.join(list(set(list(filter(None, nl)))))+','
a.nousecomps = nl
a.save()
return JsonResponse({"code": 1})
else:
return JsonResponse({"code": 0})
elif a == 'detail':
id = req.GET.get('id')
a = Question.objects.filter(id=id).values(
'id', 'title', 'type', 'level', 'questioncat__id', 'station__groupid', 'right', 'answer', 'resolution')
return JsonResponse(a[0])
elif a == 'canedit':
id = req.GET.get('id')
a = Question.objects.get(id=id)
if a.usecomps == ','+companyid+',' or int(companyid) == 1:
return JsonResponse({'code': 1})
else:
return JsonResponse({"code": 0})
elif a == 'exercise':
data = json.loads(req.body.decode('utf-8'))
x = Question.objects.filter(deletemark=1)
#a = (x.filter(usecomps__contains=',1,')|x.filter(usecomps__contains=','+companyid+',')).exclude(nousecomps__contains=','+companyid+',')
a = x.exclude(nousecomps__contains=','+companyid+',')
tmlxs = data['tmlx']
ydtms = data['ydtms']
a = x.filter(questioncat__id__in=tmlxs).exclude(id__in=ydtms)
total = a.count()
a = a[:10].values('id', 'title', 'type', 'level', 'questioncat__id',
'questioncat__name', 'mark', 'createuser__name', 'answer', 'right', 'resolution')
return HttpResponse(transjson(total, a), content_type="application/json")
def apiexampaper(req):
a = req.GET.get('a')
userid = req.session['userid']
companyid = getcompany(userid)
if a == 'listall':
a = ExamPaper.objects.filter(deletemark=1)
a = a.filter(usecomps__contains=','+companyid +
',').exclude(nousecomps__contains=','+companyid+',').order_by('-id')
total = a.count()
startnum, endnum = fenye(req)
a = a[startnum:endnum].values('id', 'num', 'name', 'state', 'total')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'listok':
a = ExamPaper.objects.filter(deletemark=1, state=1)
a = a.filter(usecomps__contains=','+companyid +
',').exclude(nousecomps__contains=','+companyid+',').order_by('-id')
total = a.count()
startnum, endnum = fenye(req)
a = a[startnum:endnum].values('id', 'num', 'name', 'state', 'total')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'add':
data = json.loads(req.body.decode('utf-8'))
totalnum = data['totalnum']
dxnum = data['dxnum']
dxs = data['dxs'] # 单选得分
duoxnum = data['duoxnum']
duoxs = data['duoxs']
pdnum = data['pdnum']
pds = data['pds']
name = data['name']
tms = data['tms']
totalscore = int(dxs)*int(dxnum)+int(duoxs) * \
int(duoxnum)+int(pds)*int(pdnum)
obj = ExamPaper()
obj.num = 'SJ'+time.strftime('%Y%m%d%H%M%S')
obj.name = name
obj.usecomps = ','+str(companyid)+','
obj.total = {'total': {'num': totalnum, 'score': totalscore}, 'dx': {'num': dxnum, 'score': dxs}, 'duox': {
'num': duoxnum, 'score': duoxs}, 'pd': {'num': pdnum, 'score': pds}}
obj.save()
for i in tms:
if int(i['type']) == 1:
ExamPaperDetail.objects.create(
exampaper=obj, question=Question.objects.get(id=i['id']), score=int(dxs))
elif int(i['type']) == 2:
ExamPaperDetail.objects.create(
exampaper=obj, question=Question.objects.get(id=i['id']), score=int(duoxs))
elif int(i['type']) == 3:
ExamPaperDetail.objects.create(
exampaper=obj, question=Question.objects.get(id=i['id']), score=int(pds))
return JsonResponse({"code": 1})
elif a == 'del':
id = req.GET.get('id')
user = User.objects.get(userid=userid)
a = ExamPaper.objects.get(id=id)
if user.issuper == 1:
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 a == 'stop':
userid = req.session['userid']
companyid = getcompany(userid)
id = req.GET.get('id')
user = User.objects.get(userid=userid)
a = ExamPaper.objects.get(id=id)
if user.issuper == 1:
a.state = 0
a.save()
return JsonResponse({"code": 1})
else:
return JsonResponse({"code": 0})
elif a == 'detail':
id = req.GET.get('id')
obj = ExamPaper.objects.get(id=id)
return JsonResponse(obj.total)
elif a == 'detailtms':
id = req.GET.get('id')
obj = ExamPaper.objects.filter(id=id)
data = obj.values('name', 'total')[0]
tms = ExamPaperDetail.objects.filter(exampaper__id=id).values(
'question__id', 'question__title', 'question__answer', 'question__right', 'question__type', 'question__resolution')
data['tms'] = list(tms)
return JsonResponse(data)
elif a == 'exportword':
id = req.GET.get('id')
res = exportdoc('exampaper', id)
return res
elif a == 'edit':
data = json.loads(req.body.decode('utf-8'))
id = data['id']
totalnum = data['totalnum']
dxnum = data['dxnum']
dxs = data['dxs'] # 单选得分
duoxnum = data['duoxnum']
duoxs = data['duoxs']
pdnum = data['pdnum']
pds = data['pds']
name = data['name']
tms = data['tms']
totalscore = int(dxs)*int(dxnum)+int(duoxs) * \
int(duoxnum)+int(pds)*int(pdnum)
obj = ExamPaper.objects.get(id=id)
obj.name = name
obj.usecomps = ','+str(companyid)+','
obj.total = {'total': {'num': totalnum, 'score': totalscore}, 'dx': {'num': dxnum, 'score': dxs}, 'duox': {
'num': duoxnum, 'score': duoxs}, 'pd': {'num': pdnum, 'score': pds}}
obj.save()
ExamPaperDetail.objects.filter(exampaper=obj).delete()
for i in tms:
if int(i['type']) == 1:
ExamPaperDetail.objects.create(
exampaper=obj, question=Question.objects.get(id=i['id']), score=int(dxs))
elif int(i['type']) == 2:
ExamPaperDetail.objects.create(
exampaper=obj, question=Question.objects.get(id=i['id']), score=int(duoxs))
elif int(i['type']) == 3:
ExamPaperDetail.objects.create(
exampaper=obj, question=Question.objects.get(id=i['id']), score=int(pds))
return JsonResponse({"code": 1})
def apiexamtest(req):
a = req.GET.get('a')
userid = req.session['userid']
companyid = getcompany(userid)
if a == 'listall':
a = ExamTest.objects
a = a.filter(usecomps__contains=','+companyid +
',').exclude(nousecomps__contains=','+companyid+',')
state = req.GET.get('state',None)
owner = req.GET.get('owner',None)
if state == 'open':
a = a.filter(state=1)
if state == 'close':
a = a.filter(state=0)
if owner == 'yes':
ownerlist = ExamTestDetail.objects.filter(user__userid=userid, examtest__state=1,ison=0).values_list('examtest__id',flat=True)
a = a.filter(Q(id__in=ownerlist)|Q(ispublic=1))
a = a.order_by('-id')
total = a.count()
startnum, endnum = fenye(req)
a = a[startnum:endnum].values('id', 'num', 'name', 'state', 'type', 'exampaper__id',
'exampaper__name', 'starttime', 'endtime', 'duration', 'createuser__name', 'createtime','passscore')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'listok':
a = ExamTest.objects
a = a.filter(usecomps__contains=','+companyid +
',').exclude(nousecomps__contains=','+companyid+',').order_by('-id')
total = a.count()
startnum, endnum = fenye(req)
a = a[startnum:endnum].values('id', 'num', 'name', 'state', 'type', 'exampaper__id',
'exampaper__name', 'starttime', 'endtime', 'duration', 'createuser__name', 'createtime')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'listtrain':
a = ExamTest.objects
a = a.filter(usecomps__contains=','+companyid +
',').exclude(nousecomps__contains=','+companyid+',').order_by('-id')
a = a[:10].values('id', 'name')
return HttpResponse(transstr(a, 'id', 'name'), content_type="application/json")
elif a == 'add':
data = json.loads(req.body.decode('utf-8'))
obj = ExamTest()
obj.num = 'KS'+time.strftime('%Y%m%d%H%M%S')
obj.name = data['name']
obj.usecomps = ','+str(companyid)+','
expaper = ExamPaper.objects.get(id=data['exampaper'])
obj.exampaper = expaper
if 'starttime' in data:
if data['starttime']:
obj.starttime = data['starttime']
if 'endtime' in data:
if data['endtime']:
obj.endtime = data['endtime']
if 'ispublic' in data:
if data['ispublic'] == 'yes':
obj.ispublic = 1
else:
obj.ispublic = 0
obj.totalscore = expaper.total['total']['score']
obj.passscore = data['passscore']
obj.duration = data['duration']
obj.createuser = User.objects.get(userid=userid)
obj.save()
obj.qrcode = makeqr_examtest(
'https://safeyun.ctcshe.com/miniprogram/examtest?id='+str(obj.id))
obj.save()
if 'participant' in data and data['participant']:
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 == 'add2':
data = json.loads(req.body.decode('utf-8'))
# print(data)
obj = ExamTest()
obj.num = 'KS'+time.strftime('%Y%m%d%H%M%S')
obj.name = data['name']
obj.usecomps = ','+str(companyid)+','
# 创建随机试卷
dxnum = int(data['dxnum'])
dxs = int(data['dxs']) # 单选得分
duoxnum = int(data['duoxnum'])
duoxs = int(data['duoxs'])
pdnum = int(data['pdnum'])
pds = int(data['pds'])
totalnum = dxnum+duoxnum+pdnum
name = 'CTSJ'+time.strftime('%Y%m%d%H%M%S')
totalscore = int(dxs)*int(dxnum)+int(duoxs) * \
int(duoxnum)+int(pds)*int(pdnum)
objpaper = ExamPaper()
objpaper.deletemark = 0
objpaper.num = name
objpaper.name = '自动抽题试卷'
objpaper.usecomps = ','+str(companyid)+','
objpaper.total = {'total': {'num': totalnum, 'score': totalscore}, 'dx': {
'num': dxnum, 'score': dxs}, 'duox': {'num': duoxnum, 'score': duoxs}, 'pd': {'num': pdnum, 'score': pds}}
objpaper.save()
questionobjs = Question.objects.filter(
questioncat__id__in=data['tmfls'])
if 'repeat' in data and data['repeat'] == 'no':
excludequestions = ExamTest.objects.filter(usecomps__contains=','+companyid +
',').exclude(nousecomps__contains=','+companyid+',').values_list('exampaper__question__id',flat=True).distinct()
questionobjs = questionobjs.exclude(id__in=excludequestions)
if dxnum > 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)
if 'ispublic' in data:
if data['ispublic'] == 'yes':
obj.ispublic = 1
else:
obj.ispublic = 0
obj.save()
obj.qrcode = makeqr_examtest(
'https://safeyun.ctcshe.com/miniprogram/examtest?id='+str(obj.id))
obj.save()
if 'participant' in data and data['participant']:
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:
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 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 == 'detail2':
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]
a['notinTime'] = 0
if a['starttime'] > datetime.now():
a['notinTime'] = 1
if 'endtime' in a and a['endtime'] < datetime.now():
a['notinTime'] = 1
objs = ExamTestDetail.objects.filter(examtest__id=id).order_by('-score','-took').values(
'id', 'user__name', 'user__ubelongpart__partname', 'took', 'score', 'ison', 'passcode','starttime')
a['cjrydetail'] = list(objs)
a['ison'] = 0
tests = ExamTestDetail.objects.filter(examtest__id=id,user__userid=userid)#考试记录
if tests.exists():
a['ison'] = tests[0].ison
return HttpResponse(json.dumps(a, cls=MyEncoder), content_type="application/json")
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]
a['notinTime'] = 0
if a['starttime'] > datetime.now():
a['notinTime'] = 1
if 'endtime' in a and a['endtime'] < datetime.now():
a['notinTime'] = 1
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).order_by('question__type','?').values(
'id', 'question__id', 'score', 'question__title', 'question__type', 'question__answer', 'question__resolution')
duration = test.duration
data = {'duration': duration, 'tms': list(objs), 'starttime':datetime.now().strftime('%Y-%m-%d %H:%M:%S')}
return JsonResponse(data)
elif a == 'exportword':
data = json.loads(req.body.decode('utf-8'))
url = exportdoc2('ks', data)
return JsonResponse({"code": 1, "downloadurl": url})
elif a == 'dknum':#未参加且还未关闭的考试
a = ExamTest.objects
a = a.filter(usecomps__contains=','+companyid + #未关闭的考试
',').exclude(nousecomps__contains=','+companyid+',').filter(state=1,endtime__gte=datetime.now())
ownerlist = ExamTestDetail.objects.filter(user__userid=userid, examtest__state=1,ison=0).values_list('examtest__id',flat=True)
dknum = a.filter(Q(id__in=ownerlist)|Q(ispublic=1)).count()
return JsonResponse({"code":1, "dknum":dknum})
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)
total = a.count()
startnum, endnum = fenye(req)
a = a.order_by('-starttime')[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']
examtestobj = ExamTest.objects.get(id=testid)
obj,created = ExamTestDetail.objects.get_or_create(examtest = examtestobj, user__userid=userid,
defaults={'examtest': examtestobj,'user':User.objects.get(userid=userid)})
starttime = data['starttime']
endtime = datetime.now()
took = (endtime - datetime.strptime(starttime, '%Y-%m-%d %H:%M:%S')).total_seconds() #计算相差多少秒
# if 'took' in data:
# if data['took']<took:
# took = data['took']
testdetail = data['sheet']
score = 0
rights = 0
tms = []
wrongs = []
answers = ExamPaperDetail.objects.filter(exampaper=examtestobj.exampaper).values('id', 'question__right')
answersdict = {}
for i in answers:
answersdict['paperdetail' + str(i['id'])] = i['question__right']
for i in testdetail: # 判卷
iscore = 0
i['question__right'] = answersdict['paperdetail'+str(i['id'])]
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:
miniscore = i['score']/len(i['question__right'])
wrongs.append(str(i['question__id']))
for x in i['userchecked']:
if x in i['question__right']:
iscore = iscore + miniscore
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.testnum = obj.testnum + 1
obj.starttime = starttime
obj.endtime = endtime
obj.took = took
obj.testdetail = testdetail
obj.rights = rights
score = round(score,1)
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, passcode=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, 'examtestid':obj.examtest.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.save()
return JsonResponse({"code":1,"msg":"发布成功!"})
else:
return JsonResponse({"code":2,"msg":"您没有发布权限!"})
elif a == 'rate':
examtestid = req.GET.get('examtestid')
examtestobj = ExamTest.objects.get(id=examtestid)
objs = ExamTestDetail.objects.filter(examtest=examtestobj)
objs = objs.order_by('-score','took')
total = objs.count()
startnum, endnum = fenye(req)
objsdata = objs[startnum:endnum].values('id','took', 'score', 'user__name', 'user__ubelongpart__partname', 'user__headimgurl')
return JsonResponse({'total':total,'rows':list(objsdata),'examtestname':examtestobj.name})
elif a == 'totalrate':
startnum, endnum = fenye(req)
with open('ratedata.dat','rb') as f:
data = pickle.load(f)
rows = data['rows']
if req.GET.get('search',None):
rows=[]
for i in data['rows']:
search = req.GET.get('search')
if search in i['user__name'] or search in i['user__ubelongpart__partname']:
rows.append(i)
data['rows'] = rows[startnum:endnum]
return JsonResponse(data)
def apiexamtestrate(req):
'''
公司活动总排名
'''
companyid = req.GET.get('companyid')
alltest = ExamTest.objects.filter(usecomps__contains=','+str(companyid)+',').exclude(nousecomps__contains=','+str(companyid)+',')
allexamtestdetail = ExamTestDetail.objects.filter(examtest__in=alltest,ison=1)
objs = allexamtestdetail.values('user__userid','user__name','user__headimgurl','user__ubelongpart__partname').annotate(totalscore=Sum('score'),totaltook=Sum('took'),testnum=Count('user__userid')).order_by('-totalscore','totaltook')
total = objs.count()
objslist = list(objs)
for i in objslist:
i['rate'] = objslist.index(i) + 1
i['avgscore'] = round(i['totalscore']/i['testnum'],1)
orgsCal = allexamtestdetail.filter(score__gt=0,ison__gt=0).values('user__ubelongpart__partid','user__ubelongpart__partname').annotate(totaltest=Count('user__ubelongpart__partid'),avgscore=Avg('score')).order_by('-totaltest','-avgscore')
allattenduser = allexamtestdetail.values_list('user__userid', flat=True)
orgsCallist = list(orgsCal)
for i in orgsCallist:
users = User.objects.filter(ubelongpart__partid=i['user__ubelongpart__partid'])
usersattend = users.filter(userid__in=allattenduser)
i['totaluser'] = usersattend.count()
i['avgscore'] = round(i['avgscore'],1)
with open('ratedata.dat','wb') as f:
pickle.dump({'total':total,'rows':objslist,'rows2':orgsCallist,'updatetime':datetime.now().strftime('%Y-%m-%d %H:%M')},f)
from openpyxl import Workbook, load_workbook
wb = load_workbook('e:/个人总排名.xlsx')
sheet = wb.active
for i in objslist:
num = str(objslist.index(i)+3)
sheet['a'+num] = i['user__name']
sheet['b'+num] = i['user__ubelongpart__partname']
sheet['c'+num] = i['testnum']
sheet['d'+num] = i['totalscore']
sheet['e'+num] = convertseconds(i['totaltook'])
nowtime = datetime.now().strftime('%Y%m%d')
sheet['b1'] = nowtime
filename = '个人总排名' + nowtime
filepath = 'e:/' + filename +'.xlsx'
wb.save(filepath)
wb2 = load_workbook('e:/机构总排名.xlsx')
sheet = wb2.active
for i in orgsCallist:
num = str(orgsCallist.index(i)+3)
sheet['a'+num] = i['user__ubelongpart__partname']
sheet['b'+num] = i['totaluser']
sheet['c'+num] = i['totaltest']
sheet['d'+num] = i['avgscore']
nowtime = datetime.now().strftime('%Y%m%d')
sheet['b1'] = nowtime
filename = '机构总排名' + nowtime
filepath = 'e:/' + filename +'.xlsx'
wb2.save(filepath)
return JsonResponse({"code": 1})
def convertseconds(seconds):
m, s = divmod(seconds, 60)
h, m = divmod(m, 60)
return ("%02d:%02d:%02d" % (h, m, s))
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")
elif req.GET.get('a') == 'listall':
userid = req.session['userid']
companyid = getcompany(userid)
objs = Trainuser.objects.filter(train__deletemark=1,participant__usecomp__partid=companyid)
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")
elif req.GET.get('a') == 'exportexcel':
userid = req.session['userid']
companyid = getcompany(userid)
a = Trainuser.objects.filter(train__deletemark=1)
if req.GET.get('sry'):
a = a.filter(participant__userid=req.GET.get('sry'))
else:
a = a.filter(participant__userid=userid)
res = exportxlsx('grpxjl', a)
return res
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, deletemark=1).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='已关闭')
objs1 = objs.values('zyqy__id', 'zyqy__name',
'zyqy__polygon').annotate(num=Count('zyqy'))
for i in objs1:
i['zylist'] = list(objs.filter(zyqy__id=i['zyqy__id']).values('zyid','zylx__dickeyname','zyfzr__name',
'zybm__partname').annotate(num=Count('zyry')))
return HttpResponse(json.dumps(list(objs1)), 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','checkform__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':
user = User.objects.get(userid=userid)
if user.issuper == 1:
ids = json.loads(req.body.decode('utf-8'))['ids']
Equipment.objects.filter(id__in=ids).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', 'checkform')
return JsonResponse(a[0])
elif a == 'bindjcb':
data = json.loads(req.body.decode('utf-8'))
ids = data['ids']
form = EquipmentCheckForm.objects.get(id=data['form'])
Equipment.objects.filter(id__in=ids).update(checkform=form)
return JsonResponse({"code": 1})
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', 'type__dickeyname')
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', 'type__dickeyname')
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)
if req.GET.get('num', None):
a = a.filter(equipment__num__contains = req.GET.get('num'))
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', 'type__dickeyname')
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 'type' in data:
a.type = Dickey.objects.get(dickeyid=data['type'])
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,"inspect":a.pk})
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', 'type__dickeyname')
return HttpResponse(json.dumps(a[0], cls=MyEncoder), content_type="application/json")
def apiinspectitem(req):
a = req.GET.get('a')
userid = req.session['userid']
companyid = getcompany(userid)
if a == 'adds':
data = json.loads(req.body.decode('utf-8'))
for i in data['items']:
if 'checked' in i and i['checked']:
obj = InspectItem()
obj.checked = True if 'checked' in i else False
if 'state' in i:
obj.state = i['state']
if i['state'] == '异常待处理':
obj.todouser = getpgr2(userid, User.objects.get(userid=userid).ubelongpart)
obj.checkitem = EquipmentCheckItem.objects.get(pk=i['id'])
obj.inspect = Inspect.objects.get(pk=data['inspect'])
if 'desc' in i:
obj.desc = i['desc']
if 'img' in i:
obj.img = i['img']
obj.save()
if obj.state == '异常待处理':
postdict = {
'touser': obj.todouser.openid,
'template_id': 'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0',
'miniprogram': {'appid': 'wx5c39b569f01c27db'},
'data': {
'first': {
'value': obj.inspect.equipment.name + '-设备异常待处理:'
},
'keyword1': {
'value': obj.desc
},
'keyword2': {
'value': obj.inspect.creattime.strftime("%Y-%m-%d %H:%M")
},
'keyword3': {
'value': ''
},
'remark': {
'value': '请及时处理设备异常!'
}
}
}
send_wechatmsg.delay(postdict)
return JsonResponse({"code": 1})
elif a == 'listmyyc':#我发现的异常记录
objs = InspectItem.objects.filter(inspect__usecomp__partid=companyid, inspect__user__userid=userid).exclude(state='正常')
total = objs.count()
startnum, endnum = fenye(req)
objs = objs.order_by('-id')[startnum:endnum].values('id', 'state', 'inspect', 'checkitem', 'inspect__equipment__name', 'checkitem__name','inspect__user__name', 'inspect__creattime', 'inspect__equipment__num', 'inspect__type__dickeyname')
return HttpResponse(transjson(total, objs), content_type="application/json")
elif a == 'listtodo':#我待办的异常
objs = InspectItem.objects.filter(inspect__usecomp__partid=companyid, todouser__userid=userid, state='异常待处理')
total = objs.count()
startnum, endnum = fenye(req)
objs = objs.order_by('-id')[startnum:endnum].values('id', 'state', 'inspect', 'checkitem', 'inspect__equipment__name', 'checkitem__name','inspect__user__name', 'inspect__creattime', 'inspect__equipment__num', 'inspect__type__dickeyname')
return HttpResponse(transjson(total, objs), content_type="application/json")
elif a == 'listdone':#我已处理的异常
objs = InspectItem.objects.filter(inspect__usecomp__partid=companyid, todouser__userid=userid, state='异常已处理')
total = objs.count()
startnum, endnum = fenye(req)
objs = objs.order_by('-id')[startnum:endnum].values('id', 'state', 'inspect', 'checkitem', 'inspect__equipment__name', 'checkitem__name','inspect__user__name', 'inspect__creattime', 'inspect__equipment__num', 'inspect__type__dickeyname','todouser__name')
return HttpResponse(transjson(total, objs), content_type="application/json")
elif a == 'listyc':#全部异常
objs = InspectItem.objects.filter(inspect__usecomp__partid=companyid).exclude(state='正常')
total = objs.count()
startnum, endnum = fenye(req)
objs = objs.order_by('-id')[startnum:endnum].values('id', 'state', 'inspect', 'checkitem', 'inspect__equipment__name', 'checkitem__name','inspect__user__name', 'inspect__creattime', 'inspect__equipment__num', 'inspect__type__dickeyname','todouser__name')
return HttpResponse(transjson(total, objs), content_type="application/json")
elif a == 'listall':#全部
objs = InspectItem.objects
if req.GET.get('inspect'):
objs = objs.filter(inspect__id=req.GET.get('inspect'))
total = objs.count()
if req.GET.get('pageoff'):
objs = objs.order_by('-id')
else:
startnum, endnum = fenye(req)
objs = objs.order_by('-id')[startnum:endnum]
objs = objs.values('id', 'state', 'inspect', 'checkitem', 'inspect__equipment__name', 'checkitem__name','checkitem__content','inspect__user__name', 'inspect__creattime', 'inspect__equipment__num', 'inspect__type__dickeyname','todouser__name', 'desc', 'desc2', 'img', 'img2')
return HttpResponse(transjson(total, objs), content_type="application/json")
elif a == 'detail':
id = req.GET.get('id')
a = InspectItem.objects.filter(id=id).values('id', 'state', 'inspect', 'checkitem', 'inspect__equipment__name', 'inspect__equipment__id', 'checkitem__name', 'checkitem__content','inspect__user__name', 'inspect__creattime', 'inspect__equipment__num', 'inspect__type__dickeyname',
'img', 'desc', 'img2', 'desc2', 'todouser__name', 'handletime')
return HttpResponse(json.dumps(a[0], cls=MyEncoder), content_type="application/json")
elif a == 'handle':
data = json.loads(req.body.decode('utf-8'))
obj = InspectItem.objects.get(id=data['id'])
obj.desc2 = data['desc2'] if ('desc2' in data and data['desc2']) else None
obj.img2 = data['img2'] if ('img2' in data and data['img2']) else None
obj.handletime = datetime.now()
obj.state = '异常已处理'
if InspectItem.objects.filter(inspect__equipment=obj.inspect.equipment,state='异常待处理').exists():
obj.inspect.equipment.state = 0
obj.inspect.equipment.save()
else:
obj.inspect.equipment.state = 1
obj.inspect.equipment.save()
obj.save()
return JsonResponse({'code': 1})
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 req.GET.get('area', None):
a = a.filter(area__id=req.GET.get('area'))
if req.GET.get('type', None):
a = a.filter(type__dickeyid=req.GET.get('type'))
if req.GET.get('kind', None):
a = a.filter(kind=req.GET.get('kind'))
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()
if 'area' in data and data['area']:
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'])
if 'kind' in data and data['kind']:
obj.kind = data['kind']
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 apigridtaskset(req):
a = req.GET.get('a')
userid = req.session['userid']
companyid = getcompany(userid)
if a == 'listall':
objs = GridTaskSet.objects.filter(riskact__usecomp__partid=companyid)
if req.GET.get('riskact', None):
objs = objs.filter(riskact__id=req.GET.get('riskact'))
total = objs.count()
startnum, endnum = fenye(req)
objs = objs.order_by('-pk')[startnum:endnum].values('id', 'gridlevel__dickeyname', 'user__name',
'schedule', 'note', 'start_task', 'is_paused', 'count')
return HttpResponse(transjson(total, objs), content_type="application/json")
elif a == 'add':
data = json.loads(req.body.decode('utf-8'))
obj = GridTaskSet()
obj.riskact = RiskAct.objects.get(id=data['riskact'])
obj.user = User.objects.get(userid=data['user'])
obj.gridlevel = Dickey.objects.get(dickeyid=data['gridlevel'])
obj.note = data['note'] if 'note' in data and data['note'] else None
obj.start_task = data['start_task']
obj.schedule = data['schedule']
obj.is_paused = False
obj.save()
return JsonResponse({'code': 1})
elif a == 'detail':
objs = GridTaskSet.objects.filter(id=req.GET.get('id'))
objdata = objs.values('id', 'gridlevel__dickeyname', 'user__name','user__userid','gridlevel__dickeyid',
'schedule', 'note', 'start_task', 'is_paused', 'count')[0]
xx = {'code':1, 'data':objdata}
return HttpResponse(json.dumps(xx, cls=MyEncoder), content_type="application/json")
elif a == 'del':
id = req.GET.get('id')
obj = GridTaskSet.objects.get(id=id)
obj.delete()
return JsonResponse({"code": 1})
elif a == 'edit':
data = json.loads(req.body.decode('utf-8'))
obj = GridTaskSet.objects.get(id=data['id'])
obj.user = User.objects.get(userid=data['user'])
obj.gridlevel = Dickey.objects.get(dickeyid=data['gridlevel'])
obj.note = data['note'] if 'note' in data and data['note'] else None
obj.start_task = data['start_task']
obj.schedule = data['schedule']
obj.save()
return JsonResponse({'code': 1})
elif a == 'toggle':
obj = GridTaskSet.objects.get(id=req.GET.get('id'))
if obj.is_paused:
obj.is_paused = False
else:
obj.is_paused = True
obj.save()
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:
if req.GET.get('kind', None):
a = a.filter(riskact__kind=req.GET.get('kind'))
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('-pk','-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 == 'listmytodo2': # 我的待办
objs = RiskActTask.objects.filter(usable=1, istask=1, user__userid=userid)
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 == 'todonum2': # 我的待办统计
objs = RiskActTask.objects.filter(usable=1, user__userid=userid,taskdo=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) # 匹配未处理的任务
objs = RiskActTask.objects.filter(
riskact__id=data['riskact'], usable=1, user=user, istask=1, nowtime__gte = taskadd, nowtime__lte = taskexpire) # 匹配本人未处理的任务
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})
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')
#责任制
def getresbilitydata(req):
a = req.GET.get('a')
userid = req.session['userid']
companyid = getcompany(userid)
if a=='dic':#行为列表
dicclass=req.GET.get('dicclass')
a = Dickey.objects.filter(dicparent=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')
return HttpResponse(transstr(a,'dickeyid','dickeyname'),content_type="application/json")
elif a=='job':#岗位列表
joblist = Group.objects.filter(usecomp__partid=companyid).exclude(grouptype=0).values('groupid', 'groupname', 'grouptype')
return HttpResponse(transstr(joblist,'groupid','groupname'),content_type="application/json")
elif a== 'tree':#部门列表
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 a== 'upload':#文件上传
username = User.objects.get(userid=req.session['userid']).username
file_name = time.strftime('%Y%m%d%H%M%S')+ '_' + req.FILES['mf'].name
user_upload_folder = os.path.join('media/zeren', 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['mf'].read())
return JsonResponse({"code":1,"filename":file_name,"filepath":filepath})
elif a=='add':#新增责任制
obj = Resbility()
data = json.loads(req.body.decode('utf-8'))
obj.title = data['title']
if 'group' in data and data['group']:
obj.jobs =Group.objects.get(groupid= data['group'])
if 'type' in data and data['type']:
obj.homeworktype= Dickey.objects.get(dickeyid=data['type'])
if data['filepath']:
obj.resbilitypath=data['filepath']
obj.createuser=User.objects.get(userid=userid)
if 'publisdate' in data and data['publisdate']:
obj.createdate=data['publisdate']
obj.usecomp=Partment.objects.get(partid=companyid)
if data['filepath']:
obj.filepath=data['filepath']
if 'jobpart' in data and data['jobpart']:
obj.department=Partment.objects.get(partid=data['jobpart'])
obj.save()
return JsonResponse({"code":1})
elif a=='listall':#责任列表
startnum,endnum=fenye(req)
#groups = Group.objects.filter(users__userid=userid)
# part= Partment.objects.filter(partid=User.objects.get(userid=userid).ubelongpart.partid)
#a = Resbility.objects.filter(usecomp=companyid,jobs__in=groups,department__in=part).order_by('id')
a = Resbility.objects.filter(usecomp=companyid,deletemark=1).order_by('id')
total = a.count()
startnum,endnum=fenye(req)
a = a[startnum:endnum].values('id','title','department__partname','jobs__groupname','resbilitypath','homeworktype__dickeyname','createdate','createuser__name','reads')
return HttpResponse(transjson(total,a),content_type="application/json")
#点击阅读
elif a=='readnum':
id =req.GET.get('id')
a = Resbility.objects.get(id=id)
a.reads=a.reads+1
a.save()
obj = Readerblility()
obj.readid=a
obj.num=''
obj.readeruser=User.objects.get(userid=userid)
obj.save()
return JsonResponse({"code":1,"url": a.resbilitypath})
#删除
elif a == 'del':
id =req.GET.get('id')
userid = req.session['userid']
companyid = getcompany(userid)#公司ID
a = Resbility.objects.get(id=id)
if a.createuser==User.objects.get(userid=userid):
a.deletemark=0
a.save()
return JsonResponse({"code":1})
else:
return JsonResponse({"code":0})
elif a=='detail':
id =req.GET.get('zrid')
a = Readerblility.objects.filter(readid=id).values('id','readeruser__name','readertime')
total = a.count()
return HttpResponse(transjson(total,a),content_type="application/json")
#操作规程
def getprodata(req):
a = req.GET.get('a')
userid = req.session['userid']
companyid = getcompany(userid)
if a=='dic':#行为列表
dicclass=req.GET.get('dicclass')
a = Dickey.objects.filter(dicparent=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')
return HttpResponse(transstr(a,'dickeyid','dickeyname'),content_type="application/json")
elif a=='job':#岗位列表
joblist = Group.objects.filter(usecomp__partid=companyid).exclude(grouptype=0).values('groupid', 'groupname', 'grouptype')
return HttpResponse(transstr(joblist,'groupid','groupname'),content_type="application/json")
elif a== 'tree':#部门列表
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 a== 'upload':#文件上传
username = User.objects.get(userid=req.session['userid']).username
file_name = time.strftime('%Y%m%d%H%M%S')+ '_' + req.FILES['mf'].name
user_upload_folder = os.path.join('media/caozuo', 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['mf'].read())
return JsonResponse({"code":1,"filename":file_name,"filepath":filepath})
elif a=='add':#新增责任制
obj = Operproce()
data = json.loads(req.body.decode('utf-8'))
obj.title = data['title']
if 'group' in data and data['group']:
obj.jobs =Group.objects.get(groupid= data['group'])
if 'type' in data and data['type']:
obj.homeworktype= Dickey.objects.get(dickeyid=data['type'])
if 'jobpart' in data and data['jobpart']:
obj.department=Partment.objects.get(partid=data['jobpart'])
if data['filepath']:
obj.operprocepath=data['filepath']
obj.createuser=User.objects.get(userid=userid)
if 'publisdate' in data and data['publisdate']:
obj.createdate=data['publisdate']
obj.usecomp=Partment.objects.get(partid=companyid)
if data['filepath']:
obj.filepath=data['filepath']
obj.save()
return JsonResponse({"code":1})
elif a=='listall':#责任列表
startnum,endnum=fenye(req)
#groups = Group.objects.filter(users__userid=userid)
# part= Partment.objects.filter(partid=User.objects.get(userid=userid).ubelongpart.partid)
#a = Resbility.objects.filter(usecomp=companyid,jobs__in=groups,department__in=part).order_by('id')
a = Operproce.objects.filter(usecomp=companyid,deletemark=1).order_by('id')
total = a.count()
startnum,endnum=fenye(req)
a = a[startnum:endnum].values('id','title','department__partname','jobs__groupname','operprocepath','homeworktype__dickeyname','createdate','createuser__name','reads')
return HttpResponse(transjson(total,a),content_type="application/json")
#点击阅读
elif a=='readnum':
id =req.GET.get('id')
a = Operproce.objects.get(id=id)
a.reads=a.reads+1
a.save()
obj = ReaderOperproce()
obj.readid=a
obj.num=''
obj.readeruser=User.objects.get(userid=userid)
obj.save()
return JsonResponse({"code":1,"url": a.operprocepath})
#删除
elif a == 'del':
id =req.GET.get('id')
userid = req.session['userid']
companyid = getcompany(userid)#公司ID
a = Operproce.objects.get(id=id)
if a.createuser==User.objects.get(userid=userid):
a.deletemark=0
a.save()
return JsonResponse({"code":1})
else:
return JsonResponse({"code":0})
elif a=='detail':
id =req.GET.get('zrid')
a = ReaderOperproce.objects.filter(readid=id).values('id','readeruser__name','readertime')
total = a.count()
return HttpResponse(transjson(total,a),content_type="application/json")
def checkprojects(req):
a = req.GET.get('a')
userid = req.session['userid']
companyid = getcompany(userid)
if a == 'add':
data = json.loads(req.body.decode('utf-8'))
if data['id']==0:
obj = Checkproject()
obj.checktitle = data['checktitle']
obj.checkcontent = data['checkcontent']
obj.createuser = User.objects.get(userid=userid)
obj.requirements = data['requirements']
obj.usecomp=Partment.objects.get(partid=companyid)
obj.save()
else:
obj = Checkproject.objects.get(id=data['id'])
obj.checktitle = data['checktitle']
obj.checkcontent = data['checkcontent']
obj.requirements = data['requirements']
obj.save()
return JsonResponse({"code": 1})
elif a == 'detail':
obj = Checkproject.objects.filter(id=req.GET.get('id'))
obj = obj.values('checktitle', 'checkcontent', 'requirements')[0]
return JsonResponse({'code': 1, 'data': obj})
elif a == 'project':
projectlist = Checkproject.objects.filter(usecomp__partid=companyid).values('id', 'checktitle', 'checkcontent')
return HttpResponse(transstr(projectlist,'id','checktitle'),content_type="application/json")
elif a == 'listall':
startnum,endnum = fenye(req)
a = Checkproject.objects.filter(usecomp=Partment.objects.get(partid=companyid), deletemark=1)
total = a.count()
startnum, endnum = fenye(req)
a = a[startnum:endnum].values('id','checktitle', 'checkcontent', 'requirements', 'createuser__name', 'createdate')
return HttpResponse(transjson(total, a), content_type="application/json")
#任务表保存
elif a == 'addcheck':
data = json.loads(req.body.decode('utf-8'))
obj = Checktable()
obj.checktitle = data['checktaskname']
obj.checkcontent=data['checkcontent']
obj.createuser = User.objects.get(userid=userid)
obj.usecomp=Partment.objects.get(partid=companyid)
obj.save()
#list = data['checkprjtype']
#for i in list:
# x = Checkproject.objects.get(id=i)
# obj.checkprjtype.add(x)
return JsonResponse({"code": 1})
#任务列表
elif a == 'listall2':
startnum,endnum = fenye(req)
a = Checktable.objects.filter(usecomp=Partment.objects.get(partid=companyid), deletemark=1)
total = a.count()
startnum, endnum = fenye(req)
a = a[startnum:endnum].values('id','checktitle','checkcontent', 'createuser__name','createdate')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'listall3':
startnum,endnum = fenye(req)
a = Checktask.objects.filter(usecomp=Partment.objects.get(partid=companyid), deletemark=1).order_by('-createdate')
total = a.count()
startnum, endnum = fenye(req)
a = a[startnum:endnum].values('id','checktaskname','taskstate','tasktype','checktype__checktitle','checkplace', 'checktime','createuser__name','createdate')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'listall4':
startnum,endnum = fenye(req)
a = Checkjob.objects.filter(usecomp=Partment.objects.get(partid=companyid),checkname__userid=userid,deletemark=1).order_by('-starttime')
total = a.count()
startnum, endnum = fenye(req)
a = a.order_by('-starttime')[startnum:endnum].values('id','checktask__checktaskname','jobstate','starttime','endtime','yanshou','checkquestion','zguser__username','zgtime','checktask__checktype__checktitle','checkname__username','checkname__name', 'taskstate','checktask__checktime','createuser__username','createdate')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'listchuli':
a = Checkjob.objects.filter(usecomp=Partment.objects.get(partid=companyid),taskstate=2,checktask__createuser__userid=userid).exclude(deletemark=0,yanshou=None)
total = a.count()
startnum, endnum = fenye(req)
a = a.order_by('-starttime')[startnum:endnum].values('id','checkname__name','checktask__checktaskname','jobstate','starttime','endtime','yanshou','checkquestion','zguser__username','zgtime','checktask__checktype__checktitle','checkname__username', 'taskstate','checktask__checktime','createuser__username','createdate')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'wxlistall':
a = Checkjob.objects.filter(usecomp=Partment.objects.get(partid=companyid),taskstate=2).exclude(deletemark=0)
total = a.count()
startnum, endnum = fenye(req)
a = a.order_by('-starttime')[startnum:endnum].values('id','checkname__name','checktask__checktaskname','jobstate','starttime','endtime','yanshou','checkquestion','zguser__username','zgtime','checktask__checktype__checktitle','checkname__username', 'taskstate','checktask__checktime','createuser__username','createdate')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'listself':
a = Checkjob.objects.filter(usecomp=Partment.objects.get(partid=companyid),checkname__userid=userid,deletemark=1)
s=a.filter(Q(taskstate=1)|Q(taskstate=4))
total = s.count()
startnum, endnum = fenye(req)
a = s.order_by('-starttime')[startnum:endnum].values('id','checkname__name','checktask__checktaskname','jobstate','starttime','endtime','yanshou','checkquestion','zguser__username','zgtime','checktask__checktype__checktitle','checkname__username', 'taskstate','checktask__checktime','createuser__username','createdate')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'listallx':
a = Checkjob.objects.filter(usecomp=Partment.objects.get(
partid=companyid),deletemark=1)
total = a.count()
startnum, endnum = fenye(req)
a = a.order_by('-starttime')[startnum:endnum].values('id','checkname__name','checktask__checktaskname','jobstate','starttime','endtime','yanshou','checkquestion','zguser__username','zgtime','checktask__checktype__checktitle','checkname__username', 'taskstate','checktask__checktime','createuser__username','createdate')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'jobdetail':
obj = Checkjob.objects.filter(id=req.GET.get('id'))
obj = obj.values('checktask__checktaskname','zguser','yhtp','content','jctime','zgtime','checkname__name','zgjg','jobstate','taskstate','checkquestion','checktask__checkplace','checktask__checktype__checkcontent','checkname__username','checktask__checktime')[0]
if obj['yhtp']:
obj['yhtp'] = obj['yhtp'].split('?')
else:
obj['yhtp'] == []
return JsonResponse({'code': 1, 'data': obj})
elif a == 'addjob':
data = json.loads(req.body.decode('utf-8'))
yhtp = '?'.join(data['yhtp1']) if 'yhtp1' in data else []
zghtp = '?'.join(data['zghtp']) if 'zghtp' in data else []
obj = Checkjob.objects.get(id=req.GET.get('jobid'))
if data['checkquestion']:
obj.checkquestion = data['checkquestion']
obj.zgjg = data['zgjg']
obj.taskstate =int(data['taskstate'])
obj.createuser = User.objects.get(userid=userid)
obj.content=data['content']
obj.jctime=datetime.now()
obj.zgtime=datetime.now()
if yhtp:
obj.yhtp=yhtp
obj.zghtp=zghtp
s=[]
if data['participant']!="":
list = data['participant'].split(',')
for i in list:
x = User.objects.get(userid=i)
obj.pmpeople.add(x)
s.append(x.openid)
postdict = {
'touser': '',
'template_id': 'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0',
"miniprogram": {"appid": "wx5c39b569f01c27db"},
'data': {
'first': {
'value': '处罚通知:'
},
'keyword1': {
'value':'经验教训:'+ obj.content
},
'keyword2': {
'value': '通知时间:'+str(obj.createdate)
},
'keyword3': {
'value': '涉及人员:'+obj.createuser.name
},
'remark': {
'value': '请及时查看阅读'
}
}
}
send_wechatmsgs.delay(postdict, s)
obj.save()
obj_checktask = obj.checktask
if obj_checktask.zxstate==2:
for i in obj_checktask.checkname.all():
if i.userid != userid:
Checkjob.objects.filter(checkname=i,checktask=obj_checktask).update(taskstate=3)
return JsonResponse({'code': 1})
elif a == 'yanshou':
obj = Checkjob.objects.get(id=req.GET.get('id'))
obj.yanshou = datetime.now()
obj.yanshouren = User.objects.get(userid=userid)
obj.save()
return JsonResponse({'code': 1})
elif a=='checktablist':
projectlist = Checktable.objects.filter(usecomp__partid=companyid,deletemark=1).values('id', 'checktitle')
return HttpResponse(transstr(projectlist,'id','checktitle'),content_type="application/json")
elif a=='checktablist2':
projectlist = Checktask.objects.filter(usecomp__partid=companyid,deletemark=1).values('id', 'checktaskname')
return HttpResponse(transstr(projectlist,'id','checktaskname'),content_type="application/json")
elif a=='addchecklist':
data = json.loads(req.body.decode('utf-8'))
tasktype=int(data['tasktype'])
starttime =datetime.strptime(str(data['starttime']), '%Y-%m-%d %H:%M')
obj = Checktask()
obj.checktaskname = data['checktaskname']
obj.checktime=starttime
obj.checkplace=data['checkplace']
obj.zxstate=data['zxstate']
obj.tasktype=tasktype
obj.checktype =Checktable.objects.get(id=data['checktabtitle'])
obj.createuser = User.objects.get(userid=userid)
obj.usecomp=Partment.objects.get(partid=companyid)
obj.userlist=data['participant'].split(',')
obj.save()
list = data['participant'].split(',')
s=[]
for i in list:
x = User.objects.get(userid=i)
obj.checkname.add(x)
objs = Checkjob()
objs.checktask=obj
objs.checkname=x
objs.taskstate=4
objs.starttime=starttime
if tasktype==1:
objs.endtime =starttime+ timedelta(days=1)
elif tasktype==2:
objs.endtime=starttime + timedelta(days=7)
elif tasktype==3:
objs.endtime=starttime+ timedelta(days=30)
elif tasktype==4:
objs.endtime=starttime + timedelta(days=120)
elif tasktype==5:
objs.endtime=starttime + timedelta(days=182)
elif tasktype==6:
objs.endtime=starttime + timedelta(days=365)
objs.usecomp=Partment.objects.get(partid=companyid)
objs.save()
s.append(x.openid)
postdict = {
'touser': '',
'template_id': 'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0',
"miniprogram": {"appid": "wx5c39b569f01c27db"},
'data': {
'first': {
'value': '检查任务通知:'
},
'keyword1': {
'value':'任务名:'+ obj.checktaskname
},
'keyword2': {
'value': '执行时间:'+str(data['starttime'])
},
'keyword3': {
'value': '发布人:'+obj.createuser.name
},
'remark': {
'value': '请及时查看阅读'
}
}
}
send_wechatmsgs.delay(postdict, s)
return JsonResponse({"code": 1})
#专项检查
elif a=='addchecklist2':
data = json.loads(req.body.decode('utf-8'))
starttime =datetime.strptime(str(data['starttime']), '%Y-%m-%d %H:%M')
endtime =datetime.strptime(str(data['endtime']), '%Y-%m-%d %H:%M')
obj = Checktask()
obj.checktaskname = data['checktaskname']
obj.checktime=starttime
obj.checkplace=data['checkplace']
obj.zxstate=data['zxstate']
obj.tasktype=7#专项检查
obj.checktype =Checktable.objects.get(id=data['checktabtitle'])
obj.createuser = User.objects.get(userid=userid)
obj.usecomp=Partment.objects.get(partid=companyid)
obj.userlist=data['participant'].split(',')
obj.save()
list = data['participant'].split(',')
s=[]
for i in list:
x = User.objects.get(userid=i)
obj.checkname.add(x)
objs = Checkjob()
objs.checktask=obj
objs.checkname=x
objs.taskstate=4
objs.starttime=starttime
objs.endtime=endtime
objs.usecomp=Partment.objects.get(partid=companyid)
objs.save()
s.append(x.openid)
postdict = {
'touser': '',
'template_id': 'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0',
"miniprogram": {"appid": "wx5c39b569f01c27db"},
'data': {
'first': {
'value': '检查任务通知:'
},
'keyword1': {
'value':'任务名:'+ obj.checktaskname
},
'keyword2': {
'value': '执行时间:'+str(data['starttime'])
},
'keyword3': {
'value': '发布人:'+obj.createuser.name
},
'remark': {
'value': '请及时查看阅读'
}
}
}
send_wechatmsgs.delay(postdict, s)
return JsonResponse({"code": 1})
#删除
elif a == 'del':
id =req.GET.get('id')
a = Checktask.objects.get(id=id)
if User.objects.get(userid=userid).issuper == 1:
a.deletemark=0
a.save()
return JsonResponse({"code":1})
else:
return JsonResponse({"code":0})
elif a == 'updchechtab':
obj = Checktable.objects.filter(id=req.GET.get('id'))
obj = obj.values('checktitle','checkcontent')[0]
return JsonResponse({'code': 1, 'data': obj})
elif a == 'updchecktaba':
data = json.loads(req.body.decode('utf-8'))
a = Checktable.objects.get(id=req.GET.get('id'))
a.checktitle = data['checktaskname']
a.checkcontent = data['checkcontent']
a.save()
return JsonResponse({"code": 1})
elif a == 'deltab':
id =req.GET.get('id')
a = Checktable.objects.get(id=id)
if User.objects.get(userid=userid).issuper == 1:
a.deletemark=0
a.save()
return JsonResponse({"code":1})
else:
return JsonResponse({"code":0})
elif a == 'deljob':
id =req.GET.get('id')
a = Checkjob.objects.get(id=id)
if User.objects.get(userid=userid).issuper == 1:
a.deletemark=0
a.save()
return JsonResponse({"code":1})
else:
return JsonResponse({"code":0})
elif a == 'checkjobdetail':
id = req.GET.get('id')
a = Checkjob.objects.filter(id=id)
list1=Checkjob.objects.get(id=id).pmpeople.all()
uselist=[]
for item in list1:
uselist.append(item.name)
x = a.values('checktask__checktaskname','starttime','zgjg','checktask__tasktype','endtime','jobstate','zguser__username','checktask__checktype__checkcontent','checktask__checkplace','checktask__checktime' ,'checkname__username','checkname__name', 'checkquestion', 'zgtime', 'zguser__username', 'createuser__username',
'createdate', 'taskstate','zghtp','jctime','content','yhtp','pmpeople', 'zgyq','zgjg', 'yanshou', 'yanshouren__name')[0]
x['bcfr'] = uselist
if x['yhtp']:
x['yhtp'] = x['yhtp'].split('?')
else:
x['yhtp'] == []
if x['zghtp']:
x['zghtp'] = x['zghtp'].split('?')
else:
x['zghtp'] == []
return HttpResponse(json.dumps(x, cls=MyEncoder), content_type="application/json")
elif a == 'checkdetail':
id = req.GET.get('id')
a = Checktask.objects.filter(id=id)
list1=Checktask.objects.get(id=id).checkname.all()
uselist=[]
for item in list1:
uselist.append(item.name)
x = a.values('checktaskname','zxstate','tasktype','checkplace','checktime','checktype__checktitle','checktype__checkcontent')[0]
x['bcfr'] = uselist
return HttpResponse(json.dumps(x, cls=MyEncoder), content_type="application/json")
elif a=='checkstop':
id = req.GET.get('id')
a = Checktask.objects.get(id=id)
if a.createuser==User.objects.get(userid=userid):
a.taskstate=2
a.save()
return JsonResponse({"code":1})
else:
return JsonResponse({"code":0})
#筛选
elif a == 'listsearch':
a = Checkjob.objects.filter(usecomp=Partment.objects.get(
partid=companyid)).exclude(deletemark=0)
qssj = req.GET.get('qssj')#开始时间
jssj = req.GET.get('jssj')#结束时间
checktabtitle = req.GET.get('checktabtitle')#检查表名
checktaskname = req.GET.get('checktaskname')#任务名称
checkername = req.GET.get('checkername', None)
if qssj:
a = a.filter(starttime__gte=qssj)
if jssj:
a = a.filter(starttime__lte=jssj)
if checktabtitle:
a = a.filter(checktask__checktype__id=checktabtitle)
if checktaskname:
a = a.filter(checktask__id=checktaskname)
if checkername:
a = a.filter(checkname__name=checkername)
total = a.count()
startnum, endnum = fenye(req)
a = a.order_by('-starttime')[startnum:endnum].values('id','checktask__checktaskname','jobstate','starttime','endtime','yanshou','checkquestion','zguser__username','zgtime','checktask__checktype__checktitle','checkname__username','checkname__name', 'taskstate','checktask__checktime','createuser__username','createdate')
return HttpResponse(transjson(total, a), content_type="application/json")