wf 更改ticket 状态接口
This commit is contained in:
parent
1833c1a7ff
commit
1dfb9626cc
|
@ -259,3 +259,8 @@ class TicketAddNodeEndSerializer(serializers.Serializer):
|
||||||
|
|
||||||
class TicketDestorySerializer(serializers.Serializer):
|
class TicketDestorySerializer(serializers.Serializer):
|
||||||
ids = serializers.ListField(child=serializers.PrimaryKeyRelatedField(queryset=Ticket.objects.all()), label='工单ID列表')
|
ids = serializers.ListField(child=serializers.PrimaryKeyRelatedField(queryset=Ticket.objects.all()), label='工单ID列表')
|
||||||
|
|
||||||
|
|
||||||
|
class TicketStateUpateSerializer(serializers.Serializer):
|
||||||
|
state = serializers.PrimaryKeyRelatedField(queryset=State.objects.all(), label='状态ID值')
|
||||||
|
suggestion = serializers.CharField(label="变更理由", required=False)
|
||||||
|
|
|
@ -152,7 +152,6 @@ class WfService(object):
|
||||||
multi_all_person={})
|
multi_all_person={})
|
||||||
multi_all_person_dict = {}
|
multi_all_person_dict = {}
|
||||||
destination_participant_type, destination_participant = state.participant_type, state.participant
|
destination_participant_type, destination_participant = state.participant_type, state.participant
|
||||||
print(state.name, destination_participant_type, destination_participant)
|
|
||||||
if destination_participant_type == State.PARTICIPANT_TYPE_FIELD:
|
if destination_participant_type == State.PARTICIPANT_TYPE_FIELD:
|
||||||
destination_participant = new_ticket_data.get(destination_participant, 0) if destination_participant \
|
destination_participant = new_ticket_data.get(destination_participant, 0) if destination_participant \
|
||||||
in new_ticket_data else Ticket.ticket_data.get(destination_participant, 0)
|
in new_ticket_data else Ticket.ticket_data.get(destination_participant, 0)
|
||||||
|
@ -394,6 +393,23 @@ class WfService(object):
|
||||||
|
|
||||||
return ticket
|
return ticket
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def update_ticket_state(cls, ticket: Ticket, new_state: State, suggestion: str, handler: User):
|
||||||
|
participant_info = cls.get_ticket_state_participant_info(
|
||||||
|
new_state, ticket, {})
|
||||||
|
source_state = ticket.state
|
||||||
|
ticket.state = new_state
|
||||||
|
ticket.participant_type = participant_info.get('destination_participant_type', 0)
|
||||||
|
ticket.participant = participant_info.get('destination_participant', 0)
|
||||||
|
ticket.multi_all_person = {}
|
||||||
|
ticket.save()
|
||||||
|
TicketFlow.objects.create(ticket=ticket, state=source_state,
|
||||||
|
ticket_data=WfService.get_ticket_all_field_value(ticket),
|
||||||
|
suggestion=suggestion, participant_type=State.PARTICIPANT_TYPE_PERSONAL,
|
||||||
|
intervene_type=Transition.TRANSITION_INTERVENE_TYPE_ALTER_STATE,
|
||||||
|
participant=handler)
|
||||||
|
cls.task_ticket(ticket=ticket)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def task_ticket(cls, ticket: Ticket):
|
def task_ticket(cls, ticket: Ticket):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -12,7 +12,7 @@ from apps.wf.serializers import CustomFieldCreateUpdateSerializer, CustomFieldSe
|
||||||
TicketCreateSerializer, TicketDeliverSerializer, TicketDestorySerializer, TicketFlowSerializer, \
|
TicketCreateSerializer, TicketDeliverSerializer, TicketDestorySerializer, TicketFlowSerializer, \
|
||||||
TicketHandleSerializer, TicketRetreatSerializer, \
|
TicketHandleSerializer, TicketRetreatSerializer, \
|
||||||
TicketSerializer, TransitionSerializer, WorkflowSerializer, \
|
TicketSerializer, TransitionSerializer, WorkflowSerializer, \
|
||||||
TicketListSerializer, TicketDetailSerializer, WorkflowCloneSerializer
|
TicketListSerializer, TicketDetailSerializer, WorkflowCloneSerializer, TicketStateUpateSerializer
|
||||||
from rest_framework.viewsets import GenericViewSet, ModelViewSet
|
from rest_framework.viewsets import GenericViewSet, ModelViewSet
|
||||||
from rest_framework.decorators import action
|
from rest_framework.decorators import action
|
||||||
from apps.wf.models import CustomField, Ticket, Workflow, State, Transition, TicketFlow
|
from apps.wf.models import CustomField, Ticket, Workflow, State, Transition, TicketFlow
|
||||||
|
@ -173,6 +173,7 @@ class WorkflowViewSet(CustomModelViewSet):
|
||||||
tr.save()
|
tr.save()
|
||||||
return Response()
|
return Response()
|
||||||
|
|
||||||
|
|
||||||
class StateViewSet(CreateModelMixin, UpdateModelMixin, RetrieveModelMixin, DestroyModelMixin, CustomGenericViewSet):
|
class StateViewSet(CreateModelMixin, UpdateModelMixin, RetrieveModelMixin, DestroyModelMixin, CustomGenericViewSet):
|
||||||
perms_map = {'get': '*', 'post': 'workflow.update',
|
perms_map = {'get': '*', 'post': 'workflow.update',
|
||||||
'put': 'workflow.update', 'delete': 'workflow.update'}
|
'put': 'workflow.update', 'delete': 'workflow.update'}
|
||||||
|
@ -498,6 +499,19 @@ class TicketViewSet(CreateUpdateCustomMixin, CreateModelMixin, ListModelMixin, R
|
||||||
run_task.delay(ticket.id)
|
run_task.delay(ticket.id)
|
||||||
return Response()
|
return Response()
|
||||||
|
|
||||||
|
@action(methods=['put'], detail=True, perms_map={'put': 'ticket.state_update'},
|
||||||
|
serializer_class=TicketStateUpateSerializer)
|
||||||
|
def state(self, request, pk=None):
|
||||||
|
"""修改工单状态
|
||||||
|
|
||||||
|
修改工单状态
|
||||||
|
"""
|
||||||
|
sr = TicketStateUpateSerializer(data=request.data)
|
||||||
|
sr.is_valid(raise_exception=True)
|
||||||
|
vdata = sr.validated_data
|
||||||
|
ticket = self.get_object()
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class TicketFlowViewSet(ListModelMixin, RetrieveModelMixin, CustomGenericViewSet):
|
class TicketFlowViewSet(ListModelMixin, RetrieveModelMixin, CustomGenericViewSet):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue