From 2b054107c0b13bb54f0fef6fe6f45bce8ce682a3 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 12 Apr 2023 14:20:48 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=9D=9E=E5=B7=A5=E5=8D=95=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E4=B8=8B=E7=9A=84=E6=B5=81=E8=BD=AC=E4=B8=8D=E7=BB=A7?= =?UTF-8?q?=E7=BB=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wf/services.py | 3 +++ apps/wf/tasks.py | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) 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)