From 07822f093d107fd0f7170a4d7123a3f159e63250 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 21 Jun 2023 15:14:06 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=B7=A5=E5=8D=95=E5=9B=9E=E5=88=B0?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E4=B8=AD=E6=97=B6=E6=9B=B4=E6=94=B9=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/opm/services.py | 18 ++++++++++++++++++ apps/opm/tasks.py | 19 ++++++++++++++++--- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/apps/opm/services.py b/apps/opm/services.py index 5331e277..bbe24378 100644 --- a/apps/opm/services.py +++ b/apps/opm/services.py @@ -70,6 +70,24 @@ def bind_opl(ticket: Ticket, transition: Transition, new_ticket_data: dict): op.state = Operation.OP_AUDIT op.save() +def correct_operation_state(ticket: Ticket): + """ + 矫正作业状态, 工单状态回到开始时让作业回到创建中 + """ + opl = Opl.objects.get(ticket=ticket) + op = opl.operation + if op.state == Operation.OP_AUDIT: + need_backs = [] + for opl in Opl.objects.filter(operation=op): + if (opl.ticket is None) or (opl.ticket and opl.ticket.state.type == 1 and opl.ticket.act_state in [2, 3]): # 如果在初始状态且是撤回或退回 + need_backs.append(True) + else: + need_backs.append(False) + if False in need_backs: + pass + else: + Operation.objects.filter(id=op.id).update(state=Operation.OP_CREATE) + def t_submit_close_mtask(ticket: Ticket, transition: Transition, new_ticket_data: dict): # 提交作业关闭时关闭作业监控 diff --git a/apps/opm/tasks.py b/apps/opm/tasks.py index a2e681ba..8f0bddf9 100644 --- a/apps/opm/tasks.py +++ b/apps/opm/tasks.py @@ -6,9 +6,22 @@ from celery import shared_task from apps.wf.models import Ticket - - - +@shared_task(base=CustomTask) +def correct_operation_state(): + """ + 矫正作业状态 + """ + for op in Operation.objects.filter(state=Operation.OP_AUDIT): + need_backs = [] + for opl in Opl.objects.filter(operation=op): + if (opl.ticket is None) or (opl.ticket and opl.ticket.state.type == 1 and opl.ticket.act_state in [2, 3]): # 如果在初始状态且是撤回或退回 + need_backs.append(True) + else: + need_backs.append(False) + if False in need_backs: + pass + else: + Operation.objects.filter(id=op.id).update(state=Operation.OP_CREATE) # @shared_task(base=CustomTask) # def opl_audit_start(ticket_id):