diff --git a/attendance_iot/models/iot_message.py b/attendance_iot/models/iot_message.py index ab211adaf..d65d8abe8 100644 --- a/attendance_iot/models/iot_message.py +++ b/attendance_iot/models/iot_message.py @@ -44,13 +44,26 @@ class IotMessage(models.Model): default='draft') # 响应信息 res_data = fields.Text(string='发送后的响应信息') + face_data = fields.Text(string='照片数据') @api.model_create_multi def create(self, vals_list): # 保留全部数据(含 face_template),MQTT 下发时需要原样发给设备 records = super().create(vals_list) - # 创建设备日志时同步更新关联设备的最后更新时间 + # 从 message_data 提取 face_template 存入单独字段,并在 message_data 中移除 for rec in records: + if rec.message_data: + try: + data = json.loads(rec.message_data) + if isinstance(data, dict) and 'face_template' in data: + face_tpl = data.pop('face_template') + rec.write({ + 'face_data': face_tpl, + 'message_data': json.dumps(data, ensure_ascii=False), + }) + except (json.JSONDecodeError, TypeError): + pass + # 创建设备日志时同步更新关联设备的最后更新时间 if rec.device_sn: devices = self.env['attendance.iot'].sudo().search([('name', '=', rec.device_sn)], limit=1) if devices: @@ -119,10 +132,20 @@ class IotMessage(models.Model): result = [] for record in records: + msg_data = record.message_data + # 如果有独立存的面部照片,重新拼回去下发 + if record.face_data: + try: + data = json.loads(msg_data) if msg_data else {} + if isinstance(data, dict): + data['face_template'] = record.face_data + msg_data = json.dumps(data, ensure_ascii=False) + except (json.JSONDecodeError, TypeError): + pass result.append({ 'id': record.id, 'topic': record.topic, - 'message_data': record.message_data + 'message_data': msg_data }) records.write({'state': 'waiting'}) return result diff --git a/attendance_iot/views/iot_message.xml b/attendance_iot/views/iot_message.xml index cfbb75a52..e90ffdf66 100644 --- a/attendance_iot/views/iot_message.xml +++ b/attendance_iot/views/iot_message.xml @@ -7,7 +7,7 @@ iot.message.tree iot.message - +
@@ -15,9 +15,9 @@ - + - +
@@ -35,17 +35,44 @@ - - Iot 消息 - ir.actions.act_window - iot.message - tree,form - -

- There is no examples click here to add new Iot 消息. -

-
-
+ + Iot 消息 + ir.actions.act_window + iot.message + tree,form + +

+ There is no examples click here to add new Iot 消息. +

+
+
+ + + iot.message.form + iot.message + +
+ + + + + + + + + + + + + + + + + + +
+
+
\ No newline at end of file