diff --git a/apps/wf/services.py b/apps/wf/services.py index ca0ce46d..5505c6e0 100755 --- a/apps/wf/services.py +++ b/apps/wf/services.py @@ -442,11 +442,17 @@ class WfService(object): last_log.intervene_type == Transition.TRANSITION_INTERVENE_TYPE_DELIVER or ticket.in_add_node): # 如果状态变化或是转交加签的情况再发送通知 - Thread(target=send_ticket_notice_t, args=(ticket,), daemon=True).start() + cls.send_ticket_notice(ticketflow=last_log) # 如果目标状态是脚本则异步执行 if state.participant_type == State.PARTICIPANT_TYPE_ROBOT: run_task.delay(ticket_id=ticket.id) + + @classmethod + def send_ticket_notice(cls, ticketflow:TicketFlow): + # 根据ticketflow发送通知 + Thread(target=send_ticket_notice_t, args=(ticketflow,), daemon=True).start() + @classmethod def close_by_task(cls, ticket: Ticket, suggestion: str): @@ -479,10 +485,13 @@ class WfService(object): suggestion=suggestion, participant_type=State.PARTICIPANT_TYPE_PERSONAL, intervene_type=Transition.TRANSITION_INTERVENE_TYPE_RETREAT, participant=handler, transition=None) -def send_ticket_notice_t(ticket: Ticket): + cls.task_ticket(ticket=ticket) + +def send_ticket_notice_t(ticketflow: TicketFlow): """ 发送通知 """ + ticket = ticketflow.ticket params = {'workflow': ticket.workflow.name, 'state': ticket.state.name} if ticket.participant_type == 1: # 发送短信通知 diff --git a/apps/wf/views.py b/apps/wf/views.py index ad924489..3728c15d 100755 --- a/apps/wf/views.py +++ b/apps/wf/views.py @@ -330,11 +330,12 @@ class TicketViewSet(CreateUpdateCustomMixin, CreateModelMixin, ListModelMixin, R ticket.participant_type = State.PARTICIPANT_TYPE_PERSONAL ticket.participant = vdata['target_user'] ticket.save() - TicketFlow.objects.create(ticket=ticket, state=ticket.state, + tf = TicketFlow.objects.create(ticket=ticket, state=ticket.state, ticket_data=WfService.get_ticket_all_field_value(ticket), suggestion=vdata.get('suggestion', ''), participant_type=State.PARTICIPANT_TYPE_PERSONAL, intervene_type=Transition.TRANSITION_INTERVENE_TYPE_DELIVER, participant=request.user, transition=None) + WfService.send_ticket_notice(ticketflow=tf) return Response() @action(methods=['get'], detail=True, perms_map={'get': '*'}) @@ -382,11 +383,12 @@ class TicketViewSet(CreateUpdateCustomMixin, CreateModelMixin, ListModelMixin, R ticket.save() # 接单日志 # 更新工单流转记录 - TicketFlow.objects.create(ticket=ticket, state=ticket.state, + tf = TicketFlow.objects.create(ticket=ticket, state=ticket.state, ticket_data=WfService.get_ticket_all_field_value(ticket), suggestion='', participant_type=State.PARTICIPANT_TYPE_PERSONAL, intervene_type=Transition.TRANSITION_ATTRIBUTE_TYPE_ACCEPT, participant=request.user, transition=None) + WfService.send_ticket_notice(ticketflow=tf) return Response() else: raise ParseError('无需接单') @@ -421,11 +423,12 @@ class TicketViewSet(CreateUpdateCustomMixin, CreateModelMixin, ListModelMixin, R ticket.save() # 更新流转记录 suggestion = request.data.get('suggestion', '') # 加签说明 - TicketFlow.objects.create(ticket=ticket, state=ticket.state, + tf = 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_ADD_NODE, participant=request.user, transition=None) + WfService.send_ticket_notice(ticketflow=tf) return Response() @action(methods=['post'], detail=True, perms_map={'post': '*'}, serializer_class=TicketAddNodeEndSerializer) @@ -445,11 +448,12 @@ class TicketViewSet(CreateUpdateCustomMixin, CreateModelMixin, ListModelMixin, R ticket.save() # 更新流转记录 suggestion = request.data.get('suggestion', '') # 加签意见 - TicketFlow.objects.create(ticket=ticket, state=ticket.state, + tf = 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_ADD_NODE_END, participant=request.user, transition=None) + WfService.send_ticket_notice(ticketflow=tf) return Response() @action(methods=['post'], detail=True, perms_map={'post': '*'},