From 46ea49c9452002f2c01a10fd9550339a8aaa7cd1 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期三, 18 六月 2025 14:19:15 +0800
Subject: [PATCH] 1、新了解到,FBox可接多台套水肥机、气象站、墒情站,相应修改协议(主要是主题部分); 2、编写《水肥机、气象站、墒情站协议》(未完)。

---
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/MqttMsgParser.java |   39 ++++++++++++++++++++++++++++++---------
 1 files changed, 30 insertions(+), 9 deletions(-)

diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/MqttMsgParser.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/MqttMsgParser.java
index 15ec6b0..8389f8e 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/MqttMsgParser.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/MqttMsgParser.java
@@ -3,6 +3,7 @@
 import com.dy.common.mw.protocol.Command;
 import com.dy.common.mw.protocol4Mqtt.pSdV1.ProtocolConstantSdV1;
 import com.dy.common.mw.protocol4Mqtt.pSdV1.ProtocolParserSdV1;
+import com.dy.common.util.NumUtil;
 import org.eclipse.paho.client.mqttv3.MqttMessage;
 
 /**
@@ -11,25 +12,45 @@
  * @Description
  */
 public class MqttMsgParser {
-    public MqttSubMsg parseSubMsg(String topic, MqttMessage mqttMsg) throws Exception {
+    public static MqttTopic parseSubTopic(String topic) throws Exception {
         if(topic != null && topic.trim().length() != 0){
             String[] topicGrp = topic.split("/") ;
-            if(topicGrp.length != 4){
+            if(topicGrp.length != 5){
                 throw new Exception("鎺ユ敹鐨刴qtt娑堟伅涓婚涓嶅彲璇嗗埆") ;
             }else{
-                if(topicGrp[1].equals("sd1")){
-                    //灞变笢璁惧(鍗忚)锛屼笖鐗堟湰鍙蜂负1
-                    return new ProtocolParserSdV1().parseSubMsg(topicGrp[2], topic, mqttMsg);
-                }else{
-                    throw new Exception("鎺ユ敹鐨刴qtt娑堟伅涓婚涓崗璁紙鍘傚鍙婄増鏈級涓嶅彲璇嗗埆") ;
+                if(NumUtil.isPlusIntNumber(topicGrp[4])){
+                    throw new Exception("鎺ユ敹鐨刴qtt娑堟伅涓婚涓嶅彲璇嗗埆") ;
                 }
+                if(Integer.parseInt(topicGrp[4]) <= 0){
+                    throw new Exception("鎺ユ敹鐨刴qtt娑堟伅涓婚涓嶅彲璇嗗埆") ;
+                }
+                MqttTopic vo = new MqttTopic() ;
+                vo.orgTag = topicGrp[0] ;
+                vo.protocol = topicGrp[1] ;
+                vo.devId = topicGrp[2] ;
+                vo.type = topicGrp[3] ;
+                vo.no = Integer.parseInt(topicGrp[4]) ;
+                return vo ;
             }
         }else{
-            throw new Exception("鎺ユ敹鐨刴qtt娑堟伅涓婚涓虹┖") ;
+            throw new Exception("鎺ユ敹鐨刴qtt娑堟伅涓婚涓嶅悎娉�") ;
         }
     }
 
-    public MqttPubMsg createPubMsg(String orgTag, Command com) throws Exception {
+    public static String createPubTopic(MqttTopic tp) throws Exception {
+        return tp.orgTag + "/" + tp.protocol + "/" + tp.devId + "/" + tp.type + "/" + tp.no;
+    }
+
+    public static MqttSubMsg parseSubMsg(MqttTopic subTopic, MqttMessage mqttMsg, MqttCallback callback) throws Exception {
+        if(subTopic.protocol.equals(ProtocolConstantSdV1.protocolName + ProtocolConstantSdV1.protocolVer)){
+            //灞变笢璁惧(鍗忚)锛屼笖鐗堟湰鍙蜂负1
+            return new ProtocolParserSdV1().parseSubMsg(subTopic, mqttMsg, callback);
+        }else{
+            throw new Exception("鎺ユ敹鐨刴qtt娑堟伅涓婚涓崗璁紙鍘傚鍙婄増鏈級涓嶅彲璇嗗埆") ;
+        }
+    }
+
+    public static MqttPubMsg createPubMsg(String orgTag, Command com) throws Exception {
         if(com.protocol == null && com.protocol.trim().length() != 0){
             throw new Exception("鎺ユ敹鍒癕QTT鍛戒护锛屼絾鏈彁渚涘崗璁�") ;
         }

--
Gitblit v1.8.0