diff --git a/yuthon_notice/models/yuthon_notice.py b/yuthon_notice/models/yuthon_notice.py index c95a282d7..b60847d06 100644 --- a/yuthon_notice/models/yuthon_notice.py +++ b/yuthon_notice/models/yuthon_notice.py @@ -135,10 +135,11 @@ class YuthonNotice(models.Model): notice.with_context(skip_constrains=True).users_ids = [(6, 0, list(all_users))] if notice.users_ids and notice.is_change_notice: - conf_old = self.env['yuthon.confirm.users'].search([('notice_id', '=', notice.id)]) + conf_old = self.env['yuthon.confirm.users'].sudo().search([('notice_id', '=', notice.id)]) old_employee_ids = conf_old.mapped('employee_id.id') - new_employee_ids = notice.users_ids.mapped('employee_ids.id') - + new_employee_ids = self.env['hr.employee'].sudo().search([ + ('user_id', 'in', notice.users_ids.ids) + ]).ids add_employee_ids = list(set(new_employee_ids) - set(old_employee_ids)) del_employee_ids = list(set(old_employee_ids) - set(new_employee_ids)) @@ -148,11 +149,13 @@ class YuthonNotice(models.Model): del_conf.unlink() if add_employee_ids: - # add_users = self.users_ids.filtered(lambda u: u.employee_ids[0].id in add_employee_ids) - for user in self.users_ids: + all_employees = self.env['hr.employee'].sudo().search([ + ('user_id', 'in', self.users_ids.ids) + ]) + for employee in all_employees: self.env['yuthon.confirm.users'].create({ 'notice_id': self.id, - 'employee_id': user.employee_id.id, + 'employee_id': employee.id, 'notice_code': self.code, 'notice_name': self.name, 'release_date': self.create_date1, @@ -198,9 +201,9 @@ class YuthonNotice(models.Model): self.ensure_one() if self.is_change_notice: self.notice_state = 'yes' - conf_old = self.env['yuthon.confirm.users'].search([ + conf_old = self.env['yuthon.confirm.users'].sudo().search([ ('notice_id', '=', self.id), - ('employee_id', 'in', self.users_ids.mapped('employee_ids.id')) + ('employee_id.user_id', 'in', self.users_ids.ids) ]) if conf_old: conf_old.write({'state': 'no'}) @@ -210,36 +213,33 @@ class YuthonNotice(models.Model): if not employee: continue url = f'https://phone.thtzjt.com/phone/Notice/{self.id}?employee_id={employee.id}' - result_data = self.sudo().env["wecom.apps"].sync_send_message_textcard( category='notice', - touser=user_id.employee_ids.wecom_userid, + touser=employee.wecom_userid, title="通知公告", - description=f"{self.name} 发布人: {self.users_id.name}", + description=f"{self.name} 发布人: {self.users_id.name if self.users_id else ''}", url=url, btntxt="详细信息" ) - msg_id = None if result_data: res_dict = result_data[1] msg_id = res_dict.get('msgid') - user_wecom_mapping.append({ 'emp_id': employee.id, 'msg_id': msg_id }) - for mapping in user_wecom_mapping: emp_id = mapping['emp_id'] msg_id = mapping['msg_id'] - is_exist = self.env['yuthon.confirm.users'].search([ + is_exist = self.env['yuthon.confirm.users'].sudo().search([ ('notice_id', '=', self.id), ('notice_code', '=', self.code), ('employee_id', '=', emp_id) ], limit=1) + if not is_exist: - self.env['yuthon.confirm.users'].create({ + self.env['yuthon.confirm.users'].sudo().create({ 'notice_id': self.id, 'employee_id': emp_id, 'notice_code': self.code, @@ -249,7 +249,7 @@ class YuthonNotice(models.Model): 'msg_id': msg_id, }) else: - is_exist.write({ + is_exist.sudo().write({ 'state': 'no', 'msg_id': msg_id, })