From 431bbfaddba9f39496359bc0c1e2dcaf2bb6fca2 Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期一, 23 六月 2025 15:09:04 +0800 Subject: [PATCH] 采用模拟软件MQTTX进行模拟测试,发现并修改MQTT相关水肥机上行数据与下行命令逻辑bug. --- pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/TkMqttData.java | 4 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/paramSet/CdCtrl.java | 33 +- pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/inject/CdCtrl.java | 37 ++-- pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/mqtt/DevStatusDealer.java | 10 + pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/fault/CdCtrl.java | 32 +- pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/ProtocolConstantSdV1.java | 1 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.properties | 6 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/common/Com4MqttCtrl.java | 13 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/upVos/ManureVo.java | 35 ++- /dev/null | 79 -------- pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/irr/CdCtrl.java | 32 +- pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Command.java | 7 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/paramSet/CdDto.java | 9 + pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/CommandResultCtrl.java | 4 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/MqttSubMsg.java | 61 ++++++ pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/stir/CdDto.java | 7 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/pSdV1/TkFindPSdV1.java | 4 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/web/com/CommandCtrl.java | 8 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/MqttPubMsg.java | 18 + pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/MqttResultCtrl.java | 40 ++++ pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/ProtocolParserSdV1.java | 36 +-- pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/stir/CdCtrl.java | 34 +- 22 files changed, 284 insertions(+), 226 deletions(-) diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Command.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Command.java index 2399abe..f7b490a 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Command.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Command.java @@ -76,7 +76,12 @@ s += (protocol == null ? "" : ("鍗忚=" + protocol + "\n")); s += (protocolVersion == null ? "" : ("鍗忚鐗堟湰鍙�=" + protocolVersion + "\n")); s += (rtuAddr == null ? "" : ("Rtu鍦板潃=" + rtuAddr + "\n")); - s += "鍛戒护绫诲瀷=" + (type.equals(CommandType.innerCommand)?"鍐呴儴鍛戒护":(type.equals(CommandType.outerCommand)?"RTU鍛戒护":"閫忎紶鍛戒护")) + "\n" ; + s += "鍛戒护绫诲瀷=" + ( + type.equals(CommandType.innerCommand)?"鍐呴儴鍛戒护":( + type.equals(CommandType.outerCommand)?"RTU鍛戒护":( + type.equals(CommandType.mqttCommand)?"MQTT鍛戒护":( + type.equals(CommandType.outerTransCommand)?"閫忎紶鍛戒护": + "")))) + "\n" ; s += (code == null ? "" : ("鍔熻兘鐮�=" + code + "\n")) ; s += (rtuResultSendWebUrl == null ? "" : ("鍥炶皟缃戝潃=" + rtuResultSendWebUrl + "\n")); if(param != null){ diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/MqttPubMsg.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/MqttPubMsg.java index eba4ecf..2c1c6f1 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/MqttPubMsg.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/MqttPubMsg.java @@ -1,12 +1,18 @@ package com.dy.common.mw.protocol4Mqtt; +import lombok.Data; +import lombok.EqualsAndHashCode; + /** * @Author: liurunyu * @Date: 2025/6/5 11:44 * @Description */ -public abstract class MqttPubMsg { +@Data +public class MqttPubMsg { public String commandId ;//鍛戒护ID + + public String cd ;//鍔熻兘鐮� public String deviceId ;//璁惧ID @@ -18,6 +24,14 @@ public boolean isCacheForOffLine ;//涓嬭鍛戒护鎺у埗锛屾秷鎭腑闂翠欢涓嶅湪绾挎槸鍚︾紦瀛樺懡浠� public boolean hasResponse ;//涓嬭鍛戒护鎺у埗锛屽懡浠ゆ槸鍚︽湁搴旂瓟 - public abstract boolean valid(); + public boolean valid(){ + if (topic == null || topic.isEmpty()) { + return false; + } + if (msg == null || msg.isEmpty()) { + return false; + } + return true; + } } diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/MqttSubMsg.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/MqttSubMsg.java index 8226de7..7577e67 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/MqttSubMsg.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/MqttSubMsg.java @@ -1,14 +1,16 @@ package com.dy.common.mw.protocol4Mqtt; +import com.dy.common.mw.protocol4Mqtt.pSdV1.upVos.ManureVo; import com.dy.common.util.Callback; +import lombok.Data; /** * @Author: liurunyu * @Date: 2025/6/5 11:44 * @Description */ - -public abstract class MqttSubMsg { +@Data +public class MqttSubMsg { public String commandId ;//鍛戒护ID public String mqttResultSendWebUrl ;//Mtt杩斿洖鍛戒护缁撴灉 鍙戝悜鐩殑鍦皐eb URL @@ -18,9 +20,58 @@ public MqttTopic topic ;//娑堟伅涓婚 public String metaData;//MQTT鎺ㄩ�佹潵鐨勫厓鏁版嵁 - public abstract boolean valid(); + public Vo4Up vo4Up;//璁㈤槄鐨勬秷鎭暟鎹�煎璞� + public MqttSubMsg() { + } + public MqttSubMsg(MqttTopic subTopic, String msg) { + this.deviceId = subTopic.devId ; + this.protocol = subTopic.protocol ; + this.topic = subTopic ; + this.metaData = msg ; + } - public abstract boolean subMsgMatchPubMsg(MqttPubMsg pubMsg); + public boolean valid() { + if (topic == null || topic.isEmpty()) { + return false; + } + if (metaData == null || metaData.isEmpty()) { + return false; + } + return true; + } - public abstract void action(Callback callback); + public boolean subMsgMatchPubMsg(MqttPubMsg pubMsg){ + if(this.vo4Up != null && this.vo4Up instanceof ManureVo){ + //鍙涓婃姤鐨勬槸鐘舵�佹暟鎹紝璇存槑璁惧鍝嶅簲浜嗗懡浠� + return true ; + } + return false ; + } + + public void action(Callback callback){ + callback.call(this) ; + } + + + public String toString(){ + StringBuilder sb = new StringBuilder(); + if(commandId != null){ + sb.append("commandId:") + .append(commandId) + .append("\n") ; + } + sb.append("涓婚:") + .append(topic.longName()) + .append("\n") ; + if(vo4Up != null){ + sb.append("鏁版嵁:") + .append(vo4Up.toString()) + .append("\n") ; + }else{ + sb.append("鍏冩暟鎹�:") + .append(metaData) + .append("\n") ; + } + return sb.toString() ; + } } diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/MqttPubMsgSdV1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/MqttPubMsgSdV1.java deleted file mode 100644 index 6193843..0000000 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/MqttPubMsgSdV1.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.dy.common.mw.protocol4Mqtt.pSdV1; - -import com.dy.common.mw.protocol4Mqtt.MqttPubMsg; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * @Author: liurunyu - * @Date: 2025/6/4 18:00 - * @Description 涓嬪彂鐨勫彂甯冩秷鎭紙鍗充笅琛屽懡浠わ級 - */ -@Data -@EqualsAndHashCode(callSuper=false) -public class MqttPubMsgSdV1 extends MqttPubMsg { - - public String cd ;//鍔熻兘鐮� - - @Override - public boolean valid() { - if (topic == null || topic.isEmpty()) { - return false; - } - if (msg == null || msg.isEmpty()) { - return false; - } - return true; - } -} diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/MqttSubMsgSdV1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/MqttSubMsgSdV1.java deleted file mode 100644 index cfccbef..0000000 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/MqttSubMsgSdV1.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.dy.common.mw.protocol4Mqtt.pSdV1; - -import com.dy.common.mw.protocol4Mqtt.MqttPubMsg; -import com.dy.common.mw.protocol4Mqtt.MqttSubMsg; -import com.dy.common.mw.protocol4Mqtt.MqttTopic; -import com.dy.common.mw.protocol4Mqtt.Vo4Up; -import com.dy.common.mw.protocol4Mqtt.pSdV1.upVos.ManureVo; -import com.dy.common.util.Callback; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * @Author: liurunyu - * @Date: 2025/6/4 16:58 - * @Description 鏀跺埌鐨勮闃呮秷鎭� - */ -@Data -@EqualsAndHashCode(callSuper=false) -public class MqttSubMsgSdV1 extends MqttSubMsg { - public Vo4Up vo4Up;//璁㈤槄鐨勬秷鎭暟鎹�煎璞� - - public MqttSubMsgSdV1(){} - - public MqttSubMsgSdV1(MqttTopic subTopic, String msg) { - this.deviceId = subTopic.devId ; - this.protocol = subTopic.protocol ; - this.topic = subTopic ; - this.metaData = msg ; - } - public String toString(){ - StringBuilder sb = new StringBuilder(); - if(commandId != null){ - sb.append("commandId:") - .append(commandId) - .append("\n") ; - } - sb.append("涓婚:") - .append(topic.longName()) - .append("\n") ; - if(vo4Up != null){ - sb.append("鏁版嵁:") - .append(vo4Up.toString()) - .append("\n") ; - }else{ - sb.append("鍏冩暟鎹�:") - .append(metaData) - .append("\n") ; - } - return sb.toString() ; - } - - public boolean subMsgMatchPubMsg(MqttPubMsg pubMsg){ - if (pubMsg instanceof MqttPubMsgSdV1) { - //MqttPubMsgSdV1 pubMsgSdV1 = (MqttPubMsgSdV1) pubMsg; - if(this.vo4Up != null && this.vo4Up instanceof ManureVo){ - //鍙涓婃姤鐨勬槸鐘舵�佹暟鎹紝璇存槑璁惧鍝嶅簲浜嗗懡浠� - return true ; - } - } - return false ; - } - - @Override - public boolean valid() { - if (topic == null || topic.isEmpty()) { - return false; - } - if (metaData == null || metaData.isEmpty()) { - return false; - } - return true; - } - - @Override - public void action(Callback callback){ - callback.call(this) ; - } - -} diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/ProtocolConstantSdV1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/ProtocolConstantSdV1.java index 8961281..df832f1 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/ProtocolConstantSdV1.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/ProtocolConstantSdV1.java @@ -13,7 +13,6 @@ public static final String SubTopicWeather = "weather" ;//姘旇薄 public static final String SubTopicSoil = "soil" ;//鍦熷¥澧掓儏 public static final String SubTopicManure = "manure" ;//姘磋偉 - public static final String SubTopicState = "state" ;//鐘舵�� //鍙戝竷鐨勪富棰� public static final String PubTopicFault = "ctrlFault" ;//鏁呴殰瑙i櫎 diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/ProtocolParserSdV1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/ProtocolParserSdV1.java index acfbe14..7ba7e80 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/ProtocolParserSdV1.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/ProtocolParserSdV1.java @@ -3,9 +3,7 @@ import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.dy.common.mw.protocol.Command; -import com.dy.common.mw.protocol4Mqtt.MqttCallback; -import com.dy.common.mw.protocol4Mqtt.MqttTopic; -import com.dy.common.mw.protocol4Mqtt.Vo4Up; +import com.dy.common.mw.protocol4Mqtt.*; import com.dy.common.mw.protocol4Mqtt.pSdV1.comParam.ComCtrlVo; import com.dy.common.mw.protocol4Mqtt.pSdV1.comParam.ComSetParamVo; import com.dy.common.mw.protocol4Mqtt.pSdV1.downVos.FaultClearVo; @@ -22,12 +20,12 @@ * @Description */ public class ProtocolParserSdV1 { - public MqttSubMsgSdV1 parseSubMsg(MqttTopic subTopic, MqttMessage mqttMsg, MqttCallback callback) throws Exception { + public MqttSubMsg parseSubMsg(MqttTopic subTopic, MqttMessage mqttMsg, MqttCallback callback) throws Exception { String strTxt = new String(mqttMsg.getPayload(), "UTF-8"); if(!JSON.isValid(strTxt)){ throw new Exception("鎺ユ敹鍒癕QTT娑堟伅锛屽崗璁�" + subTopic.protocol + "锛岃澶嘔D" + subTopic.devId + "锛屼富棰�" + subTopic.longName() + "娑堟伅鏍煎紡闈瀓son鏁版嵁(" + strTxt + ")") ; } - MqttSubMsgSdV1 msg = new MqttSubMsgSdV1(subTopic, strTxt); + MqttSubMsg msg = new MqttSubMsg(subTopic, strTxt); Vo4Up vo ; DevRunInfo stInfo = null ; switch (subTopic.type) { @@ -82,8 +80,8 @@ return msg; } - public MqttPubMsgSdV1 createPubMsg(String orgTag, Command com) throws Exception { - MqttPubMsgSdV1 msg ; + public MqttPubMsg createPubMsg(String orgTag, Command com) throws Exception { + MqttPubMsg msg ; switch (com.code) { case CodeSdV1.cd_Fault -> { //鏁呴殰瑙i櫎鍛戒护 @@ -136,14 +134,14 @@ throw new Exception("鎺ユ敹鍒癕QTT鍛戒护锛屽崗璁�" + com.protocol + "鐗堟湰" + com.protocolVersion + "鍔熻兘鐮�" + com.code + "鍛戒护缁撴灉鍥炴敹URL涓虹┖") ; } } - private MqttPubMsgSdV1 createPubMsgOfFault(String orgTag, Command com) throws Exception { + private MqttPubMsg createPubMsgOfFault(String orgTag, Command com) throws Exception { JSONObject obj = (JSONObject) com.param; String json = obj.toJSONString(); ComCtrlVo cvo = JSON.parseObject(json, ComCtrlVo.class); if(cvo == null){ throw new Exception("json杞珻omCtrlVo涓簄ull") ; } - MqttPubMsgSdV1 msg = new MqttPubMsgSdV1() ; + MqttPubMsg msg = new MqttPubMsg() ; this.setPubMsgBase(com, msg); msg.isCacheForOffLine = false ; msg.hasResponse = true ; @@ -152,14 +150,14 @@ msg.msg = JSON.toJSONString(new FaultClearVo(cvo.startTrueStopFalse ?(byte)1:0)) ; return msg ; } - private MqttPubMsgSdV1 createPubMsgOfStir(String orgTag, Command com) throws Exception { + private MqttPubMsg createPubMsgOfStir(String orgTag, Command com) throws Exception { JSONObject obj = (JSONObject) com.param; String json = obj.toJSONString(); ComCtrlVo cvo = JSON.parseObject(json, ComCtrlVo.class); if(cvo == null){ throw new Exception("json杞珻omCtrlVo涓簄ull") ; } - MqttPubMsgSdV1 msg = new MqttPubMsgSdV1() ; + MqttPubMsg msg = new MqttPubMsg() ; this.setPubMsgBase(com, msg); msg.isCacheForOffLine = false ; msg.hasResponse = true ; @@ -168,14 +166,14 @@ msg.msg = JSON.toJSONString(new StirStartVo(cvo.startTrueStopFalse ?(byte)1:0)) ; return msg ; } - private MqttPubMsgSdV1 createPubMsgOfInject(String orgTag, Command com) throws Exception { + private MqttPubMsg createPubMsgOfInject(String orgTag, Command com) throws Exception { JSONObject obj = (JSONObject) com.param; String json = obj.toJSONString(); ComCtrlVo cvo = JSON.parseObject(json, ComCtrlVo.class); if(cvo == null){ throw new Exception("json杞珻omCtrlVo涓簄ull") ; } - MqttPubMsgSdV1 msg = new MqttPubMsgSdV1() ; + MqttPubMsg msg = new MqttPubMsg() ; this.setPubMsgBase(com, msg); msg.isCacheForOffLine = false ; msg.hasResponse = true ; @@ -184,14 +182,14 @@ msg.msg = JSON.toJSONString(new InjectStartVo(cvo.startTrueStopFalse ?(byte)1:0)) ; return msg ; } - private MqttPubMsgSdV1 createPubMsgOfIrr(String orgTag, Command com) throws Exception { + private MqttPubMsg createPubMsgOfIrr(String orgTag, Command com) throws Exception { JSONObject obj = (JSONObject) com.param; String json = obj.toJSONString(); ComCtrlVo cvo = JSON.parseObject(json, ComCtrlVo.class); if(cvo == null){ throw new Exception("json杞珻omCtrlVo涓簄ull") ; } - MqttPubMsgSdV1 msg = new MqttPubMsgSdV1() ; + MqttPubMsg msg = new MqttPubMsg() ; this.setPubMsgBase(com, msg); msg.isCacheForOffLine = false ; msg.hasResponse = true ; @@ -201,24 +199,24 @@ return msg ; } - private MqttPubMsgSdV1 createPubMsgOfParam(String orgTag, Command com) throws Exception { + private MqttPubMsg createPubMsgOfParam(String orgTag, Command com) throws Exception { JSONObject obj = (JSONObject) com.param; String json = obj.toJSONString(); ComSetParamVo cvo = JSON.parseObject(json, ComSetParamVo.class); if(cvo == null){ throw new Exception("json杞珻omSetParamVo涓簄ull") ; } - MqttPubMsgSdV1 msg = new MqttPubMsgSdV1() ; + MqttPubMsg msg = new MqttPubMsg() ; this.setPubMsgBase(com, msg); msg.isCacheForOffLine = false ; - msg.hasResponse = false ; + msg.hasResponse = true ; msg.cd = CodeSdV1.cd_Param ; msg.topic = new MqttTopic(orgTag, com.protocol + com.protocolVersion, com.rtuAddr, ProtocolConstantSdV1.PubTopicParam, cvo.no) ; msg.msg = JSON.toJSONString(new ParamSetVo(cvo.stirDuration, cvo.injectDuration)) ; return msg ; } - private void setPubMsgBase(Command com, MqttPubMsgSdV1 msg){ + private void setPubMsgBase(Command com, MqttPubMsg msg){ msg.commandId = com.id ; msg.deviceId = com.rtuAddr ; msg.mqttResultSendWebUrl = com.rtuResultSendWebUrl ; diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/upVos/ManureVo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/upVos/ManureVo.java index b72f3d0..98acc81 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/upVos/ManureVo.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/upVos/ManureVo.java @@ -20,59 +20,72 @@ /** * 鎼呮媽鏈�1鏄惁杩愯锛涳紙姘磋偉鏈鸿繕鍙瓨鍦ㄦ悈鎷屾満2銆佹悈鎷屾満3銆佹悈鎷屾満4 ......锛� 杩愯鏃�1锛屽仠姝�0. */ - @JSONField(name = "鎼呮媽杩愯1") + @JSONField(alternateNames = {"鎼呮媽杩愯1", "stirRunning1"}) public Byte stirRunning1;//鎼呮媽1杩愯鐘舵�� /** * 鎼呮媽鏈�2鏄惁杩愯锛涳紙姘磋偉鏈鸿繕鍙瓨鍦ㄦ悈鎷屾満2銆佹悈鎷屾満3銆佹悈鎷屾満4 ......锛� 杩愯鏃�1锛屽仠姝�0. * (褰撳墠澶х搴旂敤涓嶅瓨鍦�) */ - @JSONField(name = "鎼呮媽杩愯2") + @JSONField(alternateNames = {"鎼呮媽杩愯2", "stirRunning2"}) public Byte stirRunning2;//鎼呮媽2杩愯鐘舵�� /** * 鎼呮媽鏈�3鏄惁杩愯锛涳紙姘磋偉鏈鸿繕鍙瓨鍦ㄦ悈鎷屾満2銆佹悈鎷屾満3銆佹悈鎷屾満4 ......锛� 杩愯鏃�1锛屽仠姝�0. * (褰撳墠澶х搴旂敤涓嶅瓨鍦�) */ - @JSONField(name = "鎼呮媽杩愯3") + @JSONField(alternateNames = {"鎼呮媽杩愯3", "stirRunning3"}) public Byte stirRunning3;//鎼呮媽3杩愯鐘舵�� /** * 鎼呮媽鏈�4鏄惁杩愯锛涳紙姘磋偉鏈鸿繕鍙瓨鍦ㄦ悈鎷屾満2銆佹悈鎷屾満3銆佹悈鎷屾満4 ......锛� 杩愯鏃�1锛屽仠姝�0. * (褰撳墠澶х搴旂敤涓嶅瓨鍦�) */ - @JSONField(name = "鎼呮媽杩愯4") + @JSONField(alternateNames = {"鎼呮媽杩愯4", "stirRunning4"}) public Byte stirRunning4;//鎼呮媽4杩愯鐘舵�� /** * 涓�涓按鑲ユ満鍙湁涓�涓敞鑲ユ车 */ - @JSONField(name = "娉ㄨ偉杩愯") + @JSONField(alternateNames = {"娉ㄨ偉杩愯", "injectRunning"}) public Byte injectRunning ;//娉ㄨ偉杩愯鐘舵�� - @JSONField(name = "鐏屾簤杩愯") + + @JSONField(alternateNames = {"鐏屾簤杩愯", "irrRunning"}) public Byte irrRunning ;//鐏屾簤杩愯鐘舵�� /** * 1:娉ㄨ偉娉垫湁鏁呴殰銆�0:娉ㄨ偉娉垫病鏈夋晠闅� */ - @JSONField(name = "鎶ヨ") + @JSONField(alternateNames = {"鎶ヨ", "alarm"}) public Byte alarm ;//娉ㄨ偉娉垫晠闅� /** * 鑲ユ枡娴侀噺锛屽崟浣嶅崌 */ - @JSONField(name = "鑲ユ枡娴侀噺") + @JSONField(alternateNames = {"鑲ユ枡娴侀噺", "manureFlow"}) public Float manureFlow ; /** * 鍗曚綅绉� */ - @JSONField(name = "娉ㄨ偉缁忚繃鏃堕棿") + @JSONField(alternateNames = {"娉ㄨ偉缁忚繃鏃堕棿", "manureTime"}) public Integer manureTime ; /** * 鍗曚綅绉� */ - @JSONField(name = "鎼呮媽缁忚繃鏃堕棿") + @JSONField(alternateNames = {"鎼呮媽缁忚繃鏃堕棿", "stirTime"}) public Integer stirTime ; + + /** + * 鍗曚綅绉� + */ + @JSONField(alternateNames = {"鎼呮媽璁惧畾鏃堕棿", "stirDuration"}) + public Integer stirDuration ; + + /** + * 鍗曚綅绉� + */ + @JSONField(alternateNames = {"娉ㄨ偉璁惧畾鏃堕棿", "injectDuration"}) + public Integer injectDuration ; @JSONField(name = "flexem_timestamp") public Long devDt ;//璁惧鏃堕棿 @@ -107,6 +120,8 @@ sb.append(" 鑲ユ枡娴侀噺锛�" + manureFlow + ", ") ; sb.append(" 娉ㄨ偉缁忚繃鏃堕棿锛�" + manureTime + ", ") ; sb.append(" 鎼呮媽缁忚繃鏃堕棿锛�" + stirTime + ", ") ; + sb.append(" 娉ㄨ偉璁惧畾鏃堕棿锛�" + injectDuration + ", ") ; + sb.append(" 鎼呮媽璁惧畾鏃堕棿锛�" + stirDuration + ", ") ; sb.append(" 璁惧鏃堕棿锛�" + devDt + ", ") ; sb.append(" 璁惧鏃堕棿锛�" + this.getDevDtStr()) ; sb.append("\n") ; diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/mqtt/DevStatusDealer.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/mqtt/DevStatusDealer.java index d3b2f2b..35f3c71 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/mqtt/DevStatusDealer.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/mqtt/DevStatusDealer.java @@ -43,6 +43,16 @@ return rsMap ; } } + + public static Boolean oneOnLine(String devId){ + synchronized (map){ + DevStatus st = map.get(devId) ; + if(st != null){ + return st.onLine ; + } + return false ; + } + } /** * 缁熻鍦ㄧ嚎涓庝笉鍦ㄧ嚎鎯呭喌 */ diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/TkMqttData.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/TkMqttData.java index 918f363..6139870 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/TkMqttData.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/TkMqttData.java @@ -1,6 +1,6 @@ package com.dy.rtuMw.server.rtuData; -import com.dy.common.mw.protocol4Mqtt.pSdV1.MqttSubMsgSdV1; +import com.dy.common.mw.protocol4Mqtt.MqttSubMsg; import com.dy.rtuMw.server.rtuData.pSdV1.TkFindPSdV1; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -26,7 +26,7 @@ if(data == null){ log.error("涓ラ噸閿欒锛孧qtt璁㈤槄娑堟伅鏁版嵁涓虹┖锛�" ); }else{ - if(data instanceof MqttSubMsgSdV1){ + if(data instanceof MqttSubMsg){ this.toNextOneTask(data, TkFindPSdV1.taskId); }else{ log.error("涓ラ噸閿欒锛岃鏁版嵁绫诲瀷锛�" + data.getClass().getName() + "锛夛紝鎺ユ敹鏁版嵁浠诲姟杩樻湭瀹炵幇锛�" ); diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/pSdV1/TkFindPSdV1.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/pSdV1/TkFindPSdV1.java index eec2554..ce5def5 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/pSdV1/TkFindPSdV1.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/pSdV1/TkFindPSdV1.java @@ -1,6 +1,6 @@ package com.dy.rtuMw.server.rtuData.pSdV1; -import com.dy.common.mw.protocol4Mqtt.pSdV1.MqttSubMsgSdV1; +import com.dy.common.mw.protocol4Mqtt.MqttSubMsg; import com.dy.rtuMw.server.rtuData.TaskSurpport; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -24,7 +24,7 @@ @Override public void execute(Object data) { //鍓嶉潰鐨勪换鍔″凡缁忓垽鏂簡data涓嶄负绌� - MqttSubMsgSdV1 msg = (MqttSubMsgSdV1)data ; + MqttSubMsg msg = (MqttSubMsg)data ; log.info(msg.toString()); } diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/web/com/CommandCtrl.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/web/com/CommandCtrl.java index 5e701f9..196b13c 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/web/com/CommandCtrl.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/web/com/CommandCtrl.java @@ -7,6 +7,7 @@ import com.dy.rtuMw.server.forTcp.TcpSessionCache; import com.dy.rtuMw.server.local.CommandInnerDeaLer; import com.dy.rtuMw.server.local.ReturnCommand; +import com.dy.rtuMw.server.mqtt.DevStatusDealer; import com.dy.rtuMw.server.mqtt.MqttManager; import com.dy.rtuMw.server.msCenter.MsCenterUnit; import com.dy.rtuMw.server.tasks.WebDownCom4MqttTask; @@ -375,8 +376,8 @@ * @return 缁撴灉 */ private BaseResponse<Command> dealMqttCommand(Command command){ - String rtuAddr = command.getRtuAddr() ;//FBox璁惧鍙� - if(rtuAddr == null || rtuAddr.trim().equals("")){ + String mqttDevId = command.getRtuAddr() ;//FBox璁惧鍙� + if(mqttDevId == null || mqttDevId.trim().equals("")){ return BaseResponseUtils.buildError(ReturnCommand.errored("鍑洪敊锛孎Box璁惧ID涓虹┖锛�", command.getId(), command.getCode())) ; } if(!ServerProperties.mqttUnitEnable.booleanValue()){ @@ -385,6 +386,9 @@ if(MqttManager.getInstance().poolIsClose()){ return BaseResponseUtils.buildError(ReturnCommand.errored("鍑洪敊锛孧QTT杩炴帴姹犳湭鍒涘缓鎴愬姛锛�", command.getId(), command.getCode())) ; } + if(!DevStatusDealer.oneOnLine(mqttDevId)){ + return BaseResponseUtils.buildError(ReturnCommand.errored("鍑洪敊锛孎Box璁惧鏈湪绾匡紒", command.getId(), command.getCode())) ; + } //鐢熸垚寮傛浠诲姟 WebDownCom4MqttTask task = new WebDownCom4MqttTask() ; diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.properties b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.properties index 174c558..f22d25e 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.properties +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.properties @@ -11,7 +11,7 @@ # 鍑夊窞锛� lz # 閲戝窛锛� jc # 鍢夊唱鍏筹細 jyg -base.orgTag=ym +base.orgTag=jyg # 233鏈嶅姟鍣細 # 鍏冭皨锛� 60000 @@ -26,7 +26,7 @@ # 鍑夊窞锛� 60104 # 閲戝窛锛� 60105 # 鍢夊唱鍏筹細 60106 -tcp.port=60000 +tcp.port=60106 #RTU涓婅鏁版嵁鏈�灏忛棿闅旓紝澶т簬杩欎釜闂撮殧璁や负璁惧绂荤嚎浜嗭紝娴嬫帶涓�浣撻榾鏄�3锛岃〃闃�涓�浣撴満鏄�6锛岄粯璁ら噰鐢ㄦ椂闂存渶闀跨殑6 base.upData.min.interval=6 @@ -53,7 +53,7 @@ mqtt.port=1883 mqtt.user=dyyjy mqtt.password=Dyyjy2025,;.abc!@# -mqtt.protocolAndDeviceIds=sd1/123456789 +mqtt.protocolAndDeviceIds=sd1/2430002404000840,sd1/2430002404000840 mqtt.subTopicAndQos=weather/1,1;soil/1,1;manure/1,1 #MQtt璁惧鍦ㄤ竴瀹氭椂闂达紙鍒嗛挓锛夊悗鏈彂甯冩秷鎭紝璁や负璁惧绂荤嚎 mqtt.noSubThenOff=10 diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/CommandResultCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/CommandResultCtrl.java index 86f89d6..c03f7a0 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/CommandResultCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/CommandResultCtrl.java @@ -35,9 +35,9 @@ if(codeDataObj != null){ if(codeDataObj instanceof JSONObject){ codeData = protocolData == null ? null : (protocolData.getJSONObject("subData")) ; //鍗忚鍔熻兘鐮佹暟鎹� - }else if(codeDataObj instanceof JSONArray){{ + }else if(codeDataObj instanceof JSONArray){ codeArrayData = protocolData == null ? null : (protocolData.getJSONArray("subData")) ; //鍗忚鍔熻兘鐮佹暟鎹� - }} + } } JSONObject job_response = new JSONObject(); job_response.put("data", codeData!=null?codeData:(codeArrayData!=null?codeArrayData:null)); diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/MqttResultCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/MqttResultCtrl.java new file mode 100644 index 0000000..d4bb4ff --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/MqttResultCtrl.java @@ -0,0 +1,40 @@ +package com.dy.pipIrrRemote.common; + +import com.alibaba.fastjson2.JSONObject; +import com.dy.common.mw.protocol4Mqtt.MqttSubMsg; +import com.dy.pipIrrGlobal.command.ComResultWait; +import com.dy.pipIrrGlobal.command.ComSupport; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.concurrent.CompletableFuture; + +/** + * @author ZhuBaoMin + * @date 2024-05-23 8:19 + * @LastEditTime 2024-05-23 8:19 + * @Description + */ + +@Slf4j +@RestController +@RequestMapping(path="mqttRes") +public class MqttResultCtrl extends ComSupport { + @PostMapping(path = "receive", consumes = MediaType.APPLICATION_JSON_VALUE) + public void receive(@RequestBody MqttSubMsg subMsg) { + if(subMsg != null){ + CompletableFuture<MqttSubMsg> feature = (CompletableFuture<MqttSubMsg>) ComResultWait.get(Long.parseLong(subMsg.commandId)); + if(feature != null) { + feature.complete(subMsg); + }else{ + //瓒呮椂锛宖eature琚竻闄や簡 + } + }else{ + log.error("mqtt鍗忚娑堟伅涓虹┖"); + } + } +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/common/Com4MqttCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/common/Com4MqttCtrl.java index c0e4801..9bae744 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/common/Com4MqttCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/common/Com4MqttCtrl.java @@ -2,6 +2,7 @@ import com.alibaba.fastjson2.JSONObject; import com.dy.common.mw.protocol.Command; +import com.dy.common.mw.protocol4Mqtt.MqttSubMsg; import com.dy.common.util.Callback; import com.dy.common.util.IDLongGenerator; import com.dy.common.webUtil.BaseResponse; @@ -36,13 +37,13 @@ @Value("${mw.waitMwRtnResultTimeout}") protected int waitMwRtnResultTimeout ; - @Value("${mw.rtuCallbackUrl_rm}") - protected String rtuResultSendWebUrl; + @Value("${mw.mqttCallbackUrl_rm}") + protected String mqttResultSendWebUrl; //姘磋偉鏈哄璞� protected PrStManure ctrlPo ; //寮傛绛夊緟鍣� - protected CompletableFuture<JSONObject> feature; + protected CompletableFuture<MqttSubMsg> feature; //鍛戒护鍚嶇О protected String comName ; //鍛戒护鏃ュ織id @@ -158,8 +159,8 @@ public BaseResponse<Object> after(String comCode, Callback callback) { try{ //绛夊緟閫氫俊涓棿浠堕�氱煡姘磋偉鏈烘墽琛屽懡浠や笂琛屾暟鎹紙鍛戒护缁撴灉锛� - JSONObject resultData = feature.get(waitMwRtnResultTimeout, TimeUnit.SECONDS); - return BaseResponseUtils.buildSuccess(this.dealComResult(comCode, resultData, callback)); + MqttSubMsg subMsg = feature.get(waitMwRtnResultTimeout, TimeUnit.SECONDS); + return BaseResponseUtils.buildSuccess(this.dealComResult(comCode, subMsg, callback)); }catch (Exception e){ return BaseResponseUtils.buildFail("绛夊緟閫氫俊涓棿浠堕�氱煡鍛戒护缁撴灉瓒呮椂"); } @@ -189,5 +190,5 @@ /** * 鐢熸垚鍛戒护杩斿洖淇℃伅 */ - protected abstract String dealComResult(String code, JSONObject resultData, Callback callback); + protected abstract String dealComResult(String code, MqttSubMsg subMsg, Callback callback); } diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/fault/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/fault/CdCtrl.java index cc16a8d..8d673ee 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/fault/CdCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/fault/CdCtrl.java @@ -1,9 +1,9 @@ package com.dy.pipIrrRemote.monitor.mqttSd1.fault; import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONObject; import com.dy.common.aop.SsoAop; import com.dy.common.mw.protocol.Command; +import com.dy.common.mw.protocol4Mqtt.MqttSubMsg; import com.dy.common.mw.protocol4Mqtt.pSdV1.CodeSdV1; import com.dy.common.mw.protocol4Mqtt.pSdV1.ProtocolConstantSdV1; import com.dy.common.mw.protocol4Mqtt.pSdV1.upVos.ManureVo; @@ -24,6 +24,9 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; + +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Proxy; /** * @Author: liurunyu @@ -72,7 +75,7 @@ try { //鍒涘缓澶栭儴鍛戒护锛堝彂缁橫QTT->FBox锛� Command com = sv.createMQTTCommand(ctrlPo.fboxId, "" + comId, Protocol, ProtocolVersion, ComCode); - com.rtuResultSendWebUrl = rtuResultSendWebUrl; + com.rtuResultSendWebUrl = mqttResultSendWebUrl; com.param = comParam ; //鍙戦�佸懡浠� res = super.doSend(sv, com); @@ -98,24 +101,21 @@ } @Override - protected String dealComResult(String code, JSONObject resultData, Callback callback){ + protected String dealComResult(String code, MqttSubMsg subMsg, Callback callback){ String msg; - if(resultData != null){ - log.info(resultData.toString()); - JSONObject codeData = resultData.getJSONObject("data") ; - if(codeData == null){ + if(subMsg != null){ + if(subMsg.vo4Up != null && Proxy.isProxyClass(subMsg.vo4Up.getClass())){ + // 鑾峰彇浠g悊鐨� InvocationHandler + InvocationHandler handler = Proxy.getInvocationHandler(subMsg.vo4Up); + String json = JSON.toJSONString(handler) ; + ManureVo vo = JSON.parseObject(json, ManureVo.class); + msg = vo.toString() ; + }else{ msg = RtuSuccessMsg ; - }else { - String json = codeData.toJSONString(); - ManureVo cvo = JSON.parseObject(json, ManureVo.class) ; - if(cvo != null){ - msg = cvo.toString() ; - }else{ - msg = RtuSuccessMsg ; - } } }else{ msg = RtuSuccessMsg ; } return msg; - }} + } +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/inject/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/inject/CdCtrl.java index 1843239..5331d0a 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/inject/CdCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/inject/CdCtrl.java @@ -1,9 +1,9 @@ package com.dy.pipIrrRemote.monitor.mqttSd1.inject; import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONObject; import com.dy.common.aop.SsoAop; import com.dy.common.mw.protocol.Command; +import com.dy.common.mw.protocol4Mqtt.MqttSubMsg; import com.dy.common.mw.protocol4Mqtt.pSdV1.CodeSdV1; import com.dy.common.mw.protocol4Mqtt.pSdV1.ProtocolConstantSdV1; import com.dy.common.mw.protocol4Mqtt.pSdV1.upVos.ManureVo; @@ -12,7 +12,6 @@ import com.dy.common.webUtil.BaseResponseUtils; import com.dy.pipIrrRemote.common.dto.Dto4MqttBase; import com.dy.pipIrrRemote.monitor.common.Com4MqttCtrl; -import com.dy.pipIrrRemote.monitor.mqttSd1.stir.CdDto; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; @@ -25,6 +24,9 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; + +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Proxy; /** * @Author: liurunyu @@ -58,7 +60,7 @@ */ @PostMapping(path = "start", consumes = MediaType.APPLICATION_JSON_VALUE) @SsoAop() - public BaseResponse<Object> start(@RequestBody @Valid com.dy.pipIrrRemote.monitor.mqttSd1.stir.CdDto dto, BindingResult bindingResult) { + public BaseResponse<Object> start(@RequestBody @Valid CdDto dto, BindingResult bindingResult) { return this.send(dto, bindingResult, true) ; } @@ -70,7 +72,7 @@ */ @PostMapping(path = "stop", consumes = MediaType.APPLICATION_JSON_VALUE) @SsoAop() - public BaseResponse<Object> stop(@RequestBody @Valid com.dy.pipIrrRemote.monitor.mqttSd1.stir.CdDto dto, BindingResult bindingResult) { + public BaseResponse<Object> stop(@RequestBody @Valid CdDto dto, BindingResult bindingResult) { return this.send(dto, bindingResult, false) ; } @@ -97,7 +99,7 @@ try { //鍒涘缓澶栭儴鍛戒护锛堝彂缁橫QTT->FBox锛� Command com = sv.createMQTTCommand(ctrlPo.fboxId, "" + comId, Protocol, ProtocolVersion, ComCode); - com.rtuResultSendWebUrl = rtuResultSendWebUrl; + com.rtuResultSendWebUrl = mqttResultSendWebUrl; com.param = comParam ; //鍙戦�佸懡浠� res = super.doSend(sv, com); @@ -123,24 +125,21 @@ } @Override - protected String dealComResult(String code, JSONObject resultData, Callback callback){ + protected String dealComResult(String code, MqttSubMsg subMsg, Callback callback){ String msg; - if(resultData != null){ - log.info(resultData.toString()); - JSONObject codeData = resultData.getJSONObject("data") ; - if(codeData == null){ + if(subMsg != null){ + if(subMsg.vo4Up != null && Proxy.isProxyClass(subMsg.vo4Up.getClass())){ + // 鑾峰彇浠g悊鐨� InvocationHandler + InvocationHandler handler = Proxy.getInvocationHandler(subMsg.vo4Up); + String json = JSON.toJSONString(handler) ; + ManureVo vo = JSON.parseObject(json, ManureVo.class); + msg = vo.toString() ; + }else{ msg = RtuSuccessMsg ; - }else { - String json = codeData.toJSONString(); - ManureVo cvo = JSON.parseObject(json, ManureVo.class) ; - if(cvo != null){ - msg = cvo.toString() ; - }else{ - msg = RtuSuccessMsg ; - } } }else{ msg = RtuSuccessMsg ; } return msg; - }} + } +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/irr/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/irr/CdCtrl.java index 9dc4801..a361d9a 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/irr/CdCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/irr/CdCtrl.java @@ -1,9 +1,9 @@ package com.dy.pipIrrRemote.monitor.mqttSd1.irr; import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONObject; import com.dy.common.aop.SsoAop; import com.dy.common.mw.protocol.Command; +import com.dy.common.mw.protocol4Mqtt.MqttSubMsg; import com.dy.common.mw.protocol4Mqtt.pSdV1.CodeSdV1; import com.dy.common.mw.protocol4Mqtt.pSdV1.ProtocolConstantSdV1; import com.dy.common.mw.protocol4Mqtt.pSdV1.upVos.ManureVo; @@ -25,6 +25,9 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; + +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Proxy; /** * @Author: liurunyu @@ -98,7 +101,7 @@ try { //鍒涘缓澶栭儴鍛戒护锛堝彂缁橫QTT->FBox锛� Command com = sv.createMQTTCommand(ctrlPo.fboxId, "" + comId, Protocol, ProtocolVersion, ComCode); - com.rtuResultSendWebUrl = rtuResultSendWebUrl; + com.rtuResultSendWebUrl = mqttResultSendWebUrl; com.param = comParam ; //鍙戦�佸懡浠� res = super.doSend(sv, com); @@ -124,24 +127,21 @@ } @Override - protected String dealComResult(String code, JSONObject resultData, Callback callback){ + protected String dealComResult(String code, MqttSubMsg subMsg, Callback callback){ String msg; - if(resultData != null){ - log.info(resultData.toString()); - JSONObject codeData = resultData.getJSONObject("data") ; - if(codeData == null){ + if(subMsg != null){ + if(subMsg.vo4Up != null && Proxy.isProxyClass(subMsg.vo4Up.getClass())){ + // 鑾峰彇浠g悊鐨� InvocationHandler + InvocationHandler handler = Proxy.getInvocationHandler(subMsg.vo4Up); + String json = JSON.toJSONString(handler) ; + ManureVo vo = JSON.parseObject(json, ManureVo.class); + msg = vo.toString() ; + }else{ msg = RtuSuccessMsg ; - }else { - String json = codeData.toJSONString(); - ManureVo cvo = JSON.parseObject(json, ManureVo.class) ; - if(cvo != null){ - msg = cvo.toString() ; - }else{ - msg = RtuSuccessMsg ; - } } }else{ msg = RtuSuccessMsg ; } return msg; - }} + } +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/paramSet/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/paramSet/CdCtrl.java index dfb2772..c3e8120 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/paramSet/CdCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/paramSet/CdCtrl.java @@ -1,9 +1,9 @@ package com.dy.pipIrrRemote.monitor.mqttSd1.paramSet; import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONObject; import com.dy.common.aop.SsoAop; import com.dy.common.mw.protocol.Command; +import com.dy.common.mw.protocol4Mqtt.MqttSubMsg; import com.dy.common.mw.protocol4Mqtt.pSdV1.CodeSdV1; import com.dy.common.mw.protocol4Mqtt.pSdV1.ProtocolConstantSdV1; import com.dy.common.mw.protocol4Mqtt.pSdV1.upVos.ManureVo; @@ -12,7 +12,6 @@ import com.dy.common.webUtil.BaseResponseUtils; import com.dy.pipIrrRemote.common.dto.Dto4MqttBase; import com.dy.pipIrrRemote.monitor.common.Com4MqttCtrl; -import com.dy.pipIrrRemote.monitor.mqttSd1.stir.CdDto; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; @@ -25,6 +24,9 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; + +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Proxy; /** * @Author: liurunyu @@ -75,7 +77,7 @@ try { //鍒涘缓澶栭儴鍛戒护锛堝彂缁橫QTT->FBox锛� Command com = sv.createMQTTCommand(ctrlPo.fboxId, "" + comId, Protocol, ProtocolVersion, ComCode); - com.rtuResultSendWebUrl = rtuResultSendWebUrl; + com.rtuResultSendWebUrl = mqttResultSendWebUrl; com.param = comParam ; //鍙戦�佸懡浠� res = super.doSend(sv, com); @@ -101,24 +103,21 @@ } @Override - protected String dealComResult(String code, JSONObject resultData, Callback callback){ + protected String dealComResult(String code, MqttSubMsg subMsg, Callback callback){ String msg; - if(resultData != null){ - log.info(resultData.toString()); - JSONObject codeData = resultData.getJSONObject("data") ; - if(codeData == null){ + if(subMsg != null){ + if(subMsg.vo4Up != null && Proxy.isProxyClass(subMsg.vo4Up.getClass())){ + // 鑾峰彇浠g悊鐨� InvocationHandler + InvocationHandler handler = Proxy.getInvocationHandler(subMsg.vo4Up); + String json = JSON.toJSONString(handler) ; + ManureVo vo = JSON.parseObject(json, ManureVo.class); + msg = vo.toString() ; + }else{ msg = RtuSuccessMsg ; - }else { - String json = codeData.toJSONString(); - ManureVo cvo = JSON.parseObject(json, ManureVo.class) ; - if(cvo != null){ - msg = cvo.toString() ; - }else{ - msg = RtuSuccessMsg ; - } } }else{ msg = RtuSuccessMsg ; } return msg; - }} + } +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/paramSet/CdDto.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/paramSet/CdDto.java index d80897a..491dffd 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/paramSet/CdDto.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/paramSet/CdDto.java @@ -1,6 +1,7 @@ package com.dy.pipIrrRemote.monitor.mqttSd1.paramSet; import com.dy.pipIrrRemote.common.dto.Dto4MqttBase; +import jakarta.validation.constraints.NotNull; import lombok.Data; import lombok.EqualsAndHashCode; @@ -13,4 +14,12 @@ @EqualsAndHashCode(callSuper=true) public class CdDto extends Dto4MqttBase { public static final long serialVersionUID = 202506201656001L; + + // 鎼呮媽璁惧畾鏃堕棿 鍗曚綅绉� + @NotNull(message = "鎼呮媽璁惧畾鏃堕棿涓嶈兘涓虹┖") + public Integer stirDuration ; + + // 娉ㄨ偉璁惧畾鏃堕棿 鍗曚綅绉� + @NotNull(message = "娉ㄨ偉璁惧畾鏃堕棿涓嶈兘涓虹┖") + public Integer injectDuration ; } diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/stir/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/stir/CdCtrl.java index 8839c70..698f108 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/stir/CdCtrl.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/stir/CdCtrl.java @@ -1,9 +1,9 @@ package com.dy.pipIrrRemote.monitor.mqttSd1.stir; import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONObject; import com.dy.common.aop.SsoAop; import com.dy.common.mw.protocol.Command; +import com.dy.common.mw.protocol4Mqtt.MqttSubMsg; import com.dy.common.mw.protocol4Mqtt.pSdV1.CodeSdV1; import com.dy.common.mw.protocol4Mqtt.pSdV1.ProtocolConstantSdV1; import com.dy.common.mw.protocol4Mqtt.pSdV1.upVos.ManureVo; @@ -25,6 +25,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Proxy; + /** * @Author: liurunyu * @Date: 2025/6/16 17:35 @@ -34,7 +37,7 @@ @Slf4j @Tag(name = "杩滅▼鍛戒护", description = "鎼呮媽鍚仠") @RestController("mqttSd1StirCtrl") -@RequestMapping(path = "mqttSd1/stirCtrl") +@RequestMapping(path = "mqttSd1/stir") @RequiredArgsConstructor @Scope("prototype") //鍥犱负鏈夊璞$被灞炴�э紝鎵�浠ラ噰鐢ㄥ師鍨嬫ā寮忥紝姣忔璇锋眰鏂板缓涓�涓疄渚嬪璞� public class CdCtrl extends Com4MqttCtrl { @@ -93,7 +96,7 @@ try { //鍒涘缓澶栭儴鍛戒护锛堝彂缁橫QTT->FBox锛� Command com = sv.createMQTTCommand(ctrlPo.fboxId, "" + comId, Protocol, ProtocolVersion, ComCode); - com.rtuResultSendWebUrl = rtuResultSendWebUrl; + com.rtuResultSendWebUrl = mqttResultSendWebUrl; com.param = comParam ; //鍙戦�佸懡浠� res = super.doSend(sv, com); @@ -119,24 +122,21 @@ } @Override - protected String dealComResult(String code, JSONObject resultData, Callback callback){ + protected String dealComResult(String code, MqttSubMsg subMsg, Callback callback){ String msg; - if(resultData != null){ - log.info(resultData.toString()); - JSONObject codeData = resultData.getJSONObject("data") ; - if(codeData == null){ + if(subMsg != null){ + if(subMsg.vo4Up != null && Proxy.isProxyClass(subMsg.vo4Up.getClass())){ + // 鑾峰彇浠g悊鐨� InvocationHandler + InvocationHandler handler = Proxy.getInvocationHandler(subMsg.vo4Up); + String json = JSON.toJSONString(handler) ; + ManureVo vo = JSON.parseObject(json, ManureVo.class); + msg = vo.toString() ; + }else{ msg = RtuSuccessMsg ; - }else { - String json = codeData.toJSONString(); - ManureVo cvo = JSON.parseObject(json, ManureVo.class) ; - if(cvo != null){ - msg = cvo.toString() ; - }else{ - msg = RtuSuccessMsg ; - } } }else{ msg = RtuSuccessMsg ; } return msg; - }} + } +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/stir/CdDto.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/stir/CdDto.java index 4e8aeb1..c447a8c 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/stir/CdDto.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/stir/CdDto.java @@ -15,11 +15,4 @@ public class CdDto extends Dto4MqttBase { public static final long serialVersionUID = 202506201655001L; - // 鎼呮媽璁惧畾鏃堕棿 鍗曚綅绉� - @NotNull(message = "鎼呮媽璁惧畾鏃堕棿涓嶈兘涓虹┖") - public Integer stirDuration ; - - // 娉ㄨ偉璁惧畾鏃堕棿 鍗曚綅绉� - @NotNull(message = "娉ㄨ偉璁惧畾鏃堕棿涓嶈兘涓虹┖") - public Integer injectDuration ; } -- Gitblit v1.8.0