factory/apps/vm/tasks.py

48 lines
1.6 KiB
Python

# Create your tasks here
from __future__ import absolute_import, unicode_literals
from apps.hrm.models import Employee
from apps.utils.task import CustomTask
from apps.vm.models import Visit, Vpeople
from apps.wf.models import Ticket
from celery import shared_task
from apps.hrm.services import HrmService
from apps.wf.services import WfService
@shared_task(base=CustomTask)
def visit_exec(ticket, script_str):
ticket.script_run_last_result = False
ticket.save()
visit = Visit.objects.get(ticket=ticket)
visit.state = Visit.V_ENTER
visit.save()
# 更新企业访客人员库
for i in Vpeople.objects.filter(visit=visit):
visitor = i.visitor
if visitor.id_number and visitor.photo:
ep = Employee.objects.filter(id_number=visitor.id_number).first()
else:
ep = Employee.objects.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.save()
visitor.employee = ep
visitor.visit = visit # 更新当前所属访客项目
visitor.save()
# 同步至大华人员库并下发人脸
HrmService.sync_dahua_employee(ep, '', visit.visit_time, visit.leave_time)
# 发送通知?
# 务必调用自动流转
ticket.script_run_last_result = True
ticket.save()
if ticket.script_run_last_result:
WfService.auto_next(ticket, script_str)