wf 更改ticket 状态接口
This commit is contained in:
parent
1833c1a7ff
commit
1dfb9626cc
|
@ -259,3 +259,8 @@ class TicketAddNodeEndSerializer(serializers.Serializer):
|
|||
|
||||
class TicketDestorySerializer(serializers.Serializer):
|
||||
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_dict = {}
|
||||
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:
|
||||
destination_participant = new_ticket_data.get(destination_participant, 0) if destination_participant \
|
||||
in new_ticket_data else Ticket.ticket_data.get(destination_participant, 0)
|
||||
|
@ -394,6 +393,23 @@ class WfService(object):
|
|||
|
||||
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
|
||||
def task_ticket(cls, ticket: Ticket):
|
||||
"""
|
||||
|
|
|
@ -12,7 +12,7 @@ from apps.wf.serializers import CustomFieldCreateUpdateSerializer, CustomFieldSe
|
|||
TicketCreateSerializer, TicketDeliverSerializer, TicketDestorySerializer, TicketFlowSerializer, \
|
||||
TicketHandleSerializer, TicketRetreatSerializer, \
|
||||
TicketSerializer, TransitionSerializer, WorkflowSerializer, \
|
||||
TicketListSerializer, TicketDetailSerializer, WorkflowCloneSerializer
|
||||
TicketListSerializer, TicketDetailSerializer, WorkflowCloneSerializer, TicketStateUpateSerializer
|
||||
from rest_framework.viewsets import GenericViewSet, ModelViewSet
|
||||
from rest_framework.decorators import action
|
||||
from apps.wf.models import CustomField, Ticket, Workflow, State, Transition, TicketFlow
|
||||
|
@ -173,6 +173,7 @@ class WorkflowViewSet(CustomModelViewSet):
|
|||
tr.save()
|
||||
return Response()
|
||||
|
||||
|
||||
class StateViewSet(CreateModelMixin, UpdateModelMixin, RetrieveModelMixin, DestroyModelMixin, CustomGenericViewSet):
|
||||
perms_map = {'get': '*', 'post': 'workflow.update',
|
||||
'put': 'workflow.update', 'delete': 'workflow.update'}
|
||||
|
@ -498,6 +499,19 @@ class TicketViewSet(CreateUpdateCustomMixin, CreateModelMixin, ListModelMixin, R
|
|||
run_task.delay(ticket.id)
|
||||
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):
|
||||
"""
|
||||
|
|
Loading…
Reference in New Issue