关闭工单接口
This commit is contained in:
parent
0e76ffe6b3
commit
243613bfdf
|
|
@ -130,3 +130,6 @@ class TicketHandleSerializer(serializers.Serializer):
|
||||||
|
|
||||||
class TicketRetreatSerializer(serializers.Serializer):
|
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)
|
||||||
|
|
@ -33,6 +33,17 @@ class WfService(object):
|
||||||
except:
|
except:
|
||||||
raise Exception('工作流状态配置错误')
|
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
|
@staticmethod
|
||||||
def get_workflow_custom_fields(workflow:Workflow):
|
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.response import Response
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from rest_framework.mixins import CreateModelMixin, DestroyModelMixin, ListModelMixin, RetrieveModelMixin, UpdateModelMixin
|
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 django.shortcuts import get_object_or_404, render
|
||||||
from rest_framework.viewsets import GenericViewSet, ModelViewSet
|
from rest_framework.viewsets import GenericViewSet, ModelViewSet
|
||||||
from rest_framework.decorators import action, api_view
|
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):
|
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):
|
class TicketFlowViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue