factory/apps/rpm/services.py

73 lines
2.3 KiB
Python

from threading import Thread
from apps.hrm.models import Certificate, Employee
from apps.hrm.services import HrmService
from apps.wf.models import Ticket, Transition
from apps.rpm.models import Rcertificate, Rfile, Rpj, Rpjcertificate, Rpjfile, Rpjmember
def bind_rpj(ticket: Ticket, transition: Transition, new_ticket_data: dict):
rpj = Rpj.objects.get(id=new_ticket_data['rpj'])
# ticket_data = ticket.ticket_data
# ticket_data.update({'level': opl.level})
# ticket.ticket_data = ticket_data
# ticket.save()
rpj.ticket = ticket
rpj.state = Rpj.RPJ_AUDIT
rpj.save()
ticket.belong_dept = rpj.belong_dept
ticket.save()
def rpj_audit_end(ticket):
rpj = Rpj.objects.get(ticket=ticket)
# 更新入厂项目人员库
for i in Rpjmember.objects.filter(rpj=rpj):
rep = i.remployee
ep = Employee.objects.filter(id_number=rep.id_number).first()
if ep:
pass
else:
ep = Employee()
ep.id_number = rep.id_number
ep.name = rep.name
ep.phone = rep.phone
ep.photo = rep.photo
ep.type = 'remployee'
ep.belong_dept = rpj.rparty.dept
ep.save()
rep.employee = ep
rep.rpj = rpj # 更新当前入厂项目
rep.save()
# 同步至大华人员库并下发人脸
HrmService.sync_dahua_employee(ep, '', rpj.come_time, rpj.leave_time)
# 更新入厂项目人员证书库
for i in Rpjcertificate.objects.filter(rpj_member__rpj=rpj):
ct = Certificate.objects.filter(number=i.number).first()
if ct:
pass
else:
ct = Certificate()
ct.name = i.name
ct.number = i.number
ct.type = i.type
ct.issue_date = i.issue_date
ct.expiration_date = i.expiration_date
ct.review_date = i.review_date
ct.file = i.file
ct.employee = i.rpj_member.remployee.employee
ct.save()
# 更新相关方资料库
for i in Rpjfile.objects.filter(rpj=rpj):
rf = Rfile.objects.filter(file_cate=i.file_cate, rparty=i.rparty).first()
if rf:
pass
else:
rf = Rfile()
rf.rparty = i.rparty
rf.file_cate = i.file_cate
for m in i.files.all():
rf.files.add(m)
rpj.state = Rpj.RPJ_ENTER
rpj.save()
# 发送通知?