hrm sync_dahua 优化
This commit is contained in:
parent
a905a1cf4e
commit
b20d9816dd
|
@ -65,31 +65,15 @@ class EmployeeCreateUpdateSerializer(EmployeeBaseSerializer):
|
||||||
@transaction.atomic
|
@transaction.atomic
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
instance = super().create(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:
|
if settings.DAHUA_ENABLED and dhClient:
|
||||||
dahua_data = HrmService.sync_dahua_employee(ep=instance)
|
HrmService.sync_dahua_employee(ep=instance)
|
||||||
third_info = instance.third_info
|
|
||||||
third_info.update(dahua_data)
|
|
||||||
instance.third_info = third_info
|
|
||||||
instance.save()
|
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
def update(self, instance, validated_data):
|
def update(self, instance, validated_data):
|
||||||
old_photo = instance.photo
|
old_photo = instance.photo
|
||||||
instance = super().update(instance, validated_data)
|
instance = super().update(instance, validated_data)
|
||||||
if instance.user: # 同步更新账户里的手机号
|
|
||||||
user = instance.user
|
|
||||||
user.phone = instance.phone
|
|
||||||
user.save()
|
|
||||||
if settings.DAHUA_ENABLED and dhClient:
|
if settings.DAHUA_ENABLED and dhClient:
|
||||||
dahua_data = HrmService.sync_dahua_employee(ep=instance, old_photo=old_photo)
|
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()
|
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -101,8 +101,8 @@ class HrmService:
|
||||||
dh_face_card = cls.open_face_card(
|
dh_face_card = cls.open_face_card(
|
||||||
ep=ep, dh_id=dh_id, departmentId=departmentId, start_time=start_time, end_time=end_time)
|
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)
|
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}
|
return {'dh_id': dh_id, 'dh_photo': dh_photo, 'dh_face_card': dh_face_card, 'dh_dchannels': dh_dchannels}
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def open_face_card(cls, ep, dh_id, departmentId, start_time, end_time):
|
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
|
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))
|
access_list__contains=ep.type).values_list('code', flat=True))
|
||||||
details = []
|
details = []
|
||||||
for i in door_codes:
|
for i in dh_dchannels:
|
||||||
details.append({
|
details.append({
|
||||||
"privilegeType": 1,
|
"privilegeType": 1,
|
||||||
"resouceCode": i
|
"resouceCode": i
|
||||||
|
@ -170,8 +170,8 @@ class HrmService:
|
||||||
"cardPrivilegeDetails": details
|
"cardPrivilegeDetails": details
|
||||||
}
|
}
|
||||||
dhClient.request(**dhapis['card_door_authority'], json=json_data)
|
dhClient.request(**dhapis['card_door_authority'], json=json_data)
|
||||||
cls.save(ep, data={'dh_dchannels': door_codes})
|
cls.save(ep, data={'dh_dchannels': dh_dchannels})
|
||||||
return door_codes
|
return dh_dchannels
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def save(cls, ep: Employee, data: dict):
|
def save(cls, ep: Employee, data: dict):
|
||||||
|
@ -181,6 +181,9 @@ class HrmService:
|
||||||
ti.update(data)
|
ti.update(data)
|
||||||
ep.third_info = ti
|
ep.third_info = ti
|
||||||
ep.save()
|
ep.save()
|
||||||
|
if ep.user and ep.user.phone != ep.phone:
|
||||||
|
ep.user.phone = ep.phone
|
||||||
|
ep.save()
|
||||||
return ep
|
return ep
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|
|
@ -2,6 +2,7 @@ from threading import Thread
|
||||||
from apps.hrm.models import Employee
|
from apps.hrm.models import Employee
|
||||||
from apps.hrm.services import HrmService
|
from apps.hrm.services import HrmService
|
||||||
from apps.vm.models import Visit, Vpeople
|
from apps.vm.models import Visit, Vpeople
|
||||||
|
from apps.wf.models import Ticket
|
||||||
|
|
||||||
|
|
||||||
def bind_visit(ticket, transition, new_ticket_data: dict):
|
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):
|
def visit_audit_end(ticket):
|
||||||
|
if ticket.act_state == Ticket.TICKET_ACT_STATE_FINISH:
|
||||||
visit = Visit.objects.get(ticket=ticket)
|
visit = Visit.objects.get(ticket=ticket)
|
||||||
if visit.state == Visit.V_AUDIT:
|
|
||||||
visit.state = Visit.V_ENTER
|
visit.state = Visit.V_ENTER
|
||||||
visit.save()
|
visit.save()
|
||||||
# 更新企业访客人员库
|
# 更新企业访客人员库
|
||||||
|
@ -39,7 +40,7 @@ def visit_audit_end(ticket):
|
||||||
ep.phone = visitor.phone
|
ep.phone = visitor.phone
|
||||||
ep.photo = visitor.photo
|
ep.photo = visitor.photo
|
||||||
ep.type = 'visitor'
|
ep.type = 'visitor'
|
||||||
ep.belong_dept = visit.receptionist
|
ep.belong_dept = visit.receptionist.belong_dept
|
||||||
ep.save()
|
ep.save()
|
||||||
visitor.employee = ep
|
visitor.employee = ep
|
||||||
visitor.visit = visit # 更新当前所属访客项目
|
visitor.visit = visit # 更新当前所属访客项目
|
||||||
|
|
Loading…
Reference in New Issue