强制修改工单状态
This commit is contained in:
parent
6d63e338a3
commit
7fdb9fb74f
|
@ -261,6 +261,10 @@ 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):
|
class TicketStateUpateSerializer(serializers.ModelSerializer):
|
||||||
state = serializers.PrimaryKeyRelatedField(queryset=State.objects.all(), label='状态ID值')
|
|
||||||
suggestion = serializers.CharField(label="变更理由", required=False)
|
suggestion = serializers.CharField(label="变更理由", required=False)
|
||||||
|
need_log = serializers.BooleanField(label="是否记录日志", default=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = Ticket
|
||||||
|
fields = ['state', 'suggestion', 'need_log']
|
||||||
|
|
|
@ -394,7 +394,7 @@ class WfService(object):
|
||||||
return ticket
|
return ticket
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def update_ticket_state(cls, ticket: Ticket, new_state: State, suggestion: str, handler: User):
|
def update_ticket_state(cls, ticket: Ticket, new_state: State, suggestion: str, handler: User, need_log:bool):
|
||||||
participant_info = cls.get_ticket_state_participant_info(
|
participant_info = cls.get_ticket_state_participant_info(
|
||||||
new_state, ticket, {})
|
new_state, ticket, {})
|
||||||
source_state = ticket.state
|
source_state = ticket.state
|
||||||
|
@ -403,11 +403,12 @@ class WfService(object):
|
||||||
ticket.participant = participant_info.get('destination_participant', 0)
|
ticket.participant = participant_info.get('destination_participant', 0)
|
||||||
ticket.multi_all_person = {}
|
ticket.multi_all_person = {}
|
||||||
ticket.save()
|
ticket.save()
|
||||||
TicketFlow.objects.create(ticket=ticket, state=source_state,
|
if need_log:
|
||||||
ticket_data=WfService.get_ticket_all_field_value(ticket),
|
TicketFlow.objects.create(ticket=ticket, state=source_state,
|
||||||
suggestion=suggestion, participant_type=State.PARTICIPANT_TYPE_PERSONAL,
|
ticket_data=WfService.get_ticket_all_field_value(ticket),
|
||||||
intervene_type=Transition.TRANSITION_INTERVENE_TYPE_ALTER_STATE,
|
suggestion=suggestion, participant_type=State.PARTICIPANT_TYPE_PERSONAL,
|
||||||
participant=handler)
|
intervene_type=Transition.TRANSITION_INTERVENE_TYPE_ALTER_STATE,
|
||||||
|
participant=handler)
|
||||||
cls.task_ticket(ticket=ticket)
|
cls.task_ticket(ticket=ticket)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|
|
@ -508,15 +508,16 @@ class TicketViewSet(CreateUpdateCustomMixin, CreateModelMixin, ListModelMixin, R
|
||||||
@action(methods=['put'], detail=True, perms_map={'put': 'ticket.state_update'},
|
@action(methods=['put'], detail=True, perms_map={'put': 'ticket.state_update'},
|
||||||
serializer_class=TicketStateUpateSerializer)
|
serializer_class=TicketStateUpateSerializer)
|
||||||
def state(self, request, pk=None):
|
def state(self, request, pk=None):
|
||||||
"""修改工单状态
|
"""强制修改工单状态
|
||||||
|
|
||||||
修改工单状态
|
强制修改工单状态
|
||||||
"""
|
"""
|
||||||
sr = TicketStateUpateSerializer(data=request.data)
|
sr = TicketStateUpateSerializer(data=request.data)
|
||||||
sr.is_valid(raise_exception=True)
|
sr.is_valid(raise_exception=True)
|
||||||
vdata = sr.validated_data
|
vdata = sr.validated_data
|
||||||
ticket = self.get_object()
|
ticket = self.get_object()
|
||||||
pass
|
WfService.update_ticket_state(ticket, vdata['state'], vdata.get('suggestion', ''), request.user, vdata['need_log'])
|
||||||
|
return Response()
|
||||||
|
|
||||||
|
|
||||||
class TicketFlowViewSet(ListModelMixin, RetrieveModelMixin, CustomGenericViewSet):
|
class TicketFlowViewSet(ListModelMixin, RetrieveModelMixin, CustomGenericViewSet):
|
||||||
|
|
Loading…
Reference in New Issue