添加功能

This commit is contained in:
李鹏宇
2026-08-17 11:29:54 +08:00
parent 1f82903223
commit 8756cc4489
2 changed files with 71 additions and 2 deletions
@@ -505,9 +505,73 @@ class SoongWorkflowCommentWizard(models.TransientModel):
])
for other_node_log in other_node_logs:
other_node_log.unlink()
# 印章分组审批:章内串审,删除同章其他人的待办
if getattr(current_node_log, 'stamp_id', False):
same_stamp_logs = self.sudo().env["soong.workflow.log"].search(
[("model", "=", self.res_model),
("res_id", "=", self.res_id),
("id", "!=", current_node_log.id),
("node_id", "=", self.node_btn_id.node_id.id),
("stamp_id", "=", current_node_log.stamp_id.id),
("approval_state", "in", ['0', '1']),
])
same_stamp_logs.unlink()
# 检查是否为并审模式
if self.approval_concatenation == 'bing': # 并审模式考勤异常
# 印章分组审批:模型有 type_stamp_ids 字段且转交目标是「印章管理员」节点
record_has_stamps = hasattr(record_id, 'type_stamp_ids') and bool(record_id.type_stamp_ids)
is_transfer_to_stamp = self.trans_link_id and self.trans_link_id.name == '印章管理员'
is_stamp_reviewer = bool(current_node_log and getattr(current_node_log, 'stamp_id', False))
if is_transfer_to_stamp and record_has_stamps:
# 场景1:转交到印章管理员节点,按章分组建待办(章间并审、章内串审)
next_node_id = record_id.workflow_id.node_ids.search([
('name', '=', self.trans_link_id.name),
('workflow_id', '=', record_id.workflow_id.id)
], limit=1)
all_user_ids = []
all_employee_ids = []
for stamp in record_id.type_stamp_ids:
for user in stamp.user_ids:
if user.id not in all_user_ids:
all_user_ids.append(user.id)
employee = self.env['hr.employee'].sudo().search([('user_id', '=', user.id)], limit=1)
if employee and employee.id not in all_employee_ids:
all_employee_ids.append(employee.id)
self.sudo().env["soong.workflow.log"].create({
"code": self.code,
"model": self.res_model,
"res_id": self.res_id,
"node_id": next_node_id.id,
"workflow_id": self.node_btn_id.workflow_id.id,
"done_by": user.id,
"node_btn_name": "4",
"stamp_id": stamp.id,
"approval_state": "0",
})
related_record = self.env[self.res_model].browse(self.res_id)
if hasattr(related_record, 'self_users_ids'):
related_record.self_users_ids = [(6, 0, all_user_ids)] if all_user_ids else [(5,)]
record_id.write({'state': self.trans_link_id.name})
workflow_record_id = self.env['soong.workflow.record'].sudo().search([('res_id', '=', record_id.id),
('res_model', '=', record_id._name)])
workflow_record_id.users_ids = [(4, uid) for uid in all_user_ids]
workflow_record_id.employee_ids = all_employee_ids
workflow_record_id.approve_state = "pending"
action_id = self.env['ir.actions.act_window'].search([('res_model', '=', self.res_model)])[0]
description = "标题: {}\n".format(record_id.name) + self.env.user.name + ' ' + str(fields.Datetime.now() + timedelta(hours=8))
for uid in all_user_ids:
employee = self.env['hr.employee'].sudo().search([('user_id', '=', uid)], limit=1)
if not employee:
continue
url = f'https://oa.thtzjt.com/web#id={record_id.id}&cids=2&menu_id={record_id.id}&action={action_id.id}&model={self.res_model}&view_type=form'
self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa',
user_id=employee.wecom_userid,
title=record_id._description + "印章审批",
description=description, url=url,
btntxt="查看详情")
# 检查是否为并审模式(印章节点的人提交时也走并审,实现章间并审)
elif is_stamp_reviewer or self.approval_concatenation == 'bing': # 并审模式
expected_employees = self.employee_ids
if record_id.log_ids2:
log_employee_ids = record_id.log_ids2.mapped('done_by.employee_id.id')
@@ -52,6 +52,11 @@ class SealsTypeSetting(models.Model):
else:
record.is_effect = record.start_date <= today <= record.end_date
class SoongWorkflowLog(models.Model):
_inherit = 'soong.workflow.log'
stamp_id = fields.Many2one('seals.type.setting', string='用章')
class SealsScopeSetting(models.Model):
_name = 'seals.scope.setting'
_description = '用章范围'