diff --git a/apps/rpm/services.py b/apps/rpm/services.py index 02828ecf..989fc332 100644 --- a/apps/rpm/services.py +++ b/apps/rpm/services.py @@ -1,5 +1,5 @@ from threading import Thread -from apps.hrm.models import Employee +from apps.hrm.models import Certificate, Employee from apps.hrm.services import HrmService from apps.wf.models import Ticket, Transition from apps.rpm.models import Rcertificate, Rpj, Rpjmember @@ -16,29 +16,33 @@ def bind_opl(ticket: Ticket, transition: Transition, new_ticket_data: dict): def rpj_audit_end(ticket): - rpj = Rpj.objects.get(ticket=ticket) - if rpj.state == Rpj.RPJ_AUDIT: + if ticket.act_state == Ticket.TICKET_ACT_STATE_FINISH: + rpj = Rpj.objects.get(ticket=ticket) rpj.state = Rpj.RPJ_ENTER rpj.save() - # 更新入厂项目人员库 - for i in Rpjmember.objects.filter(rpj=rpj): - rep = i.remployee - ep = Employee.objects.filter(id_number=rep.id_number).first() - if ep: - pass - else: - ep = Employee() - ep.id_number = rep.id_number - ep.name = rep.name - ep.phone = rep.phone - ep.photo = rep.photo - ep.type = 'remployee' - ep.save() - rep.employee = ep - rep.save() + # 更新入厂项目人员库 + for i in Rpjmember.objects.filter(rpj=rpj): + rep = i.remployee + ep = Employee.objects.filter(id_number=rep.id_number).first() + if ep: + pass + else: + ep = Employee() + ep.id_number = rep.id_number + ep.name = rep.name + ep.phone = rep.phone + ep.photo = rep.photo + ep.type = 'remployee' + ep.save() + rep.employee = ep + rep.rpj = rpj # 更新当前入厂项目 + rep.save() + # 同步至大华人员库并下发人脸 + Thread(target=HrmService.sync_dahua_employee, args=(ep, '', rpj.come_time, rpj.leave_time)).start() # 更新入厂项目人员证书库 for i in Rcertificate.objects.filter(rpj=rpj): - pass - # 同步至大华人员库并下发人脸 - Thread(target=HrmService.sync_dahua_employee, args=(ep, '', rpj.come_time, rpj.leave_time)).start() + Certificate.objects.get_or_create( + + ) + # 发送通知? diff --git a/apps/vm/serializers.py b/apps/vm/serializers.py index 67130fbc..4dcc990c 100644 --- a/apps/vm/serializers.py +++ b/apps/vm/serializers.py @@ -8,7 +8,7 @@ from django.db import transaction from apps.third.clients import dhClient from apps.third.tapis import dhapis from apps.system.serializers import UserSimpleSerializer -from apps.wf.serializers import TicketSimpleSerializer +from apps.wf.serializers import TicketSerializer class VisitCreateUpdateSerializer(CustomModelSerializer): @@ -20,7 +20,7 @@ class VisitCreateUpdateSerializer(CustomModelSerializer): class VisitSerializer(CustomModelSerializer): receptionist_ = UserSimpleSerializer(source='receptionist', read_only=True) - ticket_ = TicketSimpleSerializer(source='ticket', read_only=True) + ticket_ = TicketSerializer(source='ticket', read_only=True) class Meta: model = Visit @@ -86,6 +86,7 @@ class VisitorRegisterSerializer(serializers.Serializer): class VisitDetailSerializer(CustomModelSerializer): receptionist_ = UserSimpleSerializer(source='receptionist', read_only=True) visitors_ = serializers.SerializerMethodField() + ticket_ = TicketSerializer(source='ticket', read_only=True) class Meta: model = Visit diff --git a/apps/vm/views.py b/apps/vm/views.py index 3ce06afc..75c33d1e 100644 --- a/apps/vm/views.py +++ b/apps/vm/views.py @@ -22,6 +22,7 @@ class VisitViewSet(CustomModelViewSet): serializer_class = VisitSerializer retrieve_serializer_class = VisitDetailSerializer filterset_fields = ['state'] + select_related_fields = ['ticket', 'receptionist', 'ticket__workflow', 'ticket__state'] def get_queryset(self): user = self.request.user