考勤机人脸
This commit is contained in:
@@ -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': '修改用户信息',
|
||||
|
||||
Reference in New Issue
Block a user