Merge pull request !321 from 李鹏宇/dev
This commit is contained in:
李鹏宇
2024-10-22 14:06:22 +00:00
committed by Gitee
@@ -89,7 +89,7 @@ class HrAttendanceDetail(models.Model):
return user_list
@staticmethod
def _get_wx_attendance_data(wx_work_checkin_api, userid_limit):
def _get_wx_attendance_data(userid_limit):
"""
获取企业微信的打卡信息
:param wx_work_checkin_api: 企业微信api
@@ -110,8 +110,8 @@ class HrAttendanceDetail(models.Model):
"useridlist": userid_limit
}
# 重写一个类处理result获取想要的结果
response = wx_work_checkin_api.http_request_url(data)
return response
return data
@staticmethod
def _check_wx_attendance_data(response, userid_limit):
@@ -164,14 +164,14 @@ class HrAttendanceDetail(models.Model):
mediaids_list = data.get("mediaids", [])
if not mediaids_list:
return media_list
wx_work_media_api = self.env['wecom.api'].search([('function', '=', 'MEDIA_GET')], limit=1)
for media_id in mediaids_list:
data = {
"media_id": media_id
}
try:
response = wx_work_media_api.http_request_url(data)
if response.status_code == 200:
result, response = self.sudo().env["wecom.apps"].sync_media_get(data)
if result:
filename = response.headers['Content-Disposition'].split('; ')[2].replace('filename=', '').replace('"', '')
wx_work_auth = self.env['auth.oauth.provider'].search([('name', '=', 'Wechat Card')], limit=1)
wx_work_image = os.path.join(wx_work_auth.wx_work_image_path, str(filename))
@@ -285,13 +285,12 @@ class HrAttendanceDetail(models.Model):
"""
# 从用户列表里获取企业微信的用户
user_list = self._get_wx_attendance_user_list()
# 调用企业微信API核心模块
wx_work_checkin_api = self.env['wecom.api'].search([('function', '=', 'GET_CHECKIN_DATA')], limit=1)
# 企业微信获取打卡数据,要求用户分组100,分批获取打卡记录
for userid_limit in utils_list_page(user_list, 100):
# 获取企业微信的打卡信息
try:
response = self._get_wx_attendance_data(wx_work_checkin_api, userid_limit)
attendance_data = self._get_wx_attendance_data(userid_limit)
attendance_result, response = self.sudo().env["wecom.apps"].sync_checkin_data(attendance_data)
except Exception as e:
_logger.error('获取企业微信的打卡信息失败,异常:{0},用户列表{1},异常详情:{2}'.format(str(e), str(userid_limit), str(traceback.format_exc())))
continue