diff --git a/soong_workflow/models/soong_workflow_record.py b/soong_workflow/models/soong_workflow_record.py index ca8239de7..3354c239f 100644 --- a/soong_workflow/models/soong_workflow_record.py +++ b/soong_workflow/models/soong_workflow_record.py @@ -101,6 +101,13 @@ class SoongWorkflowRecord(models.Model): store=True # 存储到数据库,以便用于排序 ) + # 流程待办人员:从关联记录的log_ids和log_ids2中取出待办/办理中的审批人,逗号拼接 + pending_users = fields.Text( + string="流程待办人员", + compute='_compute_pending_users', + store=False, + ) + @api.returns('self', lambda value: value.id) def copy(self, default=None): default = default or {} @@ -116,6 +123,37 @@ class SoongWorkflowRecord(models.Model): for record in self: record.display_end_time = record.node_update_time or record.write_date2 + @api.depends('res_model', 'res_id', 'approve_state') + def _compute_pending_users(self): + for record in self: + record.pending_users = '' + # 只有审批中状态才显示流程待办人员 + if record.approve_state != 'pending': + continue + if not record.res_model or not record.res_id: + continue + try: + target = self.env[record.res_model].browse(record.res_id).exists() + if not target: + continue + names = [] + # 从log_ids中获取待办/办理中的审批人 + if hasattr(target, 'log_ids'): + for log in target.log_ids: + if log.approval_state in ('0', '1') and log.done_by and log.done_by.name: + if log.done_by.name not in names: + names.append(log.done_by.name) + # 从log_ids2中获取待办/办理中的审批人 + if hasattr(target, 'log_ids2'): + for log2 in target.log_ids2: + if log2.approval_state in ('0', '1') and log2.done_by and log2.done_by.name: + if log2.done_by.name not in names: + names.append(log2.done_by.name) + record.pending_users = ','.join(names) + except Exception as e: + _logger.warning(f"Failed to compute pending_users for record {record.id}: {e}") + record.pending_users = '' + @api.depends('res_model', 'res_id') def _compute_urgency_level(self): """从关联的业务模型中获取urgency_level值""" diff --git a/soong_workflow/views/soong_workflow_record.xml b/soong_workflow/views/soong_workflow_record.xml index bcc890629..f1687987c 100644 --- a/soong_workflow/views/soong_workflow_record.xml +++ b/soong_workflow/views/soong_workflow_record.xml @@ -103,8 +103,8 @@ - - + + @@ -119,6 +119,7 @@ +