This commit is contained in:
caoqianming 2021-12-20 00:04:06 +08:00
commit 33b8f17e99
5 changed files with 255 additions and 34 deletions

View File

@ -457,9 +457,9 @@ def drequipments(companyid,path):
numsdict[num]=name numsdict[num]=name
i = i+1 i = i+1
if numsdict: if numsdict:
return {'code':1,'msg':'全部导入成功!'}
else:
return {'code':2,'msg':'部分未导入成功!','info':numsdict} return {'code':2,'msg':'部分未导入成功!','info':numsdict}
else:
return {'code':1,'msg':'全部导入成功!'}
def drusers(companyid,path): def drusers(companyid,path):

View File

@ -0,0 +1,42 @@
# Generated by Django 2.2.8 on 2021-12-19 18:12
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
('safesite', '0390_auto_20211006_1819'),
]
operations = [
migrations.CreateModel(
name='CheckList',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=200, verbose_name='清单名称')),
('qrcode', models.CharField(blank=True, max_length=200, null=True)),
('createtime', models.DateTimeField(default=django.utils.timezone.now, verbose_name='创建时间')),
('updatetime', models.DateTimeField(auto_now=True)),
('deletemark', models.IntegerField(default=1)),
('createby', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='checklist_createby', to='safesite.User')),
('updateby', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='checklist_updateby', to='safesite.User')),
('usecomp', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='safesite.Partment', verbose_name='所属公司')),
],
),
migrations.AddField(
model_name='operspxq',
name='suggestion',
field=models.CharField(blank=True, max_length=200, null=True),
),
migrations.CreateModel(
name='CheckListItem',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('content', models.TextField(verbose_name='检查项目')),
('checklist', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='safesite.CheckList', verbose_name='关联检查表')),
],
),
]

View File

@ -695,7 +695,8 @@ class Operspxq(models.Model): # 作业审批流
Partment, on_delete=models.CASCADE, null=True, blank=True) Partment, on_delete=models.CASCADE, null=True, blank=True)
spr = models.ForeignKey(User, on_delete=models.CASCADE) spr = models.ForeignKey(User, on_delete=models.CASCADE)
action = models.CharField(max_length=200) action = models.CharField(max_length=200)
checked = models.IntegerField(default=1) # 0未通过,1通过,2提交 suggestion = models.CharField(max_length=200, null=True, blank=True)
checked = models.IntegerField(default=1) # 0未通过,1通过,2提交上级,3未通过
submittime = models.DateTimeField(default=timezone.now) submittime = models.DateTimeField(default=timezone.now)
@ -1450,3 +1451,23 @@ class SafeFeedBack(models.Model):
content = models.TextField('反馈内容') content = models.TextField('反馈内容')
createtime = models.DateTimeField(default=timezone.now, verbose_name="创建时间") createtime = models.DateTimeField(default=timezone.now, verbose_name="创建时间")
updatetime = models.DateTimeField(auto_now=True) updatetime = models.DateTimeField(auto_now=True)
class CheckList(models.Model):
"""
检查表
"""
name = models.CharField('清单名称', max_length=200)
usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE, verbose_name="所属公司")
qrcode = models.CharField(max_length=200, blank=True, null=True) # 检查表二维码
createtime = models.DateTimeField(default=timezone.now, verbose_name="创建时间")
updatetime = models.DateTimeField(auto_now=True)
createby = models.ForeignKey(User, on_delete=models.CASCADE, related_name='checklist_createby')
updateby = models.ForeignKey(User, on_delete=models.CASCADE, related_name='checklist_updateby')
deletemark = models.IntegerField(default=1)
class CheckListItem(models.Model):
"""
检查表条目
"""
content = models.TextField('检查项目')
checklist = models.ForeignKey(CheckList, on_delete=models.CASCADE, verbose_name='关联检查表')

View File

@ -382,12 +382,12 @@
removeLoading(); removeLoading();
if (data.code == 1) { if (data.code == 1) {
$.messager.alert('提示', data.msg, 'info', function () { $.messager.alert('提示', data.msg, 'info', function () {
$("#main").panel({ href: 'html/equipment', title: '设备设施' }); $("#sbtable").datagrid('reload');
}); });
} }
else if (data.code == 2) { else if (data.code == 2) {
$.messager.alert('提示', data.msg + data.info, 'info', function () { $.messager.alert('提示', data.msg + data.info, 'info', function () {
$("#main").panel({ href: 'html/equipment', title: '用户' }); $("#sbtable").datagrid('reload');
}); });
} }
else { else {

View File

@ -44,7 +44,7 @@ from .models import CompanyInfo
from .safespider import getAqzs, getTzzs from .safespider import getAqzs, getTzzs
from .tasks import (gettime, send_wechatmsg, send_wechatmsgs, updateAqzs, from .tasks import (gettime, send_wechatmsg, send_wechatmsgs, updateAqzs,
updateTzzs, yjjs, yjjs_gc, yjjs_px, yjjs_ws, yjjs_yl) updateTzzs, yjjs, yjjs_gc, yjjs_px, yjjs_ws, yjjs_yl)
from django.db import transaction
from datetime import date, datetime, timedelta from datetime import date, datetime, timedelta
logger = logging.getLogger('log') logger = logging.getLogger('log')
@ -4027,11 +4027,8 @@ def drapi(req):
with open(filepath, 'wb') as f: with open(filepath, 'wb') as f:
f.write(req.FILES['upfile'].read()) f.write(req.FILES['upfile'].read())
# try: # try:
equipmentdict = drequipments(companyid, filepath) ret = drequipments(companyid, filepath)
if equipmentdict: return JsonResponse(ret)
return JsonResponse({"code": 2, "equipmentdict": equipmentdict})
else:
return JsonResponse({"code": 1})
elif a == 'risk': elif a == 'risk':
userid = req.session['userid'] userid = req.session['userid']
companyid = getcompany(userid) companyid = getcompany(userid)
@ -5472,6 +5469,7 @@ def apinotice(req):
return JsonResponse({"code": 1, 'downloadurl': v}) return JsonResponse({"code": 1, 'downloadurl': v})
@apicheck_login @apicheck_login
@transaction.atomic
def apioperation(req): def apioperation(req):
a = req.GET.get('a') a = req.GET.get('a')
userid = req.session['userid'] userid = req.session['userid']
@ -5598,6 +5596,133 @@ def apioperation(req):
} }
send_wechatmsgs.delay(postdict, b) send_wechatmsgs.delay(postdict, b)
return JsonResponse({"code": 1}) return JsonResponse({"code": 1})
elif a == 'edit':
userid = req.session['userid']
oneuser = User.objects.get(userid=userid)
data = json.loads(req.body.decode('utf-8'))
obj = Operation.objects.get(zyid=data['zyid'])
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.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()
Operspxq.objects.create(
oper=obj, jdmc='重新提交', spr=oneuser, checked=1)
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)
Operspxq.objects.create(
oper=obj, jdmc='重新提交', spr=oneuser, checked=1)
return JsonResponse({"code": 1})
elif a == 'listall': elif a == 'listall':
userid = req.session['userid'] userid = req.session['userid']
usecomp = User.objects.get(userid=userid).usecomp usecomp = User.objects.get(userid=userid).usecomp
@ -5664,33 +5789,36 @@ def apioperation(req):
elif a == 'detail': elif a == 'detail':
zyid = req.GET.get('zyid') zyid = req.GET.get('zyid')
a = Operation.objects.filter(zyid=zyid) a = Operation.objects.filter(zyid=zyid)
x = a.values('zyid', 'zydd', 'zylx__dickeyname', 'zynum', 'zyfzr__name', 'zynr', 'zyzt', 'zyimg', x = a.values('zyid', 'zydd', 'zylx__dickeyname', 'zynum', 'zyfzr__name', 'zynr', 'zyzt', 'zyimg', 'zylx', 'sdbm',
'submittime', 'zybm__partname', 'sdbm__partname', 'kssj', 'jssj', 'fxcs', 'zyimg2','zyqy__name')[0] 'submittime', 'zybm__partname', 'sdbm__partname', 'kssj', 'jssj', 'fxcs', 'zyimg2','zyqy__name')[0]
if x['zyzt']['splc']: if x['zyimg'] != '':
x['zyimg'] = x['zyimg'].split('?')
else:
x['zyimg'] = []
if x['zyimg2'] != '':
x['zyimg2'] = x['zyimg2'].split('?')
else:
x['zyimg2'] = []
x['fxcs'] = [int(i) for i in x['fxcs'].split('?')]
x['fxcs_'] = list(Fxcs.objects.filter(
id__in=x['fxcs']).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'] = list(qrxqobjs.values_list('operzyry__userid', flat=True))
x['zyry_names'] = ','.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', 'suggestion')
x['spxq'] = list(spxq)
x['lastsuggestion'] = x['spxq'][-1]['suggestion'] if len(x['spxq']) >=1 else ''
if 'splc' in x['zyzt']:
for i in x['zyzt']['splc']: for i in x['zyzt']['splc']:
i['sprs'] = ','.join(list(User.objects.filter( i['sprs'] = ','.join(list(User.objects.filter(
userid__in=i['sprs']).values_list('name', flat=True))) 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") return HttpResponse(json.dumps(x, cls=MyEncoder), content_type="application/json")
else: else:
return HttpResponse(json.dumps(x, cls=MyEncoder), content_type="application/json") return HttpResponse(json.dumps(x, cls=MyEncoder), content_type="application/json")
@ -5806,6 +5934,36 @@ def apioperation(req):
send_wechatmsgs.delay(postdict, tolist) send_wechatmsgs.delay(postdict, tolist)
return JsonResponse({"code": 1}) return JsonResponse({"code": 1})
nextindex = nextindex + 1 nextindex = nextindex + 1
if 'bhzy' in data: # 如果驳回作业
Operspxq.objects.create(
oper=obj, jdmc=obj.zyzt['splc'][oldindex]['jdmc'], spr=spruser, checked=3, spbm=spruser.ubelongpart, suggestion=data.get('suggestion', None))
obj.zyzt = {'zyzt': '驳回修改中', 'index': -1}
obj.todouser = obj.zyfzr
obj.save()
postdict = {
'touser': obj.todouser.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': '你是作业负责人,请及时修改作业申请并重新提交!'
}
}
}
send_wechatmsg.delay(postdict)
return JsonResponse({"code": 1})
if 'zjsp' in data: # 转交上级审批 if 'zjsp' in data: # 转交上级审批
if spruser.ubelongpart.parentid: if spruser.ubelongpart.parentid:
newsprs = getsprs(userid, spruser.ubelongpart.parentid) newsprs = getsprs(userid, spruser.ubelongpart.parentid)