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'"/>