From 3c5e12db2632d5efffcabb360af555036ed3da94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Sat, 24 Jan 2026 12:09:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E6=B5=81=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=97=B6=E9=97=B4=EF=BC=8C=E5=88=86=E5=8F=91?= =?UTF-8?q?=E6=8E=92=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- soong_workflow/models/soong_workflow_mixin.py | 27 +++++++++++++++---- .../models/soong_workflow_record.py | 3 +++ .../views/soong_workflow_record.xml | 2 +- .../soong_workflow_comment_wizard_view.xml | 24 ++++++++++++----- 4 files changed, 43 insertions(+), 13 deletions(-) diff --git a/soong_workflow/models/soong_workflow_mixin.py b/soong_workflow/models/soong_workflow_mixin.py index 743981bd0..fcd04ba59 100644 --- a/soong_workflow/models/soong_workflow_mixin.py +++ b/soong_workflow/models/soong_workflow_mixin.py @@ -659,11 +659,28 @@ class SoongWorkflowMixin(models.AbstractModel): self.env["soong.workflow.record"].create(values) if record_obj: - record_obj.update({"workflow_id": rec.workflow_id.id, - "node_id": rec.node_id.id, - "done_by": self.env.uid, - "write_date2": fields.Datetime.now(), - }) + # 获取上一节点的结束时间(即log_ids最后一条记录的lase_click_date) + node_update_time = False + try: + if hasattr(rec, 'log_ids') and rec.log_ids: + # 按ID排序获取最后一条日志 + sorted_logs = rec.log_ids.sorted(lambda log: log.id) + if sorted_logs and sorted_logs[-1].lase_click_date: + node_update_time = sorted_logs[-1].lase_click_date + except Exception as e: + _logger.debug(f"Failed to get node_update_time: {e}") + + # 更新记录 + update_vals = { + "workflow_id": rec.workflow_id.id, + "node_id": rec.node_id.id, + "done_by": self.env.uid, + "write_date2": fields.Datetime.now(), + } + if node_update_time: + update_vals["node_update_time"] = node_update_time + + record_obj.update(update_vals) def find_fields_by_string(self,record_id): """ diff --git a/soong_workflow/models/soong_workflow_record.py b/soong_workflow/models/soong_workflow_record.py index b54864820..b969a0ebe 100644 --- a/soong_workflow/models/soong_workflow_record.py +++ b/soong_workflow/models/soong_workflow_record.py @@ -82,6 +82,9 @@ class SoongWorkflowRecord(models.Model): is_company = fields.Boolean(string="本公司", default=True, compute='_compute_is_company',search='_search_part_of_company') + # 节点更新时间(上一节点的结束时间) + node_update_time = fields.Datetime(string="节点更新时间") + @api.depends_context('uid', 'company') @api.depends('company_id') def _compute_is_company(self): diff --git a/soong_workflow/views/soong_workflow_record.xml b/soong_workflow/views/soong_workflow_record.xml index fe4111ea0..07ef8b71f 100644 --- a/soong_workflow/views/soong_workflow_record.xml +++ b/soong_workflow/views/soong_workflow_record.xml @@ -243,7 +243,7 @@ decoration-danger="approve_state == 'end'" decoration-success="approve_state == 'pending'"/> - + diff --git a/soong_workflow/wizard/soong_workflow_comment_wizard_view.xml b/soong_workflow/wizard/soong_workflow_comment_wizard_view.xml index 9f3a8e2a1..329746b99 100644 --- a/soong_workflow/wizard/soong_workflow_comment_wizard_view.xml +++ b/soong_workflow/wizard/soong_workflow_comment_wizard_view.xml @@ -105,13 +105,23 @@

当前流程是否收回,请确认

- - - - - - - + + + + + + + + + + + + + + + + +