diff --git a/hb_server/apps/mtm/views.py b/hb_server/apps/mtm/views.py index 3600169..0c61d43 100644 --- a/hb_server/apps/mtm/views.py +++ b/hb_server/apps/mtm/views.py @@ -3,7 +3,7 @@ from rest_framework.viewsets import ModelViewSet, GenericViewSet from rest_framework.mixins import CreateModelMixin, ListModelMixin, UpdateModelMixin, RetrieveModelMixin, DestroyModelMixin from apps.mtm.models import InputMaterial, Material, OutputMaterial, Process, ProductProcess, Step, UsedStep -from apps.mtm.serializers import InputMaterialListSerializer, InputMaterialSerializer, InputMaterialUpdateSerializer, MaterialDetailSerializer, MaterialSerializer, MaterialSimpleSerializer, OutputMaterialListSerializer, OutputMaterialSerializer, OutputMaterialUpdateSerializer, ProductProcessListSerializer, ProductProcessUpdateSerializer, ProcessSerializer, StepSerializer, UsedStepCreateSerializer, UsedStepListSerializer +from apps.mtm.serializers import InputMaterialListSerializer, InputMaterialSerializer, InputMaterialUpdateSerializer, MaterialDetailSerializer, MaterialSerializer, MaterialSimpleSerializer, OutputMaterialListSerializer, OutputMaterialSerializer, OutputMaterialUpdateSerializer, ProductProcessListSerializer, ProductProcessUpdateSerializer, ProcessSerializer, StepDetailSerializer, StepSerializer, UsedStepCreateSerializer, UsedStepListSerializer from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin from rest_framework.decorators import action from rest_framework.response import Response @@ -73,6 +73,10 @@ class StepViewSet(CreateUpdateModelAMixin, CreateModelMixin, UpdateModelMixin, R filterset_fields = ['process'] ordering = ['sort'] + def get_serializer_class(self): + if self.action == 'retrieve': + return StepDetailSerializer + return StepSerializer # class ProductProcessViewSet(PageOrNot, CreateModelMixin, UpdateModelMixin, ListModelMixin, DestroyModelMixin, GenericViewSet): # """ diff --git a/hb_server/apps/wf/services.py b/hb_server/apps/wf/services.py index aea2eaf..2337b95 100644 --- a/hb_server/apps/wf/services.py +++ b/hb_server/apps/wf/services.py @@ -162,15 +162,17 @@ class WfService(object): state = ticket.state if participant_type == State.PARTICIPANT_TYPE_PERSONAL: if user.id != participant: - return dict(permission=False, need_accept=False, in_add_node=False, msg="非当前处理人") + return dict(permission=False, msg="非当前处理人") elif participant_type in [State.PARTICIPANT_TYPE_MULTI, State.PARTICIPANT_TYPE_DEPT, State.PARTICIPANT_TYPE_ROLE]: if user.id not in participant: - return dict(permission=False, need_accept=False, in_add_node=False, msg="非当前处理人") + return dict(permission=False, msg="非当前处理人") current_participant_count = len(participant.split(',')) - need_accept = False if current_participant_count >1 and state.distribute_type == State.STATE_DISTRIBUTE_TYPE_ACTIVE: - # 如果是主动接单 - need_accept = True + return dict(permission=False, msg="需要先接单再处理") + if ticket.in_add_node: + return dict(permission=False, msg="工单当前处于加签中,请加签完成后操作") + return dict(permission=True, msg="") + diff --git a/hb_server/apps/wf/views.py b/hb_server/apps/wf/views.py index 67d7e09..5bf968a 100644 --- a/hb_server/apps/wf/views.py +++ b/hb_server/apps/wf/views.py @@ -1,8 +1,9 @@ +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, TicketCreateSerializer, TicketSerializer, TransitionSerializer, WorkflowSerializer -from django.shortcuts import render +from django.shortcuts import get_object_or_404, render from rest_framework.viewsets import GenericViewSet, ModelViewSet from rest_framework.decorators import action, api_view from apps.wf.models import CustomField, Ticket, Workflow, State, Transition, TicketFlow @@ -148,14 +149,18 @@ class TicketViewSet(OptimizationMixin, CreateUpdateCustomMixin, CreateModelMixin participant=ticket.create_by, transition=transition) return Response(TicketSerializer(instance=ticket).data) - - def patch(self, request, *args, **kwargs): + @action(methods=['post'], detail=True, perms_map={'get':'*'}) + def handle(self, request, pk=None): """ 处理工单 """ + try: + ticket = Ticket.objects.get(pk=pk) + except: + raise APIException('工单不存在') data = request.data - pass + result = WfService.ticket_handle_permission_check() @action(methods=['get'], detail=True, perms_map={'get':'*'}) def flowsteps(self, request, pk=None):