from threading import Thread from apps.hrm.errors import PHONE_EXIST from apps.hrm.models import Certificate, Employee from apps.hrm.services import HrmService from apps.system.models import User, UserPost from apps.wf.models import Ticket, Transition from apps.rpm.models import Rcertificate, Rfile, Rpj, Rpjcertificate, Rpjfile, Rpjmember from rest_framework.exceptions import ParseError from django.contrib.auth.hashers import make_password 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) rpj_dept = rpj.rparty.dept # 更新入厂项目人员库 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() # 给相关方人员创建账户 user = ep.user if user: # 如果该人员有账户 pass else: user_e = User() user_e.name = rep.name user_e.phone = rep.phone user_e.type = 'remployee' user_e.password = make_password('0000') user_e.save() ep.user = user_e ep.save() # 账号划给部门 UserPost.objects.get_or_create(user=ep.user, dept=rpj_dept, defaults={ 'user': ep.user, 'dept': rpj_dept }) # 回写 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.rpj.rparty).first() if rf: pass else: rf = Rfile() rf.rparty = i.rpj.rparty rf.file_cate = i.file_cate rf.save() for m in i.files.all(): rf.files.add(m) rpj.state = Rpj.RPJ_ENTER rpj.save() # 发送通知?