diff --git a/apps/hrm/serializers.py b/apps/hrm/serializers.py index 90aa34b7..8d056c6d 100755 --- a/apps/hrm/serializers.py +++ b/apps/hrm/serializers.py @@ -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 diff --git a/apps/hrm/services.py b/apps/hrm/services.py index a659db28..45272181 100755 --- a/apps/hrm/services.py +++ b/apps/hrm/services.py @@ -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 diff --git a/apps/vm/services.py b/apps/vm/services.py index 8f42e699..61f7d42e 100644 --- a/apps/vm/services.py +++ b/apps/vm/services.py @@ -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() # 发送通知?