From 98a07bb27afd167b8f4c4e0e498d7812b2e3af88 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 12 Oct 2021 15:59:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=B7=A5=E5=8D=95=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=8E=A5=E5=8F=A3=E7=8A=B6=E6=80=81=E5=85=81=E8=AE=B8?= =?UTF-8?q?=E6=92=A4=E5=9B=9E=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb_server/apps/wf/serializers.py | 2 +- hb_server/apps/wf/views.py | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/hb_server/apps/wf/serializers.py b/hb_server/apps/wf/serializers.py index 697a96a..addf700 100644 --- a/hb_server/apps/wf/serializers.py +++ b/hb_server/apps/wf/serializers.py @@ -23,7 +23,7 @@ class WorkflowSimpleSerializer(serializers.ModelSerializer): class StateSimpleSerializer(serializers.ModelSerializer): class Meta: model = State - fields = ['id', 'name', 'type', 'distribute_type'] + fields = ['id', 'name', 'type', 'distribute_type', 'enable_retreat'] class TransitionSerializer(serializers.ModelSerializer): source_state_ = StateSimpleSerializer(source='source_state', read_only=True) diff --git a/hb_server/apps/wf/views.py b/hb_server/apps/wf/views.py index 187d70f..461ccb8 100644 --- a/hb_server/apps/wf/views.py +++ b/hb_server/apps/wf/views.py @@ -292,7 +292,21 @@ class TicketViewSet(OptimizationMixin, CreateUpdateCustomMixin, CreateModelMixin """ 撤回工单,允许创建人在指定状态撤回工单至初始状态,状态设置中开启允许撤回 """ - pass + ticket = self.get_object() + if ticket.create_by != request.user: + raise APIException('非创建人不可撤单') + if not ticket.state.enable_retreat: + raise APIException('该状态不可撤单') + start_state = WfService.get_workflow_start_state(ticket.workflow) + ticket.state = start_state + ticket.participant_type = State.PARTICIPANT_TYPE_PERSONAL + ticket.participant = request.user + ticket.act_state = Ticket.TICKET_ACT_STATE_RETREAT + ticket.save() + # 更新流转记录 + TicketFlow.objects.create(ticket=ticket, state=ticket.state, ticket_data=WfService.get_ticket_all_field_value(ticket), + suggestion='撤单', participant_type=State.PARTICIPANT_TYPE_PERSONAL, + participant=request.user, transition=None) class TicketFlowViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet): """