diff --git a/apps/wf/services.py b/apps/wf/services.py index ec3c6a7c..10c42044 100755 --- a/apps/wf/services.py +++ b/apps/wf/services.py @@ -309,6 +309,9 @@ class WfService(object): source_state = ticket.state source_ticket_data = ticket.ticket_data + if transition.source_state != source_state: + raise ParseError('非该工单节点状态下的流转') + # 提交时可能进行的操作 if transition.on_submit_func: module, func = transition.on_submit_func.rsplit(".", 1) diff --git a/apps/wf/tasks.py b/apps/wf/tasks.py index f19934a4..d7a1a54f 100644 --- a/apps/wf/tasks.py +++ b/apps/wf/tasks.py @@ -37,6 +37,8 @@ def send_ticket_notice(ticket_id): @shared_task(base=CustomTask) def run_task(ticket_id: str, retry_num=1): ticket = Ticket.objects.get(id=ticket_id) + transition_obj = Transition.objects.filter( + source_state=ticket.state, is_deleted=False).first() script_result = True script_result_msg = '' script_str = ticket.participant @@ -61,15 +63,13 @@ def run_task(ticket_id: str, retry_num=1): ticket.script_run_last_result = False ticket.save() # 记录日志 - transition_obj = Transition.objects.filter( - source_state=ticket.state, is_deleted=False).first() TicketFlow.objects.create(ticket=ticket, state=ticket.state, participant_type=State.PARTICIPANT_TYPE_ROBOT, participant_str='func:{}'.format(script_str), transition=transition_obj, suggestion=script_result_msg) # 自动流转 - if script_result: + if script_result and transition_obj: from apps.wf.services import WfService WfService.handle_ticket(ticket=ticket, transition=transition_obj, new_ticket_data=ticket.ticket_data, by_task=True)