From 7fdb9fb74f2637e5b862af1052b4e5a2468ba34c Mon Sep 17 00:00:00 2001 From: caoqianming Date: Fri, 10 Mar 2023 17:38:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=BA=E5=88=B6=E4=BF=AE=E6=94=B9=E5=B7=A5?= =?UTF-8?q?=E5=8D=95=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wf/serializers.py | 8 ++++++-- apps/wf/services.py | 13 +++++++------ apps/wf/views.py | 7 ++++--- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/apps/wf/serializers.py b/apps/wf/serializers.py index aaca854c..580c4942 100755 --- a/apps/wf/serializers.py +++ b/apps/wf/serializers.py @@ -261,6 +261,10 @@ class TicketDestorySerializer(serializers.Serializer): ids = serializers.ListField(child=serializers.PrimaryKeyRelatedField(queryset=Ticket.objects.all()), label='工单ID列表') -class TicketStateUpateSerializer(serializers.Serializer): - state = serializers.PrimaryKeyRelatedField(queryset=State.objects.all(), label='状态ID值') +class TicketStateUpateSerializer(serializers.ModelSerializer): suggestion = serializers.CharField(label="变更理由", required=False) + need_log = serializers.BooleanField(label="是否记录日志", default=True) + + class Meta: + model = Ticket + fields = ['state', 'suggestion', 'need_log'] diff --git a/apps/wf/services.py b/apps/wf/services.py index 2d5fd0b6..d9cf3bc8 100755 --- a/apps/wf/services.py +++ b/apps/wf/services.py @@ -394,7 +394,7 @@ class WfService(object): return ticket @classmethod - def update_ticket_state(cls, ticket: Ticket, new_state: State, suggestion: str, handler: User): + def update_ticket_state(cls, ticket: Ticket, new_state: State, suggestion: str, handler: User, need_log:bool): participant_info = cls.get_ticket_state_participant_info( new_state, ticket, {}) source_state = ticket.state @@ -403,11 +403,12 @@ class WfService(object): ticket.participant = participant_info.get('destination_participant', 0) ticket.multi_all_person = {} ticket.save() - TicketFlow.objects.create(ticket=ticket, state=source_state, - ticket_data=WfService.get_ticket_all_field_value(ticket), - suggestion=suggestion, participant_type=State.PARTICIPANT_TYPE_PERSONAL, - intervene_type=Transition.TRANSITION_INTERVENE_TYPE_ALTER_STATE, - participant=handler) + if need_log: + TicketFlow.objects.create(ticket=ticket, state=source_state, + ticket_data=WfService.get_ticket_all_field_value(ticket), + suggestion=suggestion, participant_type=State.PARTICIPANT_TYPE_PERSONAL, + intervene_type=Transition.TRANSITION_INTERVENE_TYPE_ALTER_STATE, + participant=handler) cls.task_ticket(ticket=ticket) @classmethod diff --git a/apps/wf/views.py b/apps/wf/views.py index bc88bca5..fdbe55b3 100755 --- a/apps/wf/views.py +++ b/apps/wf/views.py @@ -508,15 +508,16 @@ class TicketViewSet(CreateUpdateCustomMixin, CreateModelMixin, ListModelMixin, R @action(methods=['put'], detail=True, perms_map={'put': 'ticket.state_update'}, serializer_class=TicketStateUpateSerializer) def state(self, request, pk=None): - """修改工单状态 + """强制修改工单状态 - 修改工单状态 + 强制修改工单状态 """ sr = TicketStateUpateSerializer(data=request.data) sr.is_valid(raise_exception=True) vdata = sr.validated_data ticket = self.get_object() - pass + WfService.update_ticket_state(ticket, vdata['state'], vdata.get('suggestion', ''), request.user, vdata['need_log']) + return Response() class TicketFlowViewSet(ListModelMixin, RetrieveModelMixin, CustomGenericViewSet):