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 @@

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

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