liwei19941102 2 years ago
parent
commit
816f478713

+ 12 - 2
ruoyi-system/src/main/java/com/ruoyi/data/service/impl/MqttServiceImpl.java

@@ -7,6 +7,7 @@ import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.common.core.domain.entity.SysDictData;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.mqtt.MQTTConnect;
 import com.ruoyi.data.domain.*;
@@ -18,6 +19,7 @@ import com.ruoyi.data.domain.vo.TblSensorRecordVo;
 import com.ruoyi.data.mapper.*;
 import com.ruoyi.data.service.MqttService;
 import com.ruoyi.data.service.WebsocketService;
+import com.ruoyi.system.service.ISysDictTypeService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
@@ -49,6 +51,8 @@ public class MqttServiceImpl implements MqttService {
 
     private final TblSensorRecordMapper tblSensorRecordMapper;
 
+    private final ISysDictTypeService sysDictTypeService;
+
     private final WebsocketService websocketService;
 
     @Value("${mqtt.url}")
@@ -109,9 +113,15 @@ public class MqttServiceImpl implements MqttService {
         websocketService.sendMessageAll(mqttStr);
 //      tblSensorRecordMapper.insert(tblSensorRecord);
         String protocolType = "";
+        List<SysDictData> sysDictTypeList = sysDictTypeService.selectDictDataByType("protocal_type");
+        for(SysDictData sysDictData:sysDictTypeList){
+                 if(Long.valueOf(sysDictData.getDictValue()).longValue() == tblSensor.getProtocalType().longValue()){
+                     protocolType = sysDictData.getDictLabel();
+                 }
+        }
         for(MqttObj obj:mqttObjList){
                if(obj.getStatus() == 1) {
-                   JSONObject topicObj = obj.getTopicQos("tcp");
+                   JSONObject topicObj = obj.getTopicQos(protocolType);
                    MQTTConnect mqttConnect = new MQTTConnect();
                    try {
                        mqttConnect.createMqttClient(obj.getServerAddress(), obj.getUuid(), obj.getAccount(), obj.getPassword(), new Callback());
@@ -119,7 +129,7 @@ public class MqttServiceImpl implements MqttService {
                            String topic = topicObj.get("name").toString().replace("#", "");
                            mqttConnect.pub(topic, mqttMsg.toString(), Integer.valueOf((String) topicObj.get("qos")));
                        } else {
-                           String topic = "sensor/modbustcp/" + deviceId;
+                           String topic = "sensor/"+protocolType+"/" + sensorId;
                            mqttConnect.pub(topic, mqttMsg.toString(), 0);
                        }
                    } catch (Exception e) {