45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
| from threading import Thread
 | |
| from apps.hrm.models import Employee
 | |
| from apps.hrm.services import HrmService
 | |
| from apps.vm.models import Visit, Vpeople
 | |
| 
 | |
| 
 | |
| def bind_visit(ticket, transition, new_ticket_data: dict):
 | |
|     visit = Visit.objects.get(id=new_ticket_data['visit'])
 | |
|     visit.ticket = ticket
 | |
|     if visit.state == Visit.V_CREATE:
 | |
|         visit.state = Visit.V_AUDIT
 | |
|     visit.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)
 | |
|     if visit.state == Visit.V_AUDIT:
 | |
|         visit.state = Visit.V_ENTER
 | |
|         visit.save()
 | |
|     # 更新企业访客人员库
 | |
|     for i in Vpeople.objects.filter(visit=visit):
 | |
|         visitor = i.visitor
 | |
|         ep = Employee.objects.filter(id_number=visitor.id_number, type='visitor').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.save()
 | |
|         visitor.employee = ep
 | |
|         visitor.visit = visit  # 更新当前所属访客项目
 | |
|         visitor.save()
 | |
|     # 同步至大华人员库并下发人脸
 | |
|     Thread(target=HrmService.sync_dahua_employee, args=(ep, '', visit.visit_time, visit.leave_time)).start()
 | |
|     # 发送通知?
 |