from apps.hrm.models import Certificate, Employee from apps.hrm.services import HrmService from apps.system.models import Post, User, UserPost from apps.utils.tools import ranstr from apps.wf.models import Ticket, Transition from apps.rpm.models import Remployee, Rfile, Rparty, Rpj, Rpjcertificate, Rpjfile, Rpjmember from django.contrib.auth.hashers import make_password def sync_to_rep(ep: Employee): # 个人信息完善时同步到rep表 Remployee.objects.filter(employee=ep).update(name=ep.name, phone=ep.phone, id_number=ep.id_number, photo=ep.photo) if ep.user: rps = Rparty.objects.filter(admin=ep.user) # 如果是管理员账户 for i in rps: Remployee.objects.get_or_create(employee=ep, defaults={ 'employee': ep, 'name': ep.name, 'phone': ep.phone, 'id_number': ep.id_number, 'photo': ep.photo, 'rparty': i }) 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.create_by = rpj.create_by ticket.save() def rpj_audit_end(ticket): rpj = Rpj.objects.get(ticket=ticket) rpj_dept = rpj.rparty.dept post = Post.objects.get(code='remployee') # 更新入厂项目人员库 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.username = 'RE_' + ranstr(6) user_e.name = rep.name user_e.phone = rep.phone user_e.type = 'remployee' user_e.password = make_password('0000') user_e.belong_dept = rpj_dept user_e.post = post 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, 'post': post }) # 回写 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.employee = i.rpj_member.remployee.employee 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.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.belong_dept = i.rpj.rparty.dept rf.save() for m in i.files.all(): rf.files.add(m) rpj.state = Rpj.RPJ_ENTER rpj.save() # 发送通知?