强制修改工单状态

This commit is contained in:
caoqianming 2023-03-10 17:38:38 +08:00
parent 6d63e338a3
commit 7fdb9fb74f
3 changed files with 17 additions and 11 deletions

View File

@ -261,6 +261,10 @@ 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值')
class TicketStateUpateSerializer(serializers.ModelSerializer):
suggestion = serializers.CharField(label="变更理由", required=False)
need_log = serializers.BooleanField(label="是否记录日志", default=True)
class Meta:
model = Ticket
fields = ['state', 'suggestion', 'need_log']

View File

@ -394,7 +394,7 @@ class WfService(object):
return ticket
@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(
new_state, ticket, {})
source_state = ticket.state
@ -403,11 +403,12 @@ class WfService(object):
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)
if need_log:
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

View File

@ -508,15 +508,16 @@ class TicketViewSet(CreateUpdateCustomMixin, CreateModelMixin, ListModelMixin, R
@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
WfService.update_ticket_state(ticket, vdata['state'], vdata.get('suggestion', ''), request.user, vdata['need_log'])
return Response()
class TicketFlowViewSet(ListModelMixin, RetrieveModelMixin, CustomGenericViewSet):