Merge pull request !12846 from 李鹏宇/dev
This commit is contained in:
李鹏宇
2026-09-15 09:52:17 +00:00
committed by Gitee
+17 -7
View File
@@ -798,6 +798,16 @@ class SoongWorkflowMixin(models.AbstractModel):
'link_type': 'trans',
'record_id': self.id,
})
# 节点无可选审批人(employee_ids 为空)也跳过,避免生成无人可审的空流转节点
approvers = self._get_approvers_for_link(link, self)
# 纯"结束"节点(无转交/加签/分发/下发按钮)不需要审批人,正常保留,避免误跳结束节点卡死流程
node_approval_btns = node.button_ids.filtered(
lambda b: b.name in ('转交', '加签', '分发', '下发'))
if not approvers and node_approval_btns:
_logger.info(f"跳过节点: {node.name},无可选审批人(employee_ids 为空)")
skipped_node_names.append(node.name)
link.with_context(confirm_delete=True).unlink()
continue
actual_path_links.append(link)
if actual_path_links:
@@ -909,11 +919,11 @@ class SoongWorkflowMixin(models.AbstractModel):
for rec in self:
# 仅匹配未回收的有效记录(回收站里的 reclaim_state=True 旧记录不参与),
# 避免"同一张单 + 并发/state 多次写入"时重复 create
record_obj = self.env["soong.workflow.record"].search(
record_obj = rec.env["soong.workflow.record"].search(
[("res_model", "=", rec._name), ("res_id", "=", rec.id), ('reclaim_state', '=', False)],
limit=1)
record_id = self.env[rec._name].search([('id', '=', rec.id)])
current_user_id = self.env.user.id
record_id = rec.env[rec._name].search([('id', '=', rec.id)])
current_user_id = rec.env.user.id
if rec.state in ['申请人', '拟办', '草稿', 'draft']:
if not record_obj:
values = {
@@ -923,13 +933,13 @@ class SoongWorkflowMixin(models.AbstractModel):
"res_id": rec.id,
"workflow_id": rec.workflow_id.id,
"node_id": rec.node_id.id,
"done_by": self.env.uid,
"done_by": rec.env.uid,
"users_ids": [(4, current_user_id)],
"employee_ids": self.env.user.employee_id,
"employee_ids": rec.env.user.employee_id,
"write_date2": fields.Datetime.now(),
}
# 查找匹配的字段
matched_fields = self.find_fields_by_string(record_id)
matched_fields = rec.find_fields_by_string(record_id)
# 提取"事由"或"正文"字段的值
text_fields = [f for f in matched_fields if
'事由' in f['field_string'] or '正文' in f['field_string']]
@@ -947,7 +957,7 @@ class SoongWorkflowMixin(models.AbstractModel):
if attachment_ids:
values["documents_ids"] = [(6, 0, attachment_ids.ids)]
# 创建工作流记录
self.env["soong.workflow.record"].create(values)
rec.env["soong.workflow.record"].create(values)
if record_obj:
# 获取上一节点的结束时间(即log_ids最后一条记录的lase_click_date)