关闭工单接口
This commit is contained in:
parent
0e76ffe6b3
commit
243613bfdf
|
|
@ -129,4 +129,7 @@ class TicketHandleSerializer(serializers.Serializer):
|
|||
suggestion = serializers.CharField(label="处理意见", required = False)
|
||||
|
||||
class TicketRetreatSerializer(serializers.Serializer):
|
||||
suggestion = serializers.CharField(label="撤回原因", required = False)
|
||||
suggestion = serializers.CharField(label="撤回原因", required = False)
|
||||
|
||||
class TicketCloseSerializer(serializers.Serializer):
|
||||
suggestion = serializers.CharField(label="关闭原因", required = False)
|
||||
|
|
@ -32,7 +32,18 @@ class WfService(object):
|
|||
return wf_state_obj
|
||||
except:
|
||||
raise Exception('工作流状态配置错误')
|
||||
|
||||
|
||||
@staticmethod
|
||||
def get_workflow_end_state(workflow:Workflow):
|
||||
"""
|
||||
获取工作流结束状态
|
||||
"""
|
||||
try:
|
||||
wf_state_obj = State.objects.get(workflow=workflow, type=State.STATE_TYPE_END, is_deleted=False)
|
||||
return wf_state_obj
|
||||
except:
|
||||
raise Exception('工作流状态配置错误')
|
||||
|
||||
@staticmethod
|
||||
def get_workflow_custom_fields(workflow:Workflow):
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -3,7 +3,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, TicketCreateSerializer, TicketFlowSerializer, TicketFlowSimpleSerializer, TicketHandleSerializer, TicketRetreatSerializer, TicketSerializer, TransitionSerializer, WorkflowSerializer, TicketListSerializer, TicketDetailSerializer
|
||||
from apps.wf.serializers import CustomFieldSerializer, StateSerializer, 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
|
||||
|
|
@ -318,10 +318,26 @@ class TicketViewSet(OptimizationMixin, CreateUpdateCustomMixin, CreateModelMixin
|
|||
加签
|
||||
"""
|
||||
|
||||
@action(methods=['post'], detail=True, perms_map={'post':'*'}, serializer_class=TicketCloseSerializer)
|
||||
def close(self, request, pk=None):
|
||||
"""
|
||||
关闭工单(超级管理员或者创建人在初始状态)
|
||||
关闭工单(创建人在初始状态)
|
||||
"""
|
||||
ticket = self.get_object()
|
||||
if ticket.state.type == State.STATE_TYPE_START and ticket.create_by==request.user:
|
||||
end_state = WfService.get_workflow_end_state(ticket.workflow)
|
||||
ticket.state = end_state
|
||||
ticket.participant_type = State.PARTICIPANT_TYPE_PERSONAL
|
||||
ticket.participant = request.user.id
|
||||
ticket.act_state = Ticket.TICKET_ACT_STATE_CLOSED
|
||||
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_CLOSE,
|
||||
participant=request.user, transition=None)
|
||||
else:
|
||||
raise APIException('工单不可关闭')
|
||||
|
||||
|
||||
class TicketFlowViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet):
|
||||
|
|
|
|||
Loading…
Reference in New Issue