@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user