Merge branch 'dev' into dev_zhou

This commit is contained in:
zhou
2025-07-25 18:33:32 +08:00
2 changed files with 15 additions and 12 deletions
+10 -7
View File
@@ -66,6 +66,13 @@ class HrAttendance(models.Model):
'domain': [('id', '=', self.workflow_id.id)],
}
def compute_attendance_ids(self):
attendance_ids = self.env["hr.attendance"].browse(self._context.get('active_ids', self._context.get('active_id')))
for att in attendance_ids:
now_time = fields.Datetime.to_datetime(att.current_data) + timedelta(hours=8, days=1)
start_time = now_time - timedelta(days=2)
self.env["hr.attendance.detail"].get_hr_attendance_time(att.employee_id, now_time, start_time)
@api.depends('current_data')
def _compute_month_status(self):
today = fields.Date.today()
@@ -135,15 +142,11 @@ class HrAttendance(models.Model):
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#id={self.id}&cids=2&action={menu_id.action.id}&model=hr.attendance&view_type=list&menu_id={menu_id.id}'
self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa',
user_id=emp.wecom_userid,
title="打卡异常提醒",
description="您本月有打卡异常".format(
url=url, btntxt="详细信息"))
self.sudo().env["wecom.apps"].sync_send_message_textcard(category='att', user_id=emp.wecom_userid,
title="打卡异常提醒", description="您本月有打卡异常",
url=url, btntxt="详细信息")
@api.depends('employee_id', 'check_in', 'check_out')
def _compute_display_name(self):
@@ -86,7 +86,9 @@ class HrAttendanceDetail(models.Model):
def create(self, vals_list):
res = super(HrAttendanceDetail, self).create(vals_list)
employee_id = self.env['hr.employee'].search([('id', '=', vals_list[0]['employee_id'])])
self.get_hr_attendance_time(employee_id)
now_time = datetime.now() + timedelta(hours=8, days=1)
start_time = now_time - timedelta(days=1)
self.get_hr_attendance_time(employee_id, now_time, start_time)
return res
#
# def write(self, vals):
@@ -256,16 +258,13 @@ class HrAttendanceDetail(models.Model):
_logger.error('检查保存之前的数据分析出想要的数据失败,异常:{0},数据信息{1},异常详情:{2}'.format(str(e), str(data),
str(traceback.format_exc())))
def get_hr_attendance_time(self, employee_id):
def get_hr_attendance_time(self, employee_id, now_time, start_time):
"""
获取企业微信打卡数据的核心逻辑
:return: 处理结果
"""
# 从用户列表里获取企业微信的用户
# user_list = self._get_wx_attendance_user_list()
now_time = datetime.now() + timedelta(hours=8, days=1)
start_time = now_time - timedelta(days=1)
# 企业微信获取打卡数据,要求用户分组100,分批获取打卡记录
# for userid_limit in self.utils_list_page(user_list, 100):
# # 获取企业微信的打卡信息
@@ -302,6 +301,7 @@ class HrAttendanceDetail(models.Model):
# employee_list = [emp.name for emp in employee_ids]
# user_obj = self.sudo().env['res.users'].search([('name', 'not in', ['Administrator', '李鹏宇'] + employee_list),
# ('employee_id.contract_id', '!=', False)]).sorted('id')
user_obj = self.sudo().env['res.users'].search([('id', '=', employee_id.user_id.id)])
# 暂时先用for循环,如果后期加大频率,需改成并发
total_users = len(user_obj)