hrm sync_dahua 优化
This commit is contained in:
parent
a905a1cf4e
commit
b20d9816dd
|
@ -65,31 +65,15 @@ class EmployeeCreateUpdateSerializer(EmployeeBaseSerializer):
|
|||
@transaction.atomic
|
||||
def create(self, validated_data):
|
||||
instance = super().create(validated_data)
|
||||
if instance.user: # 同步更新账户里的手机号
|
||||
user = instance.user
|
||||
user.phone = instance.phone
|
||||
user.save()
|
||||
if settings.DAHUA_ENABLED and dhClient:
|
||||
dahua_data = HrmService.sync_dahua_employee(ep=instance)
|
||||
third_info = instance.third_info
|
||||
third_info.update(dahua_data)
|
||||
instance.third_info = third_info
|
||||
instance.save()
|
||||
HrmService.sync_dahua_employee(ep=instance)
|
||||
return instance
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
old_photo = instance.photo
|
||||
instance = super().update(instance, validated_data)
|
||||
if instance.user: # 同步更新账户里的手机号
|
||||
user = instance.user
|
||||
user.phone = instance.phone
|
||||
user.save()
|
||||
if settings.DAHUA_ENABLED and dhClient:
|
||||
dahua_data = HrmService.sync_dahua_employee(ep=instance, old_photo=old_photo)
|
||||
third_info = instance.third_info
|
||||
third_info.update(dahua_data)
|
||||
instance.third_info = third_info
|
||||
instance.save()
|
||||
HrmService.sync_dahua_employee(ep=instance, old_photo=old_photo)
|
||||
return instance
|
||||
|
||||
|
||||
|
|
|
@ -101,8 +101,8 @@ class HrmService:
|
|||
dh_face_card = cls.open_face_card(
|
||||
ep=ep, dh_id=dh_id, departmentId=departmentId, start_time=start_time, end_time=end_time)
|
||||
# 授予门禁权限
|
||||
cls.door_auth(ep=ep, dh_face_card=dh_face_card)
|
||||
return {'dh_id': dh_id, 'dh_photo': dh_photo, 'dh_face_card': dh_face_card}
|
||||
dh_dchannels = cls.door_auth(ep=ep, dh_face_card=dh_face_card)
|
||||
return {'dh_id': dh_id, 'dh_photo': dh_photo, 'dh_face_card': dh_face_card, 'dh_dchannels': dh_dchannels}
|
||||
|
||||
@classmethod
|
||||
def open_face_card(cls, ep, dh_id, departmentId, start_time, end_time):
|
||||
|
@ -155,10 +155,10 @@ class HrmService:
|
|||
"""
|
||||
from apps.third.models import TDevice
|
||||
# 查找可授予的门禁
|
||||
door_codes = list(TDevice.objects.filter(type=TDevice.DEVICE_DCHANNEL,
|
||||
access_list__contains=ep.type).values_list('code', flat=True))
|
||||
dh_dchannels = list(TDevice.objects.filter(type=TDevice.DEVICE_DCHANNEL,
|
||||
access_list__contains=ep.type).values_list('code', flat=True))
|
||||
details = []
|
||||
for i in door_codes:
|
||||
for i in dh_dchannels:
|
||||
details.append({
|
||||
"privilegeType": 1,
|
||||
"resouceCode": i
|
||||
|
@ -170,8 +170,8 @@ class HrmService:
|
|||
"cardPrivilegeDetails": details
|
||||
}
|
||||
dhClient.request(**dhapis['card_door_authority'], json=json_data)
|
||||
cls.save(ep, data={'dh_dchannels': door_codes})
|
||||
return door_codes
|
||||
cls.save(ep, data={'dh_dchannels': dh_dchannels})
|
||||
return dh_dchannels
|
||||
|
||||
@classmethod
|
||||
def save(cls, ep: Employee, data: dict):
|
||||
|
@ -181,6 +181,9 @@ class HrmService:
|
|||
ti.update(data)
|
||||
ep.third_info = ti
|
||||
ep.save()
|
||||
if ep.user and ep.user.phone != ep.phone:
|
||||
ep.user.phone = ep.phone
|
||||
ep.save()
|
||||
return ep
|
||||
|
||||
@classmethod
|
||||
|
|
|
@ -2,6 +2,7 @@ from threading import Thread
|
|||
from apps.hrm.models import Employee
|
||||
from apps.hrm.services import HrmService
|
||||
from apps.vm.models import Visit, Vpeople
|
||||
from apps.wf.models import Ticket
|
||||
|
||||
|
||||
def bind_visit(ticket, transition, new_ticket_data: dict):
|
||||
|
@ -19,31 +20,31 @@ def get_receptionist(state, ticket, new_ticket_data, handler):
|
|||
|
||||
|
||||
def visit_audit_end(ticket):
|
||||
visit = Visit.objects.get(ticket=ticket)
|
||||
if visit.state == Visit.V_AUDIT:
|
||||
if ticket.act_state == Ticket.TICKET_ACT_STATE_FINISH:
|
||||
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
|
||||
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()
|
||||
# 更新企业访客人员库
|
||||
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()
|
||||
# 同步至大华人员库并下发人脸
|
||||
Thread(target=HrmService.sync_dahua_employee, args=(ep, '', visit.visit_time, visit.leave_time)).start()
|
||||
# 发送通知?
|
||||
|
|
Loading…
Reference in New Issue