Browse Source

第二版,安装bug

suntianwu 3 years ago
parent
commit
e86ce21f4f

+ 14 - 5
src/main/java/com/care/mqtt/service/MqttMsgService.java

@@ -82,13 +82,25 @@ public class MqttMsgService {
     private void handleConfigureRoomInfoResultMessage(String topic, String mqttMessageStr) {
     private void handleConfigureRoomInfoResultMessage(String topic, String mqttMessageStr) {
         Map map = JSON.parseObject(mqttMessageStr);
         Map map = JSON.parseObject(mqttMessageStr);
         String type = (String) map.get("type");
         String type = (String) map.get("type");
-
         if(StringUtils.isEmpty(type)) {
         if(StringUtils.isEmpty(type)) {
             logger.error("不是正确格式的消息");
             logger.error("不是正确格式的消息");
             return;
             return;
         }
         }
+        Map msg = (Map) map.get("msg");
+        if(msg == null) {
+            logger.error("不是正确格式的消息");
+            return;
+        }
+        String ack = (String)msg.get("ack");
+        if(StringUtils.isEmpty(ack)) {
+            logger.error("不是激活返回消息");
+            return;
+        }
+
+        logger.info("是激活返回消息: ack == " + ack);
+
         QueryWrapper<CareDevice> queryWrapper = new QueryWrapper<>();
         QueryWrapper<CareDevice> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(CareDevice::getTopic,topic.replaceAll("event","control"));
+        queryWrapper.lambda().eq(CareDevice::getTopic,topic.replaceAll("control","event"));
         CareDevice careDevice = careDeviceService.getOne(queryWrapper);
         CareDevice careDevice = careDeviceService.getOne(queryWrapper);
         if(careDevice == null) {
         if(careDevice == null) {
             logger.error("数据库中没找到对应设备");
             logger.error("数据库中没找到对应设备");
@@ -96,9 +108,6 @@ public class MqttMsgService {
         }
         }
         String devCode = careDevice.getDevCode();
         String devCode = careDevice.getDevCode();
 
 
-        Map msg = (Map) map.get("msg");
-        String ack = String.valueOf(msg.get("ack"));
-
         if("CfgAreaAck".equals(type)) { //房间信息
         if("CfgAreaAck".equals(type)) { //房间信息
             UpdateWrapper<CareRoom> updateWrapper = new UpdateWrapper<>();
             UpdateWrapper<CareRoom> updateWrapper = new UpdateWrapper<>();
             updateWrapper.lambda().eq(CareRoom::getRoomId,devCode).set(CareRoom::getAck,ack);
             updateWrapper.lambda().eq(CareRoom::getRoomId,devCode).set(CareRoom::getAck,ack);

+ 13 - 5
src/main/java/com/care/mqtt/service/MqttPublishService.java

@@ -1,9 +1,11 @@
 package com.care.mqtt.service;
 package com.care.mqtt.service;
 
 
 
 
+import cn.hutool.core.bean.BeanUtil;
 import com.care.mqtt.tool.MqttDataConnector;
 import com.care.mqtt.tool.MqttDataConnector;
 
 
 import com.care.common.entity.CareDevice;
 import com.care.common.entity.CareDevice;
+import com.care.mqtt.tool.MqttDataConnectorPool;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 import org.springframework.util.StringUtils;
 
 
@@ -26,18 +28,24 @@ public class MqttPublishService {
     public boolean publish(CareDevice careDevice,String data) {
     public boolean publish(CareDevice careDevice,String data) {
         try {
         try {
 
 
-            String topic = careDevice.getTopic();
-            String cliendId = careDevice.getClientId();
+            CareDevice careDevicePublish = new CareDevice();
+            BeanUtil.copyProperties(careDevice,careDevicePublish);
+
+            String topic = careDevicePublish.getTopic();
+            String cliendId = careDevicePublish.getClientId();
             if (StringUtils.isEmpty(topic) || StringUtils.isEmpty(cliendId)) {
             if (StringUtils.isEmpty(topic) || StringUtils.isEmpty(cliendId)) {
                 return false;
                 return false;
             }
             }
 
 
             String publishTopic = topic.replace("event","control");
             String publishTopic = topic.replace("event","control");
             String publishCliendId = cliendId + "_publish";
             String publishCliendId = cliendId + "_publish";
-            careDevice.setTopic(publishTopic);
-            careDevice.setTopic(publishCliendId);
 
 
-            MqttDataConnector mqttDataConnector = mqttConnectorPoolService.addOne(careDevice);
+            MqttDataConnector mqttDataConnector = MqttDataConnectorPool.getMqttDataConnectorMap().get(publishCliendId);
+            if (mqttDataConnector == null) {
+                careDevicePublish.setTopic(publishTopic);
+                careDevicePublish.setClientId(publishCliendId);
+                mqttDataConnector = mqttConnectorPoolService.addOne(careDevicePublish);
+            }
 
 
             mqttDataConnector.publish(publishTopic, data);
             mqttDataConnector.publish(publishTopic, data);