!12565 添加功能

Merge pull request !12565 from 李鹏宇/dev_zhou
This commit is contained in:
李鹏宇
2026-08-04 11:17:17 +00:00
committed by Gitee
@@ -375,6 +375,63 @@ class SoongWorkflowCommentWizard(models.TransientModel):
record_id = self.env[self.res_model].search([('id', '=', self.res_id)])
is_admin = self.env.user.has_group('soong_workflow.group_soong_workflow_manager')
log_done_by_ids = [log.done_by.id for log in record_id.log_ids if log.done_by]
if self.node_btn_name == '加签':
current_node_log = self.sudo().env["soong.workflow.log"].search(
[
("model", "=", self.res_model),
("res_id", "=", self.res_id),
("done_by", "=", self.env.user.id),
("approval_state", 'in', ['0','1']),
],
order="create_date DESC",
limit=1
)
current_node_log.write({
"comment": self.comment,
"approval_state": "2", # 已完成
'document_ids': [(6, 0, self.document_ids.ids)],
"lase_click_date": fields.Datetime.now()
})
if hasattr(record_id, 'user_id') and record_id.user_id:
query_user_id = record_id.user_id
elif hasattr(record_id, 'users_id') and record_id.users_id:
query_user_id = record_id.users_id
description = f"标题:{record_id.name}\n申请人:{query_user_id.name}"
action_id = self.env['ir.actions.act_window'].search([('res_model', '=', self.res_model)])[0]
for employee_id in self.add_employee_ids:
next_node_log_records = self.sudo().env["soong.workflow.log"].create({
'name': '加签',
"code": self.code,
"model": self.res_model,
"res_id": self.res_id,
"node_id": self.node_btn_id.node_id.id,
"workflow_id": self.node_btn_id.workflow_id.id,
"done_by": employee_id.user_id.id,
"add_sign_by": self.env.user.id,
"is_return" : self.is_return,
"node_btn_id": self.node_btn_id.id,
"approval_state": "0",
})
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'
result_data = self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa',
user_id=employee_id.wecom_userid,
title=record_id._description + "加签",
description=description, url=url,
btntxt="查看详情")
if result_data and 'msgid' in result_data[-1]:
msg_id = result_data[-1]['msgid']
target_logs = next_node_log_records.filtered(lambda l: l.done_by.id == employee_id.user_id.id)
if target_logs:
target_logs.msg_id = msg_id
workflow_record_id = self.env['soong.workflow.record'].sudo().search([('res_id', '=', record_id.id),
('res_model', '=', record_id._name)
])
workflow_record_id.employee_ids = self.add_employee_ids
workflow_record_id.users_ids = [(4, employee.user_id.id) for employee in self.add_employee_ids if
employee.user_id]
if self.node_btn_name == '转交' or (self.node_btn_name == '加签' and not self.is_return):
if self.res_model == 'issue.approval':
if self.trans_link_id.name != '申请人':
@@ -659,63 +716,6 @@ class SoongWorkflowCommentWizard(models.TransientModel):
title=record_id._description + "退回",
description=description, url=url, btntxt="查看详情")
if self.node_btn_name == '加签':
current_node_log = self.sudo().env["soong.workflow.log"].search(
[
("model", "=", self.res_model),
("res_id", "=", self.res_id),
("done_by", "=", self.env.user.id),
("approval_state", 'in', ['0','1']),
],
order="create_date DESC",
limit=1
)
current_node_log.write({
"comment": self.comment,
"approval_state": "2", # 已完成
'document_ids': [(6, 0, self.document_ids.ids)],
"lase_click_date": fields.Datetime.now()
})
if hasattr(record_id, 'user_id') and record_id.user_id:
query_user_id = record_id.user_id
elif hasattr(record_id, 'users_id') and record_id.users_id:
query_user_id = record_id.users_id
description = f"标题:{record_id.name}\n申请人:{query_user_id.name}"
action_id = self.env['ir.actions.act_window'].search([('res_model', '=', self.res_model)])[0]
for employee_id in self.add_employee_ids:
next_node_log_records = self.sudo().env["soong.workflow.log"].create({
'name': '加签',
"code": self.code,
"model": self.res_model,
"res_id": self.res_id,
"node_id": self.node_btn_id.node_id.id,
"workflow_id": self.node_btn_id.workflow_id.id,
"done_by": employee_id.user_id.id,
"add_sign_by": self.env.user.id,
"is_return" : self.is_return,
"node_btn_id": self.node_btn_id.id,
"approval_state": "0",
})
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'
result_data = self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa',
user_id=employee_id.wecom_userid,
title=record_id._description + "加签",
description=description, url=url,
btntxt="查看详情")
if result_data and 'msgid' in result_data[-1]:
msg_id = result_data[-1]['msgid']
target_logs = next_node_log_records.filtered(lambda l: l.done_by.id == employee_id.user_id.id)
if target_logs:
target_logs.msg_id = msg_id
workflow_record_id = self.env['soong.workflow.record'].sudo().search([('res_id', '=', record_id.id),
('res_model', '=', record_id._name)
])
workflow_record_id.employee_ids = self.add_employee_ids
workflow_record_id.users_ids = [(4, employee.user_id.id) for employee in self.add_employee_ids if
employee.user_id]
if self.node_btn_name == '加签确认':
if hasattr(record_id, 'user_id') and record_id.user_id:
query_user_id = record_id.user_id
@@ -789,7 +789,7 @@ class SoongWorkflowCommentWizard(models.TransientModel):
all_done = all(log.approval_state == "2" for log in batch_logs)
# 如果都完成 → 创建一条新日志给加签发起人
is_return = batch_logs[0].is_return
if all_done and is_return:
if all_done :
log_vals = {
"model": self.res_model,
"res_id": self.res_id,