考勤机人脸

This commit is contained in:
李鹏宇
2026-06-03 10:53:44 +08:00
parent 4dd85fe4bd
commit 35d33de72a
+27 -22
View File
@@ -50,25 +50,26 @@ class AttendanceIotUser(models.Model):
if self._context.get('iot_sync'):
return res
for r in res:
# 创建下发信息
# 头像, 压缩的图片 data:image/jpeg;base64,
#
emp = r.employee_id
add_value = {
'cmd': 'addUser',
'user_id': f'{r.employee_id.mobile_phone}',
'name': r.employee_id.name
'user_id': f'{emp.mobile_phone}',
'name': emp.name,
'phone': emp.mobile_phone or '',
'id_card': emp.identification_id or '',
'effect_time': emp.entry_date.strftime('%Y-%m-%d') if emp.entry_date else '',
'id_valid': r.id_valid.strftime('%Y-%m-%d') if r.id_valid else '',
}
if r.employee_id.compress_image:
raw = r.employee_id.compress_image
# compress_image 可能是原图 bytes,也可能是 base64 bytes,需要兼容
# face_template 单独放最后
if emp.compress_image:
raw = emp.compress_image
try:
b64 = raw.decode('ascii') # 已经是 base64 文本
b64 = raw.decode('ascii')
except UnicodeDecodeError:
b64 = base64.b64encode(raw).decode('ascii') # 原图 bytes,编码
# 设备要求:data:image/jpeg;base64, + base64 再 URL 编码
b64 = base64.b64encode(raw).decode('ascii')
face_template = urllib.parse.quote(
f"data:image/jpeg;base64,{b64}", encoding='utf-8')
add_value.update({'face_template': face_template})
add_value['face_template'] = face_template
self.env['iot.message'].create([{
'name': '增加用户',
'topic': f'iot/device/{r.attendance_iot_id.name}',
@@ -82,24 +83,28 @@ class AttendanceIotUser(models.Model):
if self._context.get('iot_sync'):
return
for record in self:
# 下发信息
emp = record.employee_id
# 下发信息 - 完整传参
update_value = {
'cmd': 'editUser',
'edit_mode': 1,
'user_id': f'{record.employee_id.mobile_phone}',
'name': record.employee_id.name
'user_id': f'{emp.mobile_phone}',
'name': emp.name,
'phone': emp.mobile_phone or '',
'id_card': emp.identification_id or '',
'effect_time': emp.entry_date.strftime('%Y-%m-%d') if emp.entry_date else '',
'id_valid': record.id_valid.strftime('%Y-%m-%d') if record.id_valid else '',
}
if record.employee_id.compress_image:
raw = record.employee_id.compress_image
# compress_image 可能是原图 bytes,也可能是 base64 bytes,需要兼容
# face_template 单独放最后
if emp.compress_image:
raw = emp.compress_image
try:
b64 = raw.decode('ascii') # 已经是 base64 文本
b64 = raw.decode('ascii')
except UnicodeDecodeError:
b64 = base64.b64encode(raw).decode('ascii') # 原图 bytes,编码
# 设备要求:data:image/jpeg;base64, + base64 再 URL 编码
b64 = base64.b64encode(raw).decode('ascii')
face_template = urllib.parse.quote(
f"data:image/jpeg;base64,{b64}", encoding='utf-8')
update_value.update({'face_template': face_template})
update_value['face_template'] = face_template
_logger.info(f"action_update_iot_info--{update_value}")
self.env['iot.message'].create([{
'name': '修改用户信息',