hrm sync_dahua 优化

This commit is contained in:
曹前明 2022-07-14 09:54:08 +08:00
parent a905a1cf4e
commit b20d9816dd
3 changed files with 38 additions and 50 deletions

View File

@ -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

View File

@ -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,
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

View File

@ -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,8 +20,8 @@ def get_receptionist(state, ticket, new_ticket_data, handler):
def visit_audit_end(ticket):
if ticket.act_state == Ticket.TICKET_ACT_STATE_FINISH:
visit = Visit.objects.get(ticket=ticket)
if visit.state == Visit.V_AUDIT:
visit.state = Visit.V_ENTER
visit.save()
# 更新企业访客人员库
@ -39,7 +40,7 @@ def visit_audit_end(ticket):
ep.phone = visitor.phone
ep.photo = visitor.photo
ep.type = 'visitor'
ep.belong_dept = visit.receptionist
ep.belong_dept = visit.receptionist.belong_dept
ep.save()
visitor.employee = ep
visitor.visit = visit # 更新当前所属访客项目