From bc655ad903496eb1fc41c48905ed3c8107b4ae36 Mon Sep 17 00:00:00 2001 From: zhou <123@> Date: Mon, 4 Aug 2025 10:28:02 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_hr_attendance/models/hr_attendance.py | 31 +++++++++++++++----- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/yuthon_hr_attendance/models/hr_attendance.py b/yuthon_hr_attendance/models/hr_attendance.py index 472a20b71..278e8a741 100644 --- a/yuthon_hr_attendance/models/hr_attendance.py +++ b/yuthon_hr_attendance/models/hr_attendance.py @@ -133,7 +133,6 @@ class HrAttendance(models.Model): def card_remind(self): menu_id = self.env['ir.ui.menu'].search([('name', '=', '我的异常')]) all_employees = self.env['hr.employee'].search([('name', '=', '叶华锋')]) - abnormal_employees = [] current_date = fields.Date.to_date('2025-04-21') # 使用当前年份2025 month_start = current_date.replace(day=1) month_end = (month_start + relativedelta(months=1) - relativedelta(days=1)) @@ -144,19 +143,35 @@ class HrAttendance(models.Model): ('current_data', '>=', month_start), ('current_data', '<=', month_end) ] + is_no_card = 0 + is_early_card = 0 + is_late_card = 0 + is_abnormal = 0 + absenteeism_card = 0 attend_records = self.env['hr.attendance'].search(domain) has_abnormal = False for attend_id in attend_records: if attend_id.is_no_card or attend_id.is_early_card or attend_id.is_late_card or attend_id.is_abnormal or attend_id.absenteeism_card: has_abnormal = True break - if has_abnormal: - if employee.id not in [emp.id for emp in abnormal_employees]: - abnormal_employees.append(employee) - for emp in abnormal_employees: - url = f'https://oa.thtzjt.com/web?login={emp.user_id.login}&oauth_uid={emp.wecom_userid}&cids=2&action={menu_id.action.id}&menu_id={menu_id.id}&model={self._name}&view_type=list#action={menu_id.action.id}&model={self._name}&view_type=list&menu_id={menu_id.id}' - self.sudo().env["wecom.apps"].sync_send_message_textcard(category='att', user_id=emp.wecom_userid, title="打卡异常提醒", - description="您本月有打卡异常", url=url, btntxt="详细信息") + for i in self.search(domain): + if i.is_no_card: + is_no_card += 1 + if i.is_no_card: + is_early_card += 1 + if i.is_no_card: + is_late_card += 1 + if i.is_abnormal: + is_abnormal += 1 + if i.absenteeism_card: + absenteeism_card += 1 + if has_abnormal: + url = (f'https://oa.thtzjt.com/web?login={employee.user_id.login}&oauth_uid={employee.wecom_userid}&cids=2&action={menu_id.action.id}&menu_id={menu_id.id}&model={self._name}' + f'&view_type=list#action={menu_id.action.id}&model={self._name}&view_type=list&menu_id={menu_id.id}') + self.sudo().env["wecom.apps"].sync_send_message_textcard(category='att', user_id=employee.wecom_userid, title="打卡异常提醒", + description="本月迟到: {}\n本月缺卡: {}\n本月早退: {}\n本月异常:{}\n 本月旷工: {}\n" + .format(is_late_card, is_no_card, is_early_card, is_abnormal, absenteeism_card), + url=url, btntxt="详细信息") @api.depends('employee_id', 'check_in', 'check_out') def _compute_display_name(self): From 0987e2d6ec2c107a4e096c49b5a0fbc605f34798 Mon Sep 17 00:00:00 2001 From: zhou <123@> Date: Mon, 4 Aug 2025 10:30:37 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_hr_attendance/models/hr_attendance.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/yuthon_hr_attendance/models/hr_attendance.py b/yuthon_hr_attendance/models/hr_attendance.py index 278e8a741..d42ff4ade 100644 --- a/yuthon_hr_attendance/models/hr_attendance.py +++ b/yuthon_hr_attendance/models/hr_attendance.py @@ -150,20 +150,18 @@ class HrAttendance(models.Model): absenteeism_card = 0 attend_records = self.env['hr.attendance'].search(domain) has_abnormal = False - for attend_id in attend_records: - if attend_id.is_no_card or attend_id.is_early_card or attend_id.is_late_card or attend_id.is_abnormal or attend_id.absenteeism_card: + for record in attend_records: + if record.is_no_card or record.is_early_card or record.is_late_card or record.is_abnormal or record.absenteeism_card: has_abnormal = True - break - for i in self.search(domain): - if i.is_no_card: + if record.is_no_card: is_no_card += 1 - if i.is_no_card: + if record.is_early_card: is_early_card += 1 - if i.is_no_card: + if record.is_late_card: is_late_card += 1 - if i.is_abnormal: + if record.is_abnormal: is_abnormal += 1 - if i.absenteeism_card: + if record.absenteeism_card: absenteeism_card += 1 if has_abnormal: url = (f'https://oa.thtzjt.com/web?login={employee.user_id.login}&oauth_uid={employee.wecom_userid}&cids=2&action={menu_id.action.id}&menu_id={menu_id.id}&model={self._name}'