Merge pull request !3579 from 李鹏宇/dev
This commit is contained in:
李鹏宇
2025-06-30 01:21:39 +00:00
committed by Gitee
2 changed files with 2 additions and 68 deletions
+1 -5
View File
@@ -23,9 +23,5 @@ class AttendanceIot(models.Model):
'type': 'ir.actions.act_window',
'res_model': 'attendance.iot.user',
'view_mode': 'tree',
'domain': [
('employee_id', 'in', self.employee_ids.ids),
('attendance_iot_id', '=', self.id),
],
'context': {'group_by': ['company_id', 'attendance_iot_id']}
'domain': [('attendance_iot_id', '=', self.id)],
}
@@ -25,70 +25,8 @@ class AttendanceIotManager(models.Model):
"target": "new",
}
@api.model_create_multi
def create(self, vals_list):
pass
# for vals in vals_list:
# if vals['data_selection'] == 'mqtt':
# self.mqtt_request(self, vals['attendance_number'], 'addUser')
return super().create(vals_list)
def mqtt_request(self, attendance_number, data):
reuqired_params = self.get_required_params(data)
if any(reuqired_param not in data.keys() for reuqired_param in reuqired_params):
raise UserError(f'缺少必填参数,请确认: {",".join(reuqired_params)}')
mqtt_config = self.get_mqtt_config()
self.start_mqtt(mqtt_config)
self.publish_message(mqtt_config, f'iot/device/{attendance_number}', data)
def get_required_params(self, cmd):
params_dict = {
'addUser': ['cmd', 'user_id', 'name', 'id_valid'],
'editUser': ['cmd', 'user_id', 'edit_mode'],
'delUser': ['cmd'],
'delMultiUser': ['cmd', 'user_ids'],
'setPasswordVerify': ['cmd', 'value'],
'setOpenDoorPassword': ['cmd', 'value'],
}
if cmd not in params_dict.keys():
raise UserError(f'指令不存在,请确认,目前支持: {",".join(params_dict.keys())}')
else:
return params_dict[cmd]
@api.model
def get_mqtt_config(self):
mqtt_config = self.search([], limit=1)
return mqtt_config
@api.model
def start_mqtt(self, mqtt_config):
def on_connect(client, userdata, flags, rc):
if rc == 0:
_logger.info("Connected to MQTT Broker")
else:
_logger.info(f"Failed to connect, return code {rc}", )
def on_message(client, userdata, message):
_logger.info(f"Received message: {str(message.payload.decode('utf-8'))}", )
client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION1, "OdooMQTT")
client.on_connect = on_connect
client.on_message = on_message
client.connect(mqtt_config.broker, mqtt_config.port, 60)
client.loop_start()
@api.model
def publish_message(self, mqtt_config, topic, message):
client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION1, "OdooMQTT")
client.connect(mqtt_config.broker, mqtt_config.port, 60)
res = client.publish(topic, message)
if res.get('code') == 0:
_logger.info("操作成功")
else:
_logger.info(f"操作失败,返回错误码: {res.get('code')}")
client.disconnect()
def employee_message(self):
domain = [('attendance_iot_id', '=', self.attendance_iot_id.id)]
domain = [('attendance_iot_id', '=', self.name)]
return {
'name': '员工列表',
'type': 'ir.actions.act_window',