factory/apps/vm/services.py

91 lines
3.2 KiB
Python

from apps.hrm.models import Employee
from apps.hrm.services import HrmService
from apps.utils.sms import send_sms
from apps.vm.models import Visit, Visitor, Vpeople
def sync_to_visitor(ep: Employee):
# 个人信息完善时同步到visitor表
Visitor.objects.filter(employee=ep).update(name=ep.name, phone=ep.phone, id_number=ep.id_number, photo=ep.photo)
if not Visitor.objects.filter(employee=ep, create_by=ep.user).exists():
Visitor.objects.create(employee=ep, name=ep.name, phone=ep.phone,
id_number=ep.id_number, photo=ep.photo, create_by=ep.user)
def bind_visit(ticket, transition, new_ticket_data: dict):
visit = Visit.objects.get(id=new_ticket_data['visit'])
visit.ticket = ticket
visit.state = Visit.V_AUDIT
visit.save()
ticket.belong_dept = visit.receptionist.belong_dept
ticket.create_by = visit.create_by
ticket.save()
def get_receptionist(state, ticket, new_ticket_data, handler):
visit = Visit.objects.filter(ticket=ticket).first()
if visit:
return [visit.receptionist.id]
def visit_audit_end(ticket):
visit = Visit.objects.get(ticket=ticket)
# 更新企业访客人员库
for i in Vpeople.objects.filter(visit=visit):
visitor = i.visitor
if visitor.id_number and visitor.photo:
ep = Employee.objects.get_queryset(all=True).filter(id_number=visitor.id_number).first()
elif visitor.phone:
ep = Employee.objects.get_queryset(all=True).filter(phone=visitor.phone).first()
else:
ep = Employee.objects.get_queryset(all=True).filter(name=visitor.name, id_number=None).first()
if ep:
pass
else:
ep = Employee()
ep.id_number = visitor.id_number
ep.name = visitor.name
ep.phone = visitor.phone
ep.photo = visitor.photo
ep.type = 'visitor'
ep.belong_dept = visit.receptionist.belong_dept
ep.is_deleted = False
ep.save()
visitor.employee = ep
visitor.visit = visit # 更新当前所属访客项目
visitor.save()
# 同步至大华人员库并下发人脸
HrmService.sync_dahua_employee(ep, '', visit.visit_time, visit.leave_time)
visit.state = Visit.V_ENTER
visit.save()
# 发送通知?
phone = visit.create_by.phone
if phone:
send_sms(phone=phone, template_code=1004, template_param={'name': '访客项目'})
def visit_driver_end(visit: Visit):
# 更新企业司机人员库
for i in Vpeople.objects.filter(visit=visit):
visitor = i.visitor
ep = Employee.objects.filter(id_number=visitor.id_number).first()
if ep:
pass
else:
ep = Employee()
ep.id_number = visitor.id_number
ep.name = visitor.name
ep.phone = visitor.phone
ep.photo = visitor.photo
ep.type = 'driver'
ep.belong_dept = visit.belong_dept
ep.save()
visitor.employee = ep
visitor.visit = visit # 更新当前所属访客项目
visitor.save()
# 同步至大华人员库并下发人脸
HrmService.sync_dahua_employee(ep, '', visit.visit_time, visit.leave_time)
visit.state = Visit.V_ENTER
visit.save()