Bladeren bron

fix:"优化MQTT心跳上传"

soobin 2 maanden geleden
bovenliggende
commit
0e2de00694

+ 1 - 1
src/main/java/com/szwl/constant/OperationType.java

@@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.annotation.IEnum;
  */
 public enum OperationType implements IEnum<String> {
 
-    HEART_BEAT("heart","心跳"),
+    HEART("heart","心跳"),
     UPDATE_TAX_STATUS("updateTaxStatus","修改税费开关"),
     UPDATE_TAX_RATE("updateTaxRate","修改税率"),
     RETURN_COIN("returnCoin","退币申请"),

+ 0 - 13
src/main/java/com/szwl/handle/ParametersMessageHandler.java

@@ -1,13 +0,0 @@
-package com.szwl.handle;
-
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-@Slf4j
-@Component
-public class ParametersMessageHandler implements MqttMessageHandler{
-    @Override
-    public void handle(String topic, String payload) {
-        log.info("topic:{},payload:{}", topic, payload);
-    }
-}

+ 31 - 32
src/main/java/com/szwl/handle/ResponseMessageHandler.java

@@ -45,42 +45,41 @@ public class ResponseMessageHandler implements MqttMessageHandler{
             // 1. 解析基础响应
             MessageLog messageLog = JSON.parseObject(payload, MessageLog.class);
             operationType = messageLog.getOperation();
-            if (StringUtils.isNotEmpty(operationType)) {
-                // 2. 确定是否为主动上报消息
-                Integer direction = messageLog.getDirection();
-                if (direction != null && direction == 2) {
-                    // 3. 主动上报消息,直接添加消息日志
-                    if(!operationType.equals(OperationType.HEART_BEAT.getCode())) {
-                        // 心跳不需要保存消息日志
-                        messageLog.setMsgId(System.currentTimeMillis() + RandomUtil.randomNumbers(10));
-                        messageLog.setCreatedAt(new Date());
-                        messageLogService.save(messageLog);
-                    }
-                } else {
-                    // 3. 响应消息,查询原始消息记录
-                    String msgId = messageLog.getMsgId();
-                    LambdaQueryWrapper<MessageLog> query = Wrappers.lambdaQuery();
-                    query.eq(MessageLog::getMsgId, msgId);
-                    MessageLog message = messageLogService.getOne(query);
-                    if (message != null) {
-                        operationType = message.getOperation();
-                        // 4. 更新消息日志
-                        message.setStatusCode(messageLog.getStatusCode());
-                        message.setResponseContent(messageLog.getResponseContent());
-                        message.setErrorInfo(messageLog.getErrorInfo());
-                        messageLogService.updateById(message);
-                    }
+            // 2. 确定是否为主动上报消息
+            Integer direction = messageLog.getDirection();
+            if (direction != null && direction == 2) {
+                // 3. 主动上报消息,直接添加消息日志
+                if(!operationType.equals(OperationType.HEART.getCode())) {
+                    // 心跳不需要保存消息日志
+                    messageLog.setMsgId(System.currentTimeMillis() + RandomUtil.randomNumbers(10));
+                    messageLog.setCreatedAt(new Date());
+                    messageLogService.save(messageLog);
                 }
-
-                // 5. 处理业务逻辑
-                ResponseProcessor processor = processorMap.get(operationType);
-                if (processor != null) {
-                    processor.process(messageLog);
-                } else {
-                    log.warn("未找到匹配的处理器,操作类型:{}", operationType);
+            } else {
+                // 3. 响应消息,查询原始消息记录
+                String msgId = messageLog.getMsgId();
+                LambdaQueryWrapper<MessageLog> query = Wrappers.lambdaQuery();
+                query.eq(MessageLog::getMsgId, msgId);
+                MessageLog message = messageLogService.getOne(query);
+                if (message != null) {
+                    operationType = message.getOperation();
+                    // 4. 更新消息日志
+                    message.setStatusCode(messageLog.getStatusCode());
+                    message.setResponseContent(messageLog.getResponseContent());
+                    message.setErrorInfo(messageLog.getErrorInfo());
+                    messageLogService.updateById(message);
                 }
             }
 
+            // 5. 处理业务逻辑
+            ResponseProcessor processor = processorMap.get(operationType);
+            if (processor != null) {
+                processor.process(messageLog);
+            } else {
+                log.warn("未找到匹配的处理器,操作类型:{}", operationType);
+            }
+
+
         } catch (Exception e) {
             log.error("消息处理失败 topic={}, payload={}", topic, payload, e);
         }

+ 3 - 1
src/main/java/com/szwl/handle/response/HeartProcessor.java

@@ -10,10 +10,12 @@ import com.szwl.model.entity.TEquipmentDesc;
 import com.szwl.model.jsonParm.HeartParam;
 import com.szwl.service.TEquipmentDescService;
 import com.szwl.service.TEquipmentService;
+import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
 import java.util.Date;
 
+@Component
 public class HeartProcessor implements ResponseProcessor {
 
     @Resource
@@ -76,6 +78,6 @@ public class HeartProcessor implements ResponseProcessor {
 
     @Override
     public String getSupportedOperationType() {
-        return OperationType.HEART_BEAT.getCode();
+        return OperationType.HEART.getCode();
     }
 }

+ 0 - 1
src/main/java/com/szwl/manager/MqttHandlerManager.java

@@ -21,7 +21,6 @@ public class MqttHandlerManager {
         handlerMap.put("connected", findHandler(handlers, ConnectedMessageHandler.class));
         handlerMap.put("disconnected", findHandler(handlers, DisconnectedMessageHandler.class));
         handlerMap.put("heart", findHandler(handlers, HeartMessageHandler.class));
-        handlerMap.put("parameters", findHandler(handlers, ParametersMessageHandler.class));
         handlerMap.put("response", findHandler(handlers, ResponseMessageHandler.class));
     }