From 961754d8cad6ba4566b9081796793dffbfd9b593 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 13 Oct 2021 15:41:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E7=AD=BE=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb_server/apps/em/serializers.py | 1 + hb_server/apps/wf/serializers.py | 6 +++++- hb_server/apps/wf/views.py | 21 ++++++++++++++------- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/hb_server/apps/em/serializers.py b/hb_server/apps/em/serializers.py index 55d0674..677383b 100644 --- a/hb_server/apps/em/serializers.py +++ b/hb_server/apps/em/serializers.py @@ -23,6 +23,7 @@ class EquipmentSerializer(ModelSerializer): def get_step_(self, obj): return Step.objects.filter(equipments=obj).values('id', 'name', 'number') + class EquipmentSimpleSerializer(ModelSerializer): class Meta: model = Equipment diff --git a/hb_server/apps/wf/serializers.py b/hb_server/apps/wf/serializers.py index d560ad4..6748d74 100644 --- a/hb_server/apps/wf/serializers.py +++ b/hb_server/apps/wf/serializers.py @@ -132,4 +132,8 @@ class TicketRetreatSerializer(serializers.Serializer): suggestion = serializers.CharField(label="撤回原因", required = False) class TicketCloseSerializer(serializers.Serializer): - suggestion = serializers.CharField(label="关闭原因", required = False) \ No newline at end of file + suggestion = serializers.CharField(label="关闭原因", required = False) + +class TicketAddNodeSerializer(serializers.Serializer): + suggestion = serializers.CharField(label="加签说明", required = False) + user = serializers.IntegerField(label='加签人') \ No newline at end of file diff --git a/hb_server/apps/wf/views.py b/hb_server/apps/wf/views.py index d7939f1..35c980d 100644 --- a/hb_server/apps/wf/views.py +++ b/hb_server/apps/wf/views.py @@ -4,7 +4,7 @@ from django.core.exceptions import AppRegistryNotReady from rest_framework.response import Response from rest_framework import serializers from rest_framework.mixins import CreateModelMixin, DestroyModelMixin, ListModelMixin, RetrieveModelMixin, UpdateModelMixin -from apps.wf.serializers import CustomFieldSerializer, StateSerializer, TicketCloseSerializer, TicketCreateSerializer, TicketFlowSerializer, TicketFlowSimpleSerializer, TicketHandleSerializer, TicketRetreatSerializer, TicketSerializer, TransitionSerializer, WorkflowSerializer, TicketListSerializer, TicketDetailSerializer +from apps.wf.serializers import CustomFieldSerializer, StateSerializer, TicketAddNodeSerializer, TicketCloseSerializer, TicketCreateSerializer, TicketFlowSerializer, TicketFlowSimpleSerializer, TicketHandleSerializer, TicketRetreatSerializer, TicketSerializer, TransitionSerializer, WorkflowSerializer, TicketListSerializer, TicketDetailSerializer from django.shortcuts import get_object_or_404, render from rest_framework.viewsets import GenericViewSet, ModelViewSet from rest_framework.decorators import action, api_view @@ -314,18 +314,25 @@ class TicketViewSet(OptimizationMixin, CreateUpdateCustomMixin, CreateModelMixin participant=request.user, transition=None) return Response() - @action(methods=['post'], detail=True, perms_map={'post':'*'}) + @action(methods=['post'], detail=True, perms_map={'post':'*'}, serializer_class=TicketAddNodeSerializer) def add_node(self, request, pk=None): """ 加签 """ ticket = self.get_object() data = request.data - # add_user = User.objects.get(pk=data[]) - # ticket.participant_type = State.PARTICIPANT_TYPE_PERSONAL - # ticket.participant = None - # ticket.act_state = Ticket.TICKET_ACT_STATE_CLOSED - # ticket.save() + add_user = User.objects.get(pk=data['user']) + ticket.participant_type = State.PARTICIPANT_TYPE_PERSONAL + ticket.participant = add_user.id + ticket.in_add_node = True + ticket.add_node_man = add_user + ticket.save() + # 更新流转记录 + suggestion = request.data.get('suggestion', '') # 加签说明 + TicketFlow.objects.create(ticket=ticket, state=ticket.state, ticket_data=WfService.get_ticket_all_field_value(ticket), + suggestion=suggestion, participant_type=State.PARTICIPANT_TYPE_PERSONAL, intervene_type=Transition.TRANSITION_INTERVENE_TYPE_ADD_NODE, + participant=request.user, transition=None) + return Response() @action(methods=['post'], detail=True, perms_map={'post':'*'}, serializer_class=TicketCloseSerializer)