diff --git a/soong_workflow/wizard/soong_workflow_comment_wizard.py b/soong_workflow/wizard/soong_workflow_comment_wizard.py index fdb672658..062cd7cf0 100644 --- a/soong_workflow/wizard/soong_workflow_comment_wizard.py +++ b/soong_workflow/wizard/soong_workflow_comment_wizard.py @@ -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,