From e9d04864135236c8b39b06f62d001631524197e6 Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期五, 20 六月 2025 17:02:58 +0800 Subject: [PATCH] 1、协议细化,处理小数; 2、水肥机、气象站、墒情站实体增加属性fboxId(FBox序列号); --- pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrStManureMapper.xml | 25 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/paramSet/CdSv.java | 15 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/fault/CdCtrl.java | 122 ++++ pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/common/Com4MqttSv.java | 50 + pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrStWeather.java | 6 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/inject/CdSv.java | 15 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/upVos/ManureVo.java | 48 + pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/inject/CdDto.java | 16 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/irr/CdCtrl.java | 122 ++++ pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Command.java | 2 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrStSoil.java | 6 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/irr/CdDto.java | 16 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/paramSet/CdDto.java | 16 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/web/com/CommandCtrl.java | 6 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/inject/CdParam.java | 19 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/fault/CdParam.java | 12 pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrStWeatherMapper.xml | 25 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/common/Cd4MqttParameter.java | 16 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/stir/CdCtrl.java | 122 ++++ pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/stir/CdParam.java | 19 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrStManure.java | 6 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/paramSet/CdCtrl.java | 122 ++++ pipIrr-platform/文档/水肥气象墒情/FlexManager软件配置参数.docx | 0 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/inject/CdCtrl.java | 122 ++++ pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/MqttTopic.java | 2 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/upVos/WeatherVo.java | 8 pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrStSoilMapper.xml | 25 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/downVos/ParamSetVo.java | 6 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/common/Com4MqttCtrl.java | 193 +++++++ pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/fault/CdDto.java | 6 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/upVos/SoilVo.java | 20 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/Command4MqttSv.java | 137 +++++ pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/fault/CdSv.java | 6 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/stir/CdSv.java | 15 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/irr/CdParam.java | 19 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/dto/Dto4MqttBase.java | 33 + /dev/null | 9 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/irr/CdSv.java | 15 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/paramSet/CdParam.java | 19 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/CodeSdV1.java | 15 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/stir/CdDto.java | 16 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/ProtocolParserSdV1.java | 37 + 42 files changed, 1,438 insertions(+), 71 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 59b6ec0..2399abe 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 @@ -41,7 +41,7 @@ public Short protocolVersion; /** - * RTU 鍦板潃 + * RTU鍦板潃 鍜� FBox璁惧鍙� */ public String rtuAddr ; diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/MqttTopic.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/MqttTopic.java index da40d12..5bc518e 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/MqttTopic.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/MqttTopic.java @@ -16,7 +16,7 @@ public String orgTag ;//缁勭粐鏍囪瘑 public String protocol ;//鍗忚鍚嶇О public String devId ;//璁惧锛團Box锛塈D - public String type;//娴嬬珯绫诲瀷 + public String type;//鏁版嵁锛堝懡浠わ級绫诲瀷 public Integer no;//娴嬬珯缂栧彿 public boolean isEmpty(){ diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/CodeSdV1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/CodeSdV1.java index a78f8b0..a029596 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/CodeSdV1.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/CodeSdV1.java @@ -10,5 +10,18 @@ public static final String cd_Stir = "01" ;//鎼呮媽鍚仠鍛戒护 public static final String cd_Inject = "02" ;//娉ㄨ偉鍚仠鍛戒护 public static final String cd_Irr = "03" ;//鐏屾簤鍚仠鍛戒护 - public static final String cd_Param = "10" ;//璁惧畾鍙傛暟 + public static final String cd_Param = "10" ;//璁剧疆鍙傛暟 + + public static String getCodeName(String code) { + String name = (code.equals(cd_Fault) ? "鏁呴殰瑙i櫎" : + (code.equals(cd_Stir) ? "鎼呮媽鍚仠" : + (code.equals(cd_Inject) ? "娉ㄨ偉鍚仠" : + (code.equals(cd_Irr) ? "鐏屾簤鍚仠" : + (code.equals(cd_Param) ? "璁剧疆鍙傛暟" : + ""))))) ; + if(name == null || name.equals("")){ + name = code ; + } + return name ; + } } 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 5c7bb13..0040621 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 @@ -32,22 +32,43 @@ DevRunInfo stInfo = null ; switch (subTopic.type) { case ProtocolConstantSdV1.SubTopicWeather -> { - vo = JSON.parseObject(strTxt, WeatherVo.class); + WeatherVo wvo = JSON.parseObject(strTxt, WeatherVo.class); + //璋冩暣灏忔暟 + wvo.airTemperature = (wvo.airTemperature == null ? null: (wvo.airTemperature / 10.0F)) ; + wvo.airHumidity = (wvo.airHumidity == null ? null: (wvo.airHumidity / 10.0F)) ; + wvo.rainfall = (wvo.rainfall == null ? null: (wvo.rainfall / 10.0F)) ; + wvo.windSpeed = (wvo.windSpeed == null ? null: (wvo.windSpeed / 10.0F)) ; + vo = wvo ; break; } case ProtocolConstantSdV1.SubTopicSoil -> { - vo = JSON.parseObject(strTxt, SoilVo.class); + SoilVo svo = JSON.parseObject(strTxt, SoilVo.class); + //璋冩暣灏忔暟 + svo.soilHumidity1 = (svo.soilHumidity1 == null ? null: (svo.soilHumidity1 / 10.0F)) ; + svo.soilHumidity2 = (svo.soilHumidity2 == null ? null: (svo.soilHumidity2 / 10.0F)) ; + svo.soilHumidity3 = (svo.soilHumidity3 == null ? null: (svo.soilHumidity3 / 10.0F)) ; + svo.soilHumidity4 = (svo.soilHumidity4 == null ? null: (svo.soilHumidity4 / 10.0F)) ; + svo.soilHumidity5 = (svo.soilHumidity5 == null ? null: (svo.soilHumidity5 / 10.0F)) ; + svo.soilTemperature1 = (svo.soilTemperature1 == null ? null: (svo.soilTemperature1 / 10.0F)) ; + svo.soilTemperature2 = (svo.soilTemperature2 == null ? null: (svo.soilTemperature2 / 10.0F)) ; + svo.soilTemperature3 = (svo.soilTemperature3 == null ? null: (svo.soilTemperature3 / 10.0F)) ; + svo.soilTemperature4 = (svo.soilTemperature4 == null ? null: (svo.soilTemperature4 / 10.0F)) ; + svo.soilTemperature5 = (svo.soilTemperature5 == null ? null: (svo.soilTemperature5 / 10.0F)) ; + vo = svo ; break; } case ProtocolConstantSdV1.SubTopicManure -> { - vo = JSON.parseObject(strTxt, ManureVo.class); - ManureVo stVo = (ManureVo)vo ; + ManureVo mvo = JSON.parseObject(strTxt, ManureVo.class); + //璋冩暣灏忔暟 + mvo.manureFlow = (mvo.manureFlow == null ? null: (mvo.manureFlow / 10.0F)) ; + vo = mvo ; + stInfo = new DevRunInfo() ; stInfo.devId = msg.deviceId ; - stInfo.stirRunning = (stVo.stirRunning==null?false:(stVo.stirRunning.byteValue()==1?true:false)) ; //鎼呮媽杩愯 true鏄� false鍚� - stInfo.injectRunning = (stVo.injectRunning==null?false:(stVo.injectRunning.byteValue()==1?true:false)) ; //娉ㄨ偉杩愯 true鏄� false鍚� - stInfo.irrRunning = (stVo.irrRunning==null?false:(stVo.irrRunning.byteValue()==1?true:false)) ; //鐏屾簤杩愯 true鏄� false鍚� - stInfo.alarm = (stVo.alarm==null?false:(stVo.alarm.byteValue()==1?true:false)) ; //鎶ヨ true鏄� false鍚� + stInfo.stirRunning = (mvo.stirRunning1 ==null?false:(mvo.stirRunning1.byteValue()==1?true:false)) ; //鎼呮媽杩愯 true鏄� false鍚� + stInfo.injectRunning = (mvo.injectRunning==null?false:(mvo.injectRunning.byteValue()==1?true:false)) ; //娉ㄨ偉杩愯 true鏄� false鍚� + stInfo.irrRunning = (mvo.irrRunning==null?false:(mvo.irrRunning.byteValue()==1?true:false)) ; //鐏屾簤杩愯 true鏄� false鍚� + stInfo.alarm = (mvo.alarm==null?false:(mvo.alarm.byteValue()==1?true:false)) ; //鎶ヨ true鏄� false鍚� break; } default -> { diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/downVos/ParamSetVo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/downVos/ParamSetVo.java index 48ecd14..4b421d9 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/downVos/ParamSetVo.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/downVos/ParamSetVo.java @@ -15,9 +15,15 @@ @NoArgsConstructor @AllArgsConstructor public class ParamSetVo implements Vo4Down { + /** + * 鍗曚綅绉� + */ @JSONField(name = "鎼呮媽璁惧畾鏃堕棿") public Integer stirDuration ; + /** + * 鍗曚綅绉� + */ @JSONField(name = "娉ㄨ偉璁惧畾鏃堕棿") public Integer injectDuration ; 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 10e0875..f6b5647 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 @@ -17,24 +17,60 @@ public Integer no ;//娴嬬珯缂栧彿锛屽叾涓嶅湪JSON鏁版嵁涓紝鍏跺湪涓婚涓� - @JSONField(name = "鎼呮媽杩愯") - public Byte stirRunning ;//鎼呮媽杩愯 + /** + * 鎼呮媽鏈�1鏄惁杩愯锛涳紙姘磋偉鏈鸿繕鍙瓨鍦ㄦ悈鎷屾満2銆佹悈鎷屾満3銆佹悈鎷屾満4 ......锛� 杩愯鏃�1锛屽仠姝�0. + */ + @JSONField(name = "鎼呮媽杩愯1") + public Byte stirRunning1;//鎼呮媽1杩愯鐘舵�� + /** + * 鎼呮媽鏈�2鏄惁杩愯锛涳紙姘磋偉鏈鸿繕鍙瓨鍦ㄦ悈鎷屾満2銆佹悈鎷屾満3銆佹悈鎷屾満4 ......锛� 杩愯鏃�1锛屽仠姝�0. + * (褰撳墠澶х搴旂敤涓嶅瓨鍦�) + */ + @JSONField(name = "鎼呮媽杩愯2") + public Byte stirRunning2;//鎼呮媽2杩愯鐘舵�� + /** + * 鎼呮媽鏈�3鏄惁杩愯锛涳紙姘磋偉鏈鸿繕鍙瓨鍦ㄦ悈鎷屾満2銆佹悈鎷屾満3銆佹悈鎷屾満4 ......锛� 杩愯鏃�1锛屽仠姝�0. + * (褰撳墠澶х搴旂敤涓嶅瓨鍦�) + */ + @JSONField(name = "鎼呮媽杩愯3") + public Byte stirRunning3;//鎼呮媽3杩愯鐘舵�� + /** + * 鎼呮媽鏈�4鏄惁杩愯锛涳紙姘磋偉鏈鸿繕鍙瓨鍦ㄦ悈鎷屾満2銆佹悈鎷屾満3銆佹悈鎷屾満4 ......锛� 杩愯鏃�1锛屽仠姝�0. + * (褰撳墠澶х搴旂敤涓嶅瓨鍦�) + */ + @JSONField(name = "鎼呮媽杩愯4") + public Byte stirRunning4;//鎼呮媽4杩愯鐘舵�� + /** + * 涓�涓按鑲ユ満鍙湁涓�涓敞鑲ユ车 + */ @JSONField(name = "娉ㄨ偉杩愯") - public Byte injectRunning ;//娉ㄨ偉杩愯 + public Byte injectRunning ;//娉ㄨ偉杩愯鐘舵�� @JSONField(name = "鐏屾簤杩愯") - public Byte irrRunning ;//鐏屾簤杩愯 + public Byte irrRunning ;//鐏屾簤杩愯鐘舵�� + /** + * 1:娉ㄨ偉娉垫湁鏁呴殰銆�0:娉ㄨ偉娉垫病鏈夋晠闅� + */ @JSONField(name = "鎶ヨ") - public Byte alarm ;//鎶ヨ + public Byte alarm ;//娉ㄨ偉娉垫晠闅� + /** + * 鑲ユ枡娴侀噺锛屽崟浣嶅崌 + */ @JSONField(name = "鑲ユ枡娴侀噺") public Float manureFlow ; + /** + * 鍗曚綅绉� + */ @JSONField(name = "娉ㄨ偉缁忚繃鏃堕棿") public Integer manureTime ; + /** + * 鍗曚綅绉� + */ @JSONField(name = "鎼呮媽缁忚繃鏃堕棿") public Integer stirTime ; @@ -61,7 +97,7 @@ StringBuilder sb = new StringBuilder(); sb.append("姘磋偉鏁版嵁=>") ; sb.append(" 娑堟伅ID锛�" + messageId + ", ") ; - sb.append(" 鎼呮媽杩愯锛�" + stirRunning + ", ") ; + sb.append(" 鎼呮媽杩愯锛�" + stirRunning1 + ", ") ; sb.append(" 娉ㄨ偉杩愯锛�" + injectRunning + ", ") ; sb.append(" 鐏屾簤杩愯锛�" + irrRunning + ", ") ; sb.append(" 鎶ヨ锛�" + alarm + ", ") ; diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/upVos/SoilVo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/upVos/SoilVo.java index 9f3a71e..1f51b63 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/upVos/SoilVo.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/upVos/SoilVo.java @@ -18,34 +18,34 @@ public Integer no ;//娴嬬珯缂栧彿锛屽叾涓嶅湪JSON鏁版嵁涓紝鍏跺湪涓婚涓� @JSONField(name = "鍦熷¥婀垮害1") - public Integer soilHumidity1 ; + public Float soilHumidity1 ; @JSONField(name = "鍦熷¥婀垮害2") - public Integer soilHumidity2 ; + public Float soilHumidity2 ; @JSONField(name = "鍦熷¥婀垮害3") - public Integer soilHumidity3 ; + public Float soilHumidity3 ; @JSONField(name = "鍦熷¥婀垮害4") - public Integer soilHumidity4 ; + public Float soilHumidity4 ; @JSONField(name = "鍦熷¥婀垮害5") - public Integer soilHumidity5 ; + public Float soilHumidity5 ; @JSONField(name = "鍦熷¥婀垮害1") - public Integer soilTemperature1 ; + public Float soilTemperature1 ; @JSONField(name = "鍦熷¥娓╁害2") - public Integer soilTemperature2 ; + public Float soilTemperature2 ; @JSONField(name = "鍦熷¥娓╁害3") - public Integer soilTemperature3 ; + public Float soilTemperature3 ; @JSONField(name = "鍦熷¥娓╁害4") - public Integer soilTemperature4 ; + public Float soilTemperature4 ; @JSONField(name = "鍦熷¥娓╁害5") - public Integer soilTemperature5 ; + public Float soilTemperature5 ; @JSONField(name = "flexem_timestamp") public Long devDt ;//璁惧鏃堕棿 diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/upVos/WeatherVo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/upVos/WeatherVo.java index 58926a5..2891399 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/upVos/WeatherVo.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol4Mqtt/pSdV1/upVos/WeatherVo.java @@ -25,10 +25,10 @@ //public Integer atmosphericPressure ; @JSONField(name = "绌烘皵娓╁害") - public Integer airTemperature ; + public Float airTemperature ; @JSONField(name = "绌烘皵婀垮害") - public Integer airHumidity ; + public Float airHumidity ; @JSONField(name = "绱绾�") public Integer ultraviolet ; @@ -37,10 +37,10 @@ public Integer lightIntensity ; @JSONField(name = "闆ㄩ噺") - public Integer rainfall ; + public Float rainfall ; @JSONField(name = "椋庨��") - public Integer windSpeed ; + public Float windSpeed ; @JSONField(name = "椋庡悜") public Integer windDirection ; diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/Command4MqttSv.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/Command4MqttSv.java new file mode 100644 index 0000000..a292a01 --- /dev/null +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/command/Command4MqttSv.java @@ -0,0 +1,137 @@ +package com.dy.pipIrrGlobal.command; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.dy.common.mw.protocol.Command; +import com.dy.common.mw.protocol.CommandBackParam; +import com.dy.common.mw.protocol4Mqtt.pSdV1.CodeSdV1; +import com.dy.common.mw.protocol4Mqtt.pSdV1.ProtocolConstantSdV1; +import com.dy.common.webUtil.BaseResponse; +import com.dy.pipIrrGlobal.daoPr.PrStManureMapper; +import com.dy.pipIrrGlobal.daoRm.RmCommandHistoryMapper; +import com.dy.pipIrrGlobal.pojoPr.PrStManure; +import com.dy.pipIrrGlobal.pojoRm.RmCommandHistory; +import com.dy.pipIrrGlobal.rtuMw.Web2RtuMw; + +import java.util.Date; + +/** + * @Author: liurunyu + * @Date: 2025/5/6 11:41 + * @Description + */ +public class Command4MqttSv extends Web2RtuMw { + + + /** + * 浠庢暟鎹簱涓煡璇㈡按鑲ユ満瀵硅薄 + * @param prStManureDao + * @param manureId + * @return + */ + public PrStManure getManure(PrStManureMapper prStManureDao, Long manureId){ + return prStManureDao.selectByPrimaryKey(manureId); + } + + /** + * 妫�鏌ュ崗璁槸鍚︽敮鎸� + * @param ctrlPo + * @return + */ + public String checkProtocol(PrStManure ctrlPo){ + return null ; + } + + /** + * 鏍规嵁鍗忚鑾峰彇鍛戒护鍚嶇О + * @param nowComCode + * @param protocol + * @return + */ + public String getCommandName(String nowComCode, String protocol, Short protocolVer){ + if(protocol.equals(ProtocolConstantSdV1.protocolName) + && protocolVer.equals(ProtocolConstantSdV1.protocolVer)) { + return CodeSdV1.getCodeName(nowComCode) ; + } + return null ; + } + + /** + * 淇濆瓨鍛戒护鍘嗗彶璁板綍 + * @param rmCommandHistoryDao + * @param comId + * @param protocol + * @param commandCode + * @param commandName + * @param manureId + * @param rtuAddr + * @param param + * @param operator + * @return + */ + public RmCommandHistory saveComHistoryPo(RmCommandHistoryMapper rmCommandHistoryDao, + Long comId, + String protocol, + String commandCode, + String commandName, + Long manureId, + String rtuAddr, + Object param, + Long operator) { + RmCommandHistory po = new RmCommandHistory(); + po.setComId(comId); + po.setCommandCode(commandCode); + po.setCommandName(commandName); + po.setIntakeId(manureId); + po.setRtuAddr(rtuAddr); + po.setProtocol(protocol); + po.setParam((JSONObject) JSON.toJSON(param)); + po.setSendTime(new Date()); + po.setOperator(operator); + int count = rmCommandHistoryDao.insertSelective(po) ; + if(count == 0){ + po = null ; + } + return po; + } + + /** + * 澶勭悊閫氫俊涓棿浠惰繑鍥炵殑鍛戒护澶勭悊缁撴灉 + * @param res + * @return + */ + public String dealMwDealResponse(BaseResponse res){ + if(res != null){ + Command reCom = JSON.parseObject(res.getContent() == null ? null : JSON.toJSONString(res.getContent()), Command.class) ; + CommandBackParam bakParam = JSON.parseObject((reCom== null || reCom.param == null) ? null : JSON.toJSONString(reCom.param), CommandBackParam.class) ; + if(res.isSuccess()){ + if(bakParam != null){ + if(bakParam.getSuccess().booleanValue()){ + //閫氫俊涓棿浠舵垚鍔熷鐞嗕簡鍛戒护 + //绛夊緟鎺у埗鍣ㄦ帴鏀跺苟鎵ц鍛戒护鍚庣殑搴旂瓟锛岀劧鍚庨�氫俊涓棿浠堕�氱煡鏈ā鍧� + return null ; + }else{ + return "閫氫俊涓棿浠跺鐞嗗懡浠ゅけ璐ワ紝澶辫触淇℃伅锛�" + bakParam.getMessage(); + } + }else{ + return "閫氫俊涓棿浠惰繑鍥炲懡浠ょ粨鏋滀腑涓嶅寘鍚獵ommandBackParam绫诲瀷鍙傛暟"; + } + }else{ + if(bakParam != null){ + if(bakParam.getSuccess().booleanValue()){ + //閫氫俊涓棿浠舵垚鍔熷鐞嗕簡鍛戒护 + //绛夊緟鎺у埗鍣ㄦ帴鏀跺苟鎵ц鍛戒护鍚庣殑搴旂瓟锛岀劧鍚庨�氫俊涓棿浠堕�氱煡鏈ā鍧� + return "閫氫俊涓棿浠跺鐞嗗懡浠ゅけ璐ワ紝澶辫触淇℃伅锛�" + (res.getMsg() == null? "" : ("锛�" + res.getMsg())) ; + }else{ + return "閫氫俊涓棿浠跺鐞嗗懡浠ゅけ璐ワ紝澶辫触淇℃伅锛�" + bakParam.getMessage(); + } + }else{ + return "閫氫俊涓棿浠跺鐞嗗懡浠ゅけ璐ワ紝澶辫触淇℃伅锛�" + (res.getMsg() == null? "" : ("锛�" + res.getMsg())) ; + } + } + }else{ + return "閫氫俊涓棿浠惰繑鍥炲懡浠ょ粨鏋滀负null"; + } + } + +} diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrStManure.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrStManure.java index ce4d50f..d8ea7a5 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrStManure.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrStManure.java @@ -37,6 +37,12 @@ public Long id; /** + * FBox搴忓垪鍙� + */ + @Schema(description = "FBox搴忓垪鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + public String fboxId ; + + /** * 姘磋偉绔欑紪鍙� */ @Schema(description = "姘磋偉绔欑紪鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED) diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrStSoil.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrStSoil.java index 56ad0c7..c0a4814 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrStSoil.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrStSoil.java @@ -37,6 +37,12 @@ public Long id; /** + * FBox搴忓垪鍙� + */ + @Schema(description = "FBox搴忓垪鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + public String fboxId ; + + /** * 澧掓儏绔欑紪鍙� */ @Schema(description = "澧掓儏绔欑紪鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED) diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrStWeather.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrStWeather.java index 77db182..46b38cb 100644 --- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrStWeather.java +++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrStWeather.java @@ -37,6 +37,12 @@ public Long id; /** + * FBox搴忓垪鍙� + */ + @Schema(description = "FBox搴忓垪鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED) + public String fboxId ; + + /** * 姘旇薄绔欑紪鍙� */ @Schema(description = "姘旇薄绔欑紪鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED) diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrStManureMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrStManureMapper.xml index c16fe8a..a70239a 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrStManureMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrStManureMapper.xml @@ -6,6 +6,7 @@ <!--@Table pr_st_manure--> <id column="id" jdbcType="BIGINT" property="id" /> <result column="no" jdbcType="INTEGER" property="no" /> + <result column="fbox_id" jdbcType="VARCHAR" property="fboxId" /> <result column="name" jdbcType="VARCHAR" property="name" /> <result column="lng" jdbcType="DOUBLE" property="lng" /> <result column="lat" jdbcType="DOUBLE" property="lat" /> @@ -14,11 +15,11 @@ </resultMap> <sql id="Base_Column_List"> <!--@mbg.generated--> - id, `no`, `name`, lng, lat, remark, deleted + id, fbox_id,`no`, `name`, lng, lat, remark, deleted </sql> <sql id="part_Column_List"> <!--@mbg.generated--> - id, `no`, `name`, lng, lat, remark + id, fbox_id, `no`, `name`, lng, lat, remark </sql> <sql id="simple_Column_List"> <!--@mbg.generated--> @@ -50,11 +51,11 @@ </delete> <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoPr.PrStManure"> <!--@mbg.generated--> - insert into pr_st_manure (id, `no`, `name`, lng, + insert into pr_st_manure (id, fbox_id, `no`, `name`, lng, lat, remark, deleted) - values (#{id,jdbcType=BIGINT}, #{no,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, - #{lng,jdbcType=DOUBLE}, #{lat,jdbcType=DOUBLE}, #{remark,jdbcType=VARCHAR}, - #{deleted,jdbcType=TINYINT}) + values (#{id,jdbcType=BIGINT}, #{fboxId,jdbcType=BIGINT}, #{no,jdbcType=INTEGER}, + #{name,jdbcType=VARCHAR}, #{lng,jdbcType=DOUBLE}, #{lat,jdbcType=DOUBLE}, + #{remark,jdbcType=VARCHAR},#{deleted,jdbcType=TINYINT}) </insert> <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoPr.PrStManure"> <!--@mbg.generated--> @@ -62,6 +63,9 @@ <trim prefix="(" suffix=")" suffixOverrides=","> <if test="id != null"> id, + </if> + <if test="fboxId != null"> + fbox_id, </if> <if test="no != null"> `no`, @@ -85,6 +89,9 @@ <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="id != null"> #{id,jdbcType=BIGINT}, + </if> + <if test="fboxId != null"> + #{fboxId,jdbcType=BIGINT}, </if> <if test="no != null"> #{no,jdbcType=INTEGER}, @@ -110,6 +117,9 @@ <!--@mbg.generated--> update pr_st_manure <set> + <if test="fboxId != null"> + fbox_id = #{fboxId,jdbcType=BIGINT}, + </if> <if test="no != null"> `no` = #{no,jdbcType=INTEGER}, </if> @@ -134,7 +144,8 @@ <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoPr.PrStManure"> <!--@mbg.generated--> update pr_st_manure - set `no` = #{no,jdbcType=INTEGER}, + set fbox_id = #{fboxId,jdbcType=INTEGER}, + `no` = #{no,jdbcType=INTEGER}, `name` = #{name,jdbcType=VARCHAR}, lng = #{lng,jdbcType=DOUBLE}, lat = #{lat,jdbcType=DOUBLE}, diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrStSoilMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrStSoilMapper.xml index 682efa1..598436b 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrStSoilMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrStSoilMapper.xml @@ -6,6 +6,7 @@ <!--@Table pr_st_soil--> <id column="id" jdbcType="BIGINT" property="id" /> <result column="no" jdbcType="INTEGER" property="no" /> + <result column="fbox_id" jdbcType="VARCHAR" property="fboxId" /> <result column="name" jdbcType="VARCHAR" property="name" /> <result column="lng" jdbcType="DOUBLE" property="lng" /> <result column="lat" jdbcType="DOUBLE" property="lat" /> @@ -14,11 +15,11 @@ </resultMap> <sql id="Base_Column_List"> <!--@mbg.generated--> - id, `no`, `name`, lng, lat, remark, deleted + id, fbox_id,`no`, `name`, lng, lat, remark, deleted </sql> <sql id="part_Column_List"> <!--@mbg.generated--> - id, `no`, `name`, lng, lat, remark + id, fbox_id, `no`, `name`, lng, lat, remark </sql> <sql id="simple_Column_List"> <!--@mbg.generated--> @@ -50,11 +51,11 @@ </delete> <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoPr.PrStSoil"> <!--@mbg.generated--> - insert into pr_st_soil (id, `no`, `name`, lng, + insert into pr_st_soil (id, fbox_id, `no`, `name`, lng, lat, remark, deleted) - values (#{id,jdbcType=BIGINT}, #{no,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, - #{lng,jdbcType=DOUBLE}, #{lat,jdbcType=DOUBLE}, #{remark,jdbcType=VARCHAR}, - #{deleted,jdbcType=TINYINT}) + values (#{id,jdbcType=BIGINT}, #{fboxId,jdbcType=BIGINT}, #{no,jdbcType=INTEGER}, + #{name,jdbcType=VARCHAR}, #{lng,jdbcType=DOUBLE}, #{lat,jdbcType=DOUBLE}, + #{remark,jdbcType=VARCHAR},#{deleted,jdbcType=TINYINT}) </insert> <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoPr.PrStSoil"> <!--@mbg.generated--> @@ -62,6 +63,9 @@ <trim prefix="(" suffix=")" suffixOverrides=","> <if test="id != null"> id, + </if> + <if test="fboxId != null"> + fbox_id, </if> <if test="no != null"> `no`, @@ -85,6 +89,9 @@ <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="id != null"> #{id,jdbcType=BIGINT}, + </if> + <if test="fboxId != null"> + #{fboxId,jdbcType=BIGINT}, </if> <if test="no != null"> #{no,jdbcType=INTEGER}, @@ -110,6 +117,9 @@ <!--@mbg.generated--> update pr_st_soil <set> + <if test="fboxId != null"> + fbox_id = #{fboxId,jdbcType=BIGINT}, + </if> <if test="no != null"> `no` = #{no,jdbcType=INTEGER}, </if> @@ -134,7 +144,8 @@ <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoPr.PrStSoil"> <!--@mbg.generated--> update pr_st_soil - set `no` = #{no,jdbcType=INTEGER}, + set fbox_id = #{fboxId,jdbcType=INTEGER}, + `no` = #{no,jdbcType=INTEGER}, `name` = #{name,jdbcType=VARCHAR}, lng = #{lng,jdbcType=DOUBLE}, lat = #{lat,jdbcType=DOUBLE}, diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrStWeatherMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrStWeatherMapper.xml index e971ed2..ade2d3c 100644 --- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrStWeatherMapper.xml +++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrStWeatherMapper.xml @@ -6,6 +6,7 @@ <!--@Table pr_st_weather--> <id column="id" jdbcType="BIGINT" property="id" /> <result column="no" jdbcType="INTEGER" property="no" /> + <result column="fbox_id" jdbcType="VARCHAR" property="fboxId" /> <result column="name" jdbcType="VARCHAR" property="name" /> <result column="lng" jdbcType="DOUBLE" property="lng" /> <result column="lat" jdbcType="DOUBLE" property="lat" /> @@ -14,11 +15,11 @@ </resultMap> <sql id="Base_Column_List"> <!--@mbg.generated--> - id, `no`, `name`, lng, lat, remark, deleted + id, fbox_id,`no`, `name`, lng, lat, remark, deleted </sql> <sql id="part_Column_List"> <!--@mbg.generated--> - id, `no`, `name`, lng, lat, remark + id, fbox_id, `no`, `name`, lng, lat, remark </sql> <sql id="simple_Column_List"> <!--@mbg.generated--> @@ -50,11 +51,11 @@ </delete> <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoPr.PrStWeather"> <!--@mbg.generated--> - insert into pr_st_weather (id, `no`, `name`, lng, + insert into pr_st_weather (id, fbox_id, `no`, `name`, lng, lat, remark, deleted) - values (#{id,jdbcType=BIGINT}, #{no,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, - #{lng,jdbcType=DOUBLE}, #{lat,jdbcType=DOUBLE}, #{remark,jdbcType=VARCHAR}, - #{deleted,jdbcType=TINYINT}) + values (#{id,jdbcType=BIGINT}, #{fboxId,jdbcType=BIGINT}, #{no,jdbcType=INTEGER}, + #{name,jdbcType=VARCHAR}, #{lng,jdbcType=DOUBLE}, #{lat,jdbcType=DOUBLE}, + #{remark,jdbcType=VARCHAR},#{deleted,jdbcType=TINYINT}) </insert> <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoPr.PrStWeather"> <!--@mbg.generated--> @@ -62,6 +63,9 @@ <trim prefix="(" suffix=")" suffixOverrides=","> <if test="id != null"> id, + </if> + <if test="fboxId != null"> + fbox_id, </if> <if test="no != null"> `no`, @@ -85,6 +89,9 @@ <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="id != null"> #{id,jdbcType=BIGINT}, + </if> + <if test="fboxId != null"> + #{fboxId,jdbcType=BIGINT}, </if> <if test="no != null"> #{no,jdbcType=INTEGER}, @@ -110,6 +117,9 @@ <!--@mbg.generated--> update pr_st_weather <set> + <if test="fboxId != null"> + fbox_id = #{fboxId,jdbcType=BIGINT}, + </if> <if test="no != null"> `no` = #{no,jdbcType=INTEGER}, </if> @@ -134,7 +144,8 @@ <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoPr.PrStWeather"> <!--@mbg.generated--> update pr_st_weather - set `no` = #{no,jdbcType=INTEGER}, + set fbox_id = #{fboxId,jdbcType=INTEGER}, + `no` = #{no,jdbcType=INTEGER}, `name` = #{name,jdbcType=VARCHAR}, lng = #{lng,jdbcType=DOUBLE}, lat = #{lat,jdbcType=DOUBLE}, 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 a53defb..5e701f9 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 @@ -375,15 +375,15 @@ * @return 缁撴灉 */ private BaseResponse<Command> dealMqttCommand(Command command){ - String rtuAddr = command.getRtuAddr() ; + String rtuAddr = command.getRtuAddr() ;//FBox璁惧鍙� if(rtuAddr == null || rtuAddr.trim().equals("")){ - return BaseResponseUtils.buildError(ReturnCommand.errored("鍑洪敊锛岃澶嘔D涓虹┖锛�", command.getId(), command.getCode())) ; + return BaseResponseUtils.buildError(ReturnCommand.errored("鍑洪敊锛孎Box璁惧ID涓虹┖锛�", command.getId(), command.getCode())) ; } if(!ServerProperties.mqttUnitEnable.booleanValue()){ return BaseResponseUtils.buildError(ReturnCommand.errored("鍑洪敊锛孧QTT杩炴帴妯″潡閰嶇疆鏈惎鍔紒", command.getId(), command.getCode())) ; } if(MqttManager.getInstance().poolIsClose()){ - return BaseResponseUtils.buildError(ReturnCommand.errored("鍑洪敊锛孧QTT杩炴帴姹犳按鍒涘缓鎴愬姛锛�", command.getId(), command.getCode())) ; + return BaseResponseUtils.buildError(ReturnCommand.errored("鍑洪敊锛孧QTT杩炴帴姹犳湭鍒涘缓鎴愬姛锛�", command.getId(), command.getCode())) ; } //鐢熸垚寮傛浠诲姟 diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/dto/Dto4MqttBase.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/dto/Dto4MqttBase.java new file mode 100644 index 0000000..26586ad --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/common/dto/Dto4MqttBase.java @@ -0,0 +1,33 @@ +package com.dy.pipIrrRemote.common.dto; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * @author ZhuBaoMin + * @date 2024-05-22 16:54 + * @LastEditTime 2024-05-22 16:54 + * @Description 璁剧疆鍛戒护鍩虹被 + */ + +@Data +public class Dto4MqttBase { + public static final long serialVersionUID = 202506201459001L; + + /** + * 姘磋偉鏈篒D + */ + @NotNull(message = "姘磋偉鏈轰笉鑳戒负绌�") + public Long manureId; + + /** + * 姘磋偉鏈哄悕绉� + */ + public String manureName; + + /** + * 鎿嶄綔浜� + */ + @NotNull(message = "鎿嶄綔浜轰笉鑳戒负绌�") + public Long operator; +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/common/Cd4MqttParameter.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/common/Cd4MqttParameter.java new file mode 100644 index 0000000..8e47d24 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/common/Cd4MqttParameter.java @@ -0,0 +1,16 @@ +package com.dy.pipIrrRemote.monitor.common; + +import lombok.Data; +import lombok.experimental.SuperBuilder; + +/** + * @Author: liurunyu + * @Date: 2025/5/9 16:11 + * @Description + */ +@Data +@SuperBuilder +public class Cd4MqttParameter { + //鍛戒护鍔熻兘鐮� + public String commandCode; +} 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 new file mode 100644 index 0000000..c0e4801 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/common/Com4MqttCtrl.java @@ -0,0 +1,193 @@ +package com.dy.pipIrrRemote.monitor.common; + +import com.alibaba.fastjson2.JSONObject; +import com.dy.common.mw.protocol.Command; +import com.dy.common.util.Callback; +import com.dy.common.util.IDLongGenerator; +import com.dy.common.webUtil.BaseResponse; +import com.dy.common.webUtil.BaseResponseUtils; +import com.dy.pipIrrGlobal.command.ComResultWait; +import com.dy.pipIrrGlobal.pojoPr.PrStManure; +import com.dy.pipIrrGlobal.pojoRm.RmCommandHistory; +import com.dy.pipIrrRemote.common.dto.Dto4MqttBase; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.env.Environment; +import org.springframework.validation.BindingResult; +import org.springframework.web.client.RestTemplate; + +import java.util.Objects; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.TimeUnit; + +/** + * @Author: liurunyu + * @Date: 2025/5/9 14:53 + * @Description + */ +public abstract class Com4MqttCtrl { + + @Autowired + protected Environment env ; + + @Autowired + protected RestTemplate restTemplate ; + + @Value("${mw.waitMwRtnResultTimeout}") + protected int waitMwRtnResultTimeout ; + + @Value("${mw.rtuCallbackUrl_rm}") + protected String rtuResultSendWebUrl; + + //姘磋偉鏈哄璞� + protected PrStManure ctrlPo ; + //寮傛绛夊緟鍣� + protected CompletableFuture<JSONObject> feature; + //鍛戒护鍚嶇О + protected String comName ; + //鍛戒护鏃ュ織id + protected Long comId ; + + /** + * 鍙戦�佸懡浠ゅ墠-1锛氶獙璇� + * @param comSv + * @param comCode + * @param dto + * @param bindingResult + * @return + */ + public BaseResponse<Object> pre1(Com4MqttSv comSv, String comCode, Dto4MqttBase dto, BindingResult bindingResult) { + if (bindingResult != null && bindingResult.hasErrors()) { + return BaseResponseUtils.buildError(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); + } + String msg = this.checkDto(dto) ; + if(msg != null){ + return BaseResponseUtils.buildError("鏈嶅姟绔嚭閿欙紝" + msg) ; + } + return null ; + } + + /** + * 鍙戦�佸懡浠ゅ墠-2锛氳幏寰楁暟鎹� + * @param comSv + * @param protocol + * @param protocolVer + * @param comCode + * @param dto + * @param bindingResult + * @return + */ + public BaseResponse<Object> pre2(Com4MqttSv comSv, String protocol, Short protocolVer, String comCode, Dto4MqttBase dto, BindingResult bindingResult) { + //寰楀埌姘磋偉鏈哄璞� + ctrlPo = comSv.getManure(dto.getManureId()); + if (ctrlPo == null) { + return BaseResponseUtils.buildError("鏈嶅姟绔嚭閿欙紝浠庢暟鎹簱涓湭寰楀埌姘磋偉鏈烘暟鎹�") ; + } + //妫�鏌ュ崗璁� + String msg = comSv.checkProtocol(ctrlPo) ; + if(msg != null) { + return BaseResponseUtils.buildError("鏈嶅姟绔嚭閿欙紝" + msg) ; + } + //寰楀埌鍔熻兘鐮佸搴旂殑鍛戒护鍚嶇О + comName = comSv.getCommandName(comCode, protocol, protocolVer) ; + if(comName == null) { + return BaseResponseUtils.buildError("鏈嶅姟绔嚭閿欙紝鏈緱鍒板姛鑳界爜瀵瑰簲鍛戒护鍚嶇О") ; + } + return null ; + } + /** + * 鍙戦�佸懡浠ゅ墠-3锛氫繚瀛樺懡浠ゆ棩蹇� + * @param comSv sv瀵硅薄 + * @param manureId 姘磋偉鏈篒D + * @param operator 褰撳墠鐢ㄧ櫥褰曠敤鎴穒d(鎿嶄綔浜�) + * @param protocol 鍗忚 + * @param protocolVerion 鍗忚 + * @param comCode 鍔熻兘鐮� + * @param param 鍛戒护鍙傛暟 + * @return + */ + public BaseResponse<Object> pre3(Com4MqttSv comSv, Long manureId, Long operator, String protocol, Short protocolVerion, String comCode, Cd4MqttParameter param) { + comId = new IDLongGenerator().generate(); + //鐢熸垚骞朵繚瀛樺懡浠ゆ棩蹇� + RmCommandHistory po = comSv.saveComHistoryPo(comId, + protocol + protocolVerion , + comCode, + comName, + manureId, + ctrlPo.fboxId , + param, + operator); + if(po == null){ + return BaseResponseUtils.buildError("鏈嶅姟绔嚭閿欙紝鏈兘鐢熸垚骞朵繚瀛樺懡浠ゆ棩蹇�") ; + } + return null ; + } + /** + * 鍙戦�佸懡浠ゅ墠-4锛氬噯澶嘑eature + * @return + */ + public void pre4() { + feature = new CompletableFuture<>(); + ComResultWait.put(comId, feature); + } + + /** + * 鍙戦�佸懡浠� + * @param comSv + * @param com + * @return + */ + public BaseResponse<Object> doSend(Com4MqttSv comSv, Command com){ + //寰楀埌閫氫俊涓棿浠跺彂閫佸懡浠ょ殑web URL + String rqUrl = comSv.get2MwRequestUrl(env, comSv.ContextComSend) ; + //鍚戦�氫俊涓棿浠跺彂閫亀eb璇锋眰 + BaseResponse res = comSv.sendPostRequest2Mw(restTemplate, rqUrl, com) ; + //澶勭悊閫氫俊涓棿浠跺web璇锋眰鐨勫搷搴� + String msg = comSv.dealMwDealResponse(res) ; + if(msg != null) { + return BaseResponseUtils.buildError(msg) ; + }else{ + return null ; + } + } + + /** + * 鍙戦�佸懡浠ゅ悗 + * @return + */ + public BaseResponse<Object> after(String comCode, Callback callback) { + try{ + //绛夊緟閫氫俊涓棿浠堕�氱煡姘磋偉鏈烘墽琛屽懡浠や笂琛屾暟鎹紙鍛戒护缁撴灉锛� + JSONObject resultData = feature.get(waitMwRtnResultTimeout, TimeUnit.SECONDS); + return BaseResponseUtils.buildSuccess(this.dealComResult(comCode, resultData, callback)); + }catch (Exception e){ + return BaseResponseUtils.buildFail("绛夊緟閫氫俊涓棿浠堕�氱煡鍛戒护缁撴灉瓒呮椂"); + } + } + + /** + * 鍙戦�佸懡浠ゆ渶鍚� + * @return + */ + public void end(){ + try { + //鏈�鍚庢竻闄ompletableFuture缂撳瓨 + if(ComResultWait.contain(comId)){ + ComResultWait.remove(comId); + } + }catch (Exception ee){} + } + + /** + * 楠岃瘉 + * @param dto + * @return + */ + protected abstract String checkDto(Dto4MqttBase dto) ; + + + /** + * 鐢熸垚鍛戒护杩斿洖淇℃伅 + */ + protected abstract String dealComResult(String code, JSONObject resultData, Callback callback); +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/common/Com4MqttSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/common/Com4MqttSv.java new file mode 100644 index 0000000..0b31743 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/common/Com4MqttSv.java @@ -0,0 +1,50 @@ +package com.dy.pipIrrRemote.monitor.common; + +import com.dy.pipIrrGlobal.command.Command4MqttSv; +import com.dy.pipIrrGlobal.daoPr.PrStManureMapper; +import com.dy.pipIrrGlobal.daoRm.RmCommandHistoryMapper; +import com.dy.pipIrrGlobal.pojoPr.PrStManure; +import com.dy.pipIrrGlobal.pojoRm.RmCommandHistory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; + +/** + * @Author: liurunyu + * @Date: 2025/5/9 14:45 + * @Description + */ +public class Com4MqttSv extends Command4MqttSv { + + @Autowired + protected PrStManureMapper prStManureDao ; + @Autowired + protected RmCommandHistoryMapper rmCommandHistoryDao ; + + public PrStManure getManure(Long manureId){ + return this.getManure(prStManureDao, manureId); + } + /** + * 鍒涘缓鍛戒护鏃ュ織瀵硅薄 + * + * @param comId 涓婚敭 + * @param commandCode 鍔熻兘鐮� + * @param rtuAddr 闃�鎺у櫒鍦板潃 + * @param protocol 閫氳鍗忚鍚嶇О + * @param param 鍙傛暟鏁版嵁 + * @param operator 鎿嶄綔鍛� + * @return + */ + @Transactional(rollbackFor = Exception.class) + public RmCommandHistory saveComHistoryPo(Long comId, + String protocol, + String commandCode, + String commandName, + Long manureId, + String rtuAddr, + Object param, + Long operator) { + return this.saveComHistoryPo(rmCommandHistoryDao, comId, protocol, commandCode, commandName, manureId, rtuAddr, param, operator) ; + } + + +} 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 new file mode 100644 index 0000000..1e252ec --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/fault/CdCtrl.java @@ -0,0 +1,122 @@ +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.pSdV1.CodeSdV1; +import com.dy.common.mw.protocol4Mqtt.pSdV1.ProtocolConstantSdV1; +import com.dy.common.mw.protocol4Mqtt.pSdV1.upVos.ManureVo; +import com.dy.common.util.Callback; +import com.dy.common.webUtil.BaseResponse; +import com.dy.common.webUtil.BaseResponseUtils; +import com.dy.pipIrrRemote.common.dto.Dto4MqttBase; +import com.dy.pipIrrRemote.monitor.common.Com4MqttCtrl; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.http.MediaType; +import org.springframework.validation.BindingResult; +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; + +/** + * @Author: liurunyu + * @Date: 2025/6/16 17:35 + * @Description + */ + +@Slf4j +@Tag(name = "杩滅▼鍛戒护", description = "娓呴櫎鏁呴殰") +@RestController("mqttSd1FaultCtrl") +@RequestMapping(path = "mqttSd1/faultCtrl") +@RequiredArgsConstructor +@Scope("prototype") //鍥犱负鏈夊璞$被灞炴�э紝鎵�浠ラ噰鐢ㄥ師鍨嬫ā寮忥紝姣忔璇锋眰鏂板缓涓�涓疄渚嬪璞� +public class CdCtrl extends Com4MqttCtrl { + + private static final String RtuSuccessMsg = "鎺у埗鍣ㄦ帴鏀跺苟鎵ц鍛戒护鎴愬姛锛屾棤杩斿洖鏁版嵁"; + + private static final String Protocol = ProtocolConstantSdV1.protocolName ; + private static final Short ProtocolVersion = ProtocolConstantSdV1.protocolVer ; + private static final String ComCode = CodeSdV1.cd_Fault ; + + + @Autowired + private CdSv sv ; + /** + * 鍚戣澶囷紙Mqtt涓棿浠�->FBox锛夊彂閫佸懡浠� + * @param dto 鍓嶇鍙戞潵鐨勫�煎璞� + * @param bindingResult 瀵筪to楠岃瘉鐨勭粨鏋� + * @return 杩斿洖鍓嶇 + */ + @PostMapping(path = "send", consumes = MediaType.APPLICATION_JSON_VALUE) + @SsoAop() + public BaseResponse<Object> send(@RequestBody @Valid CdDto dto, BindingResult bindingResult) { + BaseResponse<Object> res ; + //鍙戦�佸懡浠ゅ墠-1锛氶獙璇� + res = super.pre1(sv, ComCode, dto, bindingResult); + if(res == null) { + //鍙戦�佸懡浠ゅ墠-2锛氳幏寰楁暟鎹� + res = super.pre2(sv, Protocol, ProtocolVersion, ComCode, dto, bindingResult); + if (res == null) { + //鍙戦�佸懡浠ゅ墠-3锛氫繚瀛樺懡浠ゆ棩蹇� + CdParam comParam = CdParam.builder().commandCode(ComCode).build(); + res = super.pre3(sv, dto.manureId, dto.getOperator(), Protocol, ProtocolVersion, ComCode, comParam); + if (res == null) { + //鍙戦�佸懡浠ゅ墠-4锛氬噯澶嘑eature + super.pre4(); + try { + //鍒涘缓澶栭儴鍛戒护锛堝彂缁欐帶鍒跺櫒锛� + Command com = sv.createOuterCommand(ctrlPo.fboxId, "" + comId, ComCode); + com.rtuResultSendWebUrl = rtuResultSendWebUrl; + com.param = comParam ; + //鍙戦�佸懡浠� + res = super.doSend(sv, com); + if (res == null) { + //鍙戦�佸懡浠ゅ悗 + res = super.after(ComCode, null); + } + } catch (Exception e) { + res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null ? "" : e.getMessage())); + } finally { + //鏈�缁� + super.end(); + } + } + } + } + return res ; + } + + @Override + protected String checkDto(Dto4MqttBase dto) { + return null; + } + + @Override + protected String dealComResult(String code, JSONObject resultData, Callback callback){ + String msg; + if(resultData != null){ + log.info(resultData.toString()); + JSONObject codeData = resultData.getJSONObject("data") ; + if(codeData == null){ + 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/fault/CdDto.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/fault/CdDto.java index 8d9b6f1..ab368e4 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/fault/CdDto.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/fault/CdDto.java @@ -1,6 +1,6 @@ package com.dy.pipIrrRemote.monitor.mqttSd1.fault; -import com.dy.pipIrrRemote.common.dto.DtoBase; +import com.dy.pipIrrRemote.common.dto.Dto4MqttBase; import lombok.Data; import lombok.EqualsAndHashCode; @@ -11,6 +11,6 @@ */ @Data @EqualsAndHashCode(callSuper=true) -public class CdDto extends DtoBase { - public static final long serialVersionUID = 202506161739001L; +public class CdDto extends Dto4MqttBase { + public static final long serialVersionUID = 202506501650001L; } diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/fault/CdParam.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/fault/CdParam.java index 6fde608..83dc00c 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/fault/CdParam.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/fault/CdParam.java @@ -1,9 +1,19 @@ package com.dy.pipIrrRemote.monitor.mqttSd1.fault; +import com.dy.pipIrrRemote.monitor.common.Cd4MqttParameter; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import lombok.experimental.SuperBuilder; + /** * @Author: liurunyu * @Date: 2025/6/16 17:36 * @Description */ -public class CdParam { +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +@SuperBuilder +public class CdParam extends Cd4MqttParameter { } diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/fault/CdStartCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/fault/CdStartCtrl.java deleted file mode 100644 index 1a182a9..0000000 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/fault/CdStartCtrl.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.dy.pipIrrRemote.monitor.mqttSd1.fault; - -import com.alibaba.fastjson2.JSONObject; -import com.dy.common.util.Callback; -import com.dy.pipIrrRemote.common.dto.DtoBase; -import com.dy.pipIrrRemote.monitor.common.ComCtrl; -import io.swagger.v3.oas.annotations.tags.Tag; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Scope; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * @Author: liurunyu - * @Date: 2025/6/16 17:35 - * @Description - */ - -@Slf4j -@Tag(name = "杩滅▼鍛戒护", description = "娓呴櫎鏁呴殰") -@RestController("mqttSd1FaultStartCtrl") -@RequestMapping(path = "mqttSd1/faultStartCtrl") -@RequiredArgsConstructor -@Scope("prototype") //鍥犱负鏈夊璞$被灞炴�э紝鎵�浠ラ噰鐢ㄥ師鍨嬫ā寮忥紝姣忔璇锋眰鏂板缓涓�涓疄渚嬪璞� -public class CdStartCtrl extends ComCtrl { - - private static final String RtuSuccessMsg = "鎺у埗鍣ㄦ帴鏀跺苟鎵ц鍛戒护鎴愬姛锛屾棤杩斿洖鏁版嵁"; - - private static final String ComCode = "5B" ; - - @Autowired - private CdSv sv ; - - @Override - protected String checkDto(DtoBase dto) { - return null; - } - - @Override - protected String dealComResult(String code, JSONObject resultData, Callback callback) { - return null; - } -} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/fault/CdStopCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/fault/CdStopCtrl.java deleted file mode 100644 index e8e4617..0000000 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/fault/CdStopCtrl.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.dy.pipIrrRemote.monitor.mqttSd1.fault; - -/** - * @Author: liurunyu - * @Date: 2025/6/16 17:35 - * @Description - */ -public class CdStopCtrl { -} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/fault/CdSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/fault/CdSv.java index e1a3f6d..d28981f 100644 --- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/fault/CdSv.java +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/fault/CdSv.java @@ -1,6 +1,6 @@ package com.dy.pipIrrRemote.monitor.mqttSd1.fault; -import com.dy.pipIrrRemote.monitor.common.ComSv; +import com.dy.pipIrrRemote.monitor.common.Com4MqttSv; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -10,6 +10,6 @@ * @Description */ @Slf4j -@Service("faultSv") -public class CdSv extends ComSv { +@Service("mqttSd1FaultSv") +public class CdSv extends Com4MqttSv { } \ No newline at end of file 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 new file mode 100644 index 0000000..74ac28b --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/inject/CdCtrl.java @@ -0,0 +1,122 @@ +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.pSdV1.CodeSdV1; +import com.dy.common.mw.protocol4Mqtt.pSdV1.ProtocolConstantSdV1; +import com.dy.common.mw.protocol4Mqtt.pSdV1.upVos.ManureVo; +import com.dy.common.util.Callback; +import com.dy.common.webUtil.BaseResponse; +import com.dy.common.webUtil.BaseResponseUtils; +import com.dy.pipIrrRemote.common.dto.Dto4MqttBase; +import com.dy.pipIrrRemote.monitor.common.Com4MqttCtrl; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.http.MediaType; +import org.springframework.validation.BindingResult; +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; + +/** + * @Author: liurunyu + * @Date: 2025/6/16 17:35 + * @Description + */ + +@Slf4j +@Tag(name = "杩滅▼鍛戒护", description = "娓呴櫎鏁呴殰") +@RestController("mqttSd1InjectCtrl") +@RequestMapping(path = "mqttSd1/injectCtrl") +@RequiredArgsConstructor +@Scope("prototype") //鍥犱负鏈夊璞$被灞炴�э紝鎵�浠ラ噰鐢ㄥ師鍨嬫ā寮忥紝姣忔璇锋眰鏂板缓涓�涓疄渚嬪璞� +public class CdCtrl extends Com4MqttCtrl { + + private static final String RtuSuccessMsg = "鎺у埗鍣ㄦ帴鏀跺苟鎵ц鍛戒护鎴愬姛锛屾棤杩斿洖鏁版嵁"; + + private static final String Protocol = ProtocolConstantSdV1.protocolName ; + private static final Short ProtocolVersion = ProtocolConstantSdV1.protocolVer ; + private static final String ComCode = CodeSdV1.cd_Inject ; + + + @Autowired + private CdSv sv ; + /** + * 鍚戣澶囷紙Mqtt涓棿浠�->FBox锛夊彂閫佸懡浠� + * @param dto 鍓嶇鍙戞潵鐨勫�煎璞� + * @param bindingResult 瀵筪to楠岃瘉鐨勭粨鏋� + * @return 杩斿洖鍓嶇 + */ + @PostMapping(path = "send", consumes = MediaType.APPLICATION_JSON_VALUE) + @SsoAop() + public BaseResponse<Object> send(@RequestBody @Valid CdDto dto, BindingResult bindingResult) { + BaseResponse<Object> res ; + //鍙戦�佸懡浠ゅ墠-1锛氶獙璇� + res = super.pre1(sv, ComCode, dto, bindingResult); + if(res == null) { + //鍙戦�佸懡浠ゅ墠-2锛氳幏寰楁暟鎹� + res = super.pre2(sv, Protocol, ProtocolVersion, ComCode, dto, bindingResult); + if (res == null) { + //鍙戦�佸懡浠ゅ墠-3锛氫繚瀛樺懡浠ゆ棩蹇� + CdParam comParam = CdParam.builder().commandCode(ComCode).build(); + res = super.pre3(sv, dto.manureId, dto.getOperator(), Protocol, ProtocolVersion, ComCode, comParam); + if (res == null) { + //鍙戦�佸懡浠ゅ墠-4锛氬噯澶嘑eature + super.pre4(); + try { + //鍒涘缓澶栭儴鍛戒护锛堝彂缁欐帶鍒跺櫒锛� + Command com = sv.createOuterCommand(ctrlPo.fboxId, "" + comId, ComCode); + com.rtuResultSendWebUrl = rtuResultSendWebUrl; + com.param = comParam ; + //鍙戦�佸懡浠� + res = super.doSend(sv, com); + if (res == null) { + //鍙戦�佸懡浠ゅ悗 + res = super.after(ComCode, null); + } + } catch (Exception e) { + res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null ? "" : e.getMessage())); + } finally { + //鏈�缁� + super.end(); + } + } + } + } + return res ; + } + + @Override + protected String checkDto(Dto4MqttBase dto) { + return null; + } + + @Override + protected String dealComResult(String code, JSONObject resultData, Callback callback){ + String msg; + if(resultData != null){ + log.info(resultData.toString()); + JSONObject codeData = resultData.getJSONObject("data") ; + if(codeData == null){ + 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/CdDto.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/inject/CdDto.java new file mode 100644 index 0000000..2d8fef0 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/inject/CdDto.java @@ -0,0 +1,16 @@ +package com.dy.pipIrrRemote.monitor.mqttSd1.inject; + +import com.dy.pipIrrRemote.common.dto.Dto4MqttBase; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @Author: liurunyu + * @Date: 2025/6/16 17:36 + * @Description + */ +@Data +@EqualsAndHashCode(callSuper=true) +public class CdDto extends Dto4MqttBase { + public static final long serialVersionUID = 202506201653001L; +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/inject/CdParam.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/inject/CdParam.java new file mode 100644 index 0000000..4293627 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/inject/CdParam.java @@ -0,0 +1,19 @@ +package com.dy.pipIrrRemote.monitor.mqttSd1.inject; + +import com.dy.pipIrrRemote.monitor.common.Cd4MqttParameter; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import lombok.experimental.SuperBuilder; + +/** + * @Author: liurunyu + * @Date: 2025/6/16 17:36 + * @Description + */ +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +@SuperBuilder +public class CdParam extends Cd4MqttParameter { +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/inject/CdSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/inject/CdSv.java new file mode 100644 index 0000000..c03f344 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/inject/CdSv.java @@ -0,0 +1,15 @@ +package com.dy.pipIrrRemote.monitor.mqttSd1.inject; + +import com.dy.pipIrrRemote.monitor.common.Com4MqttSv; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Author: liurunyu + * @Date: 2025/6/16 17:36 + * @Description + */ +@Slf4j +@Service("mqttSd1InjectSv") +public class CdSv extends Com4MqttSv { +} \ No newline at end of file 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 new file mode 100644 index 0000000..f808c95 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/irr/CdCtrl.java @@ -0,0 +1,122 @@ +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.pSdV1.CodeSdV1; +import com.dy.common.mw.protocol4Mqtt.pSdV1.ProtocolConstantSdV1; +import com.dy.common.mw.protocol4Mqtt.pSdV1.upVos.ManureVo; +import com.dy.common.util.Callback; +import com.dy.common.webUtil.BaseResponse; +import com.dy.common.webUtil.BaseResponseUtils; +import com.dy.pipIrrRemote.common.dto.Dto4MqttBase; +import com.dy.pipIrrRemote.monitor.common.Com4MqttCtrl; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.http.MediaType; +import org.springframework.validation.BindingResult; +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; + +/** + * @Author: liurunyu + * @Date: 2025/6/16 17:35 + * @Description + */ + +@Slf4j +@Tag(name = "杩滅▼鍛戒护", description = "娓呴櫎鏁呴殰") +@RestController("mqttSd1IrrCtrl") +@RequestMapping(path = "mqttSd1/irrCtrl") +@RequiredArgsConstructor +@Scope("prototype") //鍥犱负鏈夊璞$被灞炴�э紝鎵�浠ラ噰鐢ㄥ師鍨嬫ā寮忥紝姣忔璇锋眰鏂板缓涓�涓疄渚嬪璞� +public class CdCtrl extends Com4MqttCtrl { + + private static final String RtuSuccessMsg = "鎺у埗鍣ㄦ帴鏀跺苟鎵ц鍛戒护鎴愬姛锛屾棤杩斿洖鏁版嵁"; + + private static final String Protocol = ProtocolConstantSdV1.protocolName ; + private static final Short ProtocolVersion = ProtocolConstantSdV1.protocolVer ; + private static final String ComCode = CodeSdV1.cd_Irr ; + + + @Autowired + private CdSv sv ; + /** + * 鍚戣澶囷紙Mqtt涓棿浠�->FBox锛夊彂閫佸懡浠� + * @param dto 鍓嶇鍙戞潵鐨勫�煎璞� + * @param bindingResult 瀵筪to楠岃瘉鐨勭粨鏋� + * @return 杩斿洖鍓嶇 + */ + @PostMapping(path = "send", consumes = MediaType.APPLICATION_JSON_VALUE) + @SsoAop() + public BaseResponse<Object> send(@RequestBody @Valid CdDto dto, BindingResult bindingResult) { + BaseResponse<Object> res ; + //鍙戦�佸懡浠ゅ墠-1锛氶獙璇� + res = super.pre1(sv, ComCode, dto, bindingResult); + if(res == null) { + //鍙戦�佸懡浠ゅ墠-2锛氳幏寰楁暟鎹� + res = super.pre2(sv, Protocol, ProtocolVersion, ComCode, dto, bindingResult); + if (res == null) { + //鍙戦�佸懡浠ゅ墠-3锛氫繚瀛樺懡浠ゆ棩蹇� + CdParam comParam = CdParam.builder().commandCode(ComCode).build(); + res = super.pre3(sv, dto.manureId, dto.getOperator(), Protocol, ProtocolVersion, ComCode, comParam); + if (res == null) { + //鍙戦�佸懡浠ゅ墠-4锛氬噯澶嘑eature + super.pre4(); + try { + //鍒涘缓澶栭儴鍛戒护锛堝彂缁欐帶鍒跺櫒锛� + Command com = sv.createOuterCommand(ctrlPo.fboxId, "" + comId, ComCode); + com.rtuResultSendWebUrl = rtuResultSendWebUrl; + com.param = comParam ; + //鍙戦�佸懡浠� + res = super.doSend(sv, com); + if (res == null) { + //鍙戦�佸懡浠ゅ悗 + res = super.after(ComCode, null); + } + } catch (Exception e) { + res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null ? "" : e.getMessage())); + } finally { + //鏈�缁� + super.end(); + } + } + } + } + return res ; + } + + @Override + protected String checkDto(Dto4MqttBase dto) { + return null; + } + + @Override + protected String dealComResult(String code, JSONObject resultData, Callback callback){ + String msg; + if(resultData != null){ + log.info(resultData.toString()); + JSONObject codeData = resultData.getJSONObject("data") ; + if(codeData == null){ + 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/CdDto.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/irr/CdDto.java new file mode 100644 index 0000000..466869e --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/irr/CdDto.java @@ -0,0 +1,16 @@ +package com.dy.pipIrrRemote.monitor.mqttSd1.irr; + +import com.dy.pipIrrRemote.common.dto.Dto4MqttBase; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @Author: liurunyu + * @Date: 2025/6/16 17:36 + * @Description + */ +@Data +@EqualsAndHashCode(callSuper=true) +public class CdDto extends Dto4MqttBase { + public static final long serialVersionUID = 202506201654001L; +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/irr/CdParam.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/irr/CdParam.java new file mode 100644 index 0000000..ffec185 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/irr/CdParam.java @@ -0,0 +1,19 @@ +package com.dy.pipIrrRemote.monitor.mqttSd1.irr; + +import com.dy.pipIrrRemote.monitor.common.Cd4MqttParameter; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import lombok.experimental.SuperBuilder; + +/** + * @Author: liurunyu + * @Date: 2025/6/16 17:36 + * @Description + */ +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +@SuperBuilder +public class CdParam extends Cd4MqttParameter { +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/irr/CdSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/irr/CdSv.java new file mode 100644 index 0000000..ae5e083 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/irr/CdSv.java @@ -0,0 +1,15 @@ +package com.dy.pipIrrRemote.monitor.mqttSd1.irr; + +import com.dy.pipIrrRemote.monitor.common.Com4MqttSv; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Author: liurunyu + * @Date: 2025/6/16 17:36 + * @Description + */ +@Slf4j +@Service("mqttSd1IrrSv") +public class CdSv extends Com4MqttSv { +} \ No newline at end of file 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 new file mode 100644 index 0000000..b74db25 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/paramSet/CdCtrl.java @@ -0,0 +1,122 @@ +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.pSdV1.CodeSdV1; +import com.dy.common.mw.protocol4Mqtt.pSdV1.ProtocolConstantSdV1; +import com.dy.common.mw.protocol4Mqtt.pSdV1.upVos.ManureVo; +import com.dy.common.util.Callback; +import com.dy.common.webUtil.BaseResponse; +import com.dy.common.webUtil.BaseResponseUtils; +import com.dy.pipIrrRemote.common.dto.Dto4MqttBase; +import com.dy.pipIrrRemote.monitor.common.Com4MqttCtrl; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.http.MediaType; +import org.springframework.validation.BindingResult; +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; + +/** + * @Author: liurunyu + * @Date: 2025/6/16 17:35 + * @Description + */ + +@Slf4j +@Tag(name = "杩滅▼鍛戒护", description = "娓呴櫎鏁呴殰") +@RestController("mqttSd1ParamCtrl") +@RequestMapping(path = "mqttSd1/paramCtrl") +@RequiredArgsConstructor +@Scope("prototype") //鍥犱负鏈夊璞$被灞炴�э紝鎵�浠ラ噰鐢ㄥ師鍨嬫ā寮忥紝姣忔璇锋眰鏂板缓涓�涓疄渚嬪璞� +public class CdCtrl extends Com4MqttCtrl { + + private static final String RtuSuccessMsg = "鎺у埗鍣ㄦ帴鏀跺苟鎵ц鍛戒护鎴愬姛锛屾棤杩斿洖鏁版嵁"; + + private static final String Protocol = ProtocolConstantSdV1.protocolName ; + private static final Short ProtocolVersion = ProtocolConstantSdV1.protocolVer ; + private static final String ComCode = CodeSdV1.cd_Param ; + + + @Autowired + private CdSv sv ; + /** + * 鍚戣澶囷紙Mqtt涓棿浠�->FBox锛夊彂閫佸懡浠� + * @param dto 鍓嶇鍙戞潵鐨勫�煎璞� + * @param bindingResult 瀵筪to楠岃瘉鐨勭粨鏋� + * @return 杩斿洖鍓嶇 + */ + @PostMapping(path = "send", consumes = MediaType.APPLICATION_JSON_VALUE) + @SsoAop() + public BaseResponse<Object> send(@RequestBody @Valid CdDto dto, BindingResult bindingResult) { + BaseResponse<Object> res ; + //鍙戦�佸懡浠ゅ墠-1锛氶獙璇� + res = super.pre1(sv, ComCode, dto, bindingResult); + if(res == null) { + //鍙戦�佸懡浠ゅ墠-2锛氳幏寰楁暟鎹� + res = super.pre2(sv, Protocol, ProtocolVersion, ComCode, dto, bindingResult); + if (res == null) { + //鍙戦�佸懡浠ゅ墠-3锛氫繚瀛樺懡浠ゆ棩蹇� + CdParam comParam = CdParam.builder().commandCode(ComCode).build(); + res = super.pre3(sv, dto.manureId, dto.getOperator(), Protocol, ProtocolVersion, ComCode, comParam); + if (res == null) { + //鍙戦�佸懡浠ゅ墠-4锛氬噯澶嘑eature + super.pre4(); + try { + //鍒涘缓澶栭儴鍛戒护锛堝彂缁欐帶鍒跺櫒锛� + Command com = sv.createOuterCommand(ctrlPo.fboxId, "" + comId, ComCode); + com.rtuResultSendWebUrl = rtuResultSendWebUrl; + com.param = comParam ; + //鍙戦�佸懡浠� + res = super.doSend(sv, com); + if (res == null) { + //鍙戦�佸懡浠ゅ悗 + res = super.after(ComCode, null); + } + } catch (Exception e) { + res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null ? "" : e.getMessage())); + } finally { + //鏈�缁� + super.end(); + } + } + } + } + return res ; + } + + @Override + protected String checkDto(Dto4MqttBase dto) { + return null; + } + + @Override + protected String dealComResult(String code, JSONObject resultData, Callback callback){ + String msg; + if(resultData != null){ + log.info(resultData.toString()); + JSONObject codeData = resultData.getJSONObject("data") ; + if(codeData == null){ + 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 new file mode 100644 index 0000000..d80897a --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/paramSet/CdDto.java @@ -0,0 +1,16 @@ +package com.dy.pipIrrRemote.monitor.mqttSd1.paramSet; + +import com.dy.pipIrrRemote.common.dto.Dto4MqttBase; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @Author: liurunyu + * @Date: 2025/6/16 17:36 + * @Description + */ +@Data +@EqualsAndHashCode(callSuper=true) +public class CdDto extends Dto4MqttBase { + public static final long serialVersionUID = 202506201656001L; +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/paramSet/CdParam.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/paramSet/CdParam.java new file mode 100644 index 0000000..c905f87 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/paramSet/CdParam.java @@ -0,0 +1,19 @@ +package com.dy.pipIrrRemote.monitor.mqttSd1.paramSet; + +import com.dy.pipIrrRemote.monitor.common.Cd4MqttParameter; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import lombok.experimental.SuperBuilder; + +/** + * @Author: liurunyu + * @Date: 2025/6/16 17:36 + * @Description + */ +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +@SuperBuilder +public class CdParam extends Cd4MqttParameter { +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/paramSet/CdSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/paramSet/CdSv.java new file mode 100644 index 0000000..98f1e66 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/paramSet/CdSv.java @@ -0,0 +1,15 @@ +package com.dy.pipIrrRemote.monitor.mqttSd1.paramSet; + +import com.dy.pipIrrRemote.monitor.common.Com4MqttSv; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Author: liurunyu + * @Date: 2025/6/16 17:36 + * @Description + */ +@Slf4j +@Service("mqttSd1ParamSv") +public class CdSv extends Com4MqttSv { +} \ No newline at end of file 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 new file mode 100644 index 0000000..b39d06c --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/stir/CdCtrl.java @@ -0,0 +1,122 @@ +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.pSdV1.CodeSdV1; +import com.dy.common.mw.protocol4Mqtt.pSdV1.ProtocolConstantSdV1; +import com.dy.common.mw.protocol4Mqtt.pSdV1.upVos.ManureVo; +import com.dy.common.util.Callback; +import com.dy.common.webUtil.BaseResponse; +import com.dy.common.webUtil.BaseResponseUtils; +import com.dy.pipIrrRemote.common.dto.Dto4MqttBase; +import com.dy.pipIrrRemote.monitor.common.Com4MqttCtrl; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.http.MediaType; +import org.springframework.validation.BindingResult; +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; + +/** + * @Author: liurunyu + * @Date: 2025/6/16 17:35 + * @Description + */ + +@Slf4j +@Tag(name = "杩滅▼鍛戒护", description = "娓呴櫎鏁呴殰") +@RestController("mqttSd1StirCtrl") +@RequestMapping(path = "mqttSd1/stirCtrl") +@RequiredArgsConstructor +@Scope("prototype") //鍥犱负鏈夊璞$被灞炴�э紝鎵�浠ラ噰鐢ㄥ師鍨嬫ā寮忥紝姣忔璇锋眰鏂板缓涓�涓疄渚嬪璞� +public class CdCtrl extends Com4MqttCtrl { + + private static final String RtuSuccessMsg = "鎺у埗鍣ㄦ帴鏀跺苟鎵ц鍛戒护鎴愬姛锛屾棤杩斿洖鏁版嵁"; + + private static final String Protocol = ProtocolConstantSdV1.protocolName ; + private static final Short ProtocolVersion = ProtocolConstantSdV1.protocolVer ; + private static final String ComCode = CodeSdV1.cd_Stir ; + + + @Autowired + private CdSv sv ; + /** + * 鍚戣澶囷紙Mqtt涓棿浠�->FBox锛夊彂閫佸懡浠� + * @param dto 鍓嶇鍙戞潵鐨勫�煎璞� + * @param bindingResult 瀵筪to楠岃瘉鐨勭粨鏋� + * @return 杩斿洖鍓嶇 + */ + @PostMapping(path = "send", consumes = MediaType.APPLICATION_JSON_VALUE) + @SsoAop() + public BaseResponse<Object> send(@RequestBody @Valid CdDto dto, BindingResult bindingResult) { + BaseResponse<Object> res ; + //鍙戦�佸懡浠ゅ墠-1锛氶獙璇� + res = super.pre1(sv, ComCode, dto, bindingResult); + if(res == null) { + //鍙戦�佸懡浠ゅ墠-2锛氳幏寰楁暟鎹� + res = super.pre2(sv, Protocol, ProtocolVersion, ComCode, dto, bindingResult); + if (res == null) { + //鍙戦�佸懡浠ゅ墠-3锛氫繚瀛樺懡浠ゆ棩蹇� + CdParam comParam = CdParam.builder().commandCode(ComCode).build(); + res = super.pre3(sv, dto.manureId, dto.getOperator(), Protocol, ProtocolVersion, ComCode, comParam); + if (res == null) { + //鍙戦�佸懡浠ゅ墠-4锛氬噯澶嘑eature + super.pre4(); + try { + //鍒涘缓澶栭儴鍛戒护锛堝彂缁欐帶鍒跺櫒锛� + Command com = sv.createOuterCommand(ctrlPo.fboxId, "" + comId, ComCode); + com.rtuResultSendWebUrl = rtuResultSendWebUrl; + com.param = comParam ; + //鍙戦�佸懡浠� + res = super.doSend(sv, com); + if (res == null) { + //鍙戦�佸懡浠ゅ悗 + res = super.after(ComCode, null); + } + } catch (Exception e) { + res = BaseResponseUtils.buildFail("鏈嶅姟绔瀯閫犲苟鍚戦�氫俊涓棿浠跺彂閫佽姹傛椂寮傚父" + (e.getMessage() == null ? "" : e.getMessage())); + } finally { + //鏈�缁� + super.end(); + } + } + } + } + return res ; + } + + @Override + protected String checkDto(Dto4MqttBase dto) { + return null; + } + + @Override + protected String dealComResult(String code, JSONObject resultData, Callback callback){ + String msg; + if(resultData != null){ + log.info(resultData.toString()); + JSONObject codeData = resultData.getJSONObject("data") ; + if(codeData == null){ + 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 new file mode 100644 index 0000000..54f2946 --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/stir/CdDto.java @@ -0,0 +1,16 @@ +package com.dy.pipIrrRemote.monitor.mqttSd1.stir; + +import com.dy.pipIrrRemote.common.dto.Dto4MqttBase; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @Author: liurunyu + * @Date: 2025/6/16 17:36 + * @Description + */ +@Data +@EqualsAndHashCode(callSuper=true) +public class CdDto extends Dto4MqttBase { + public static final long serialVersionUID = 202506201655001L; +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/stir/CdParam.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/stir/CdParam.java new file mode 100644 index 0000000..9d026bd --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/stir/CdParam.java @@ -0,0 +1,19 @@ +package com.dy.pipIrrRemote.monitor.mqttSd1.stir; + +import com.dy.pipIrrRemote.monitor.common.Cd4MqttParameter; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import lombok.experimental.SuperBuilder; + +/** + * @Author: liurunyu + * @Date: 2025/6/16 17:36 + * @Description + */ +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +@SuperBuilder +public class CdParam extends Cd4MqttParameter { +} diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/stir/CdSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/stir/CdSv.java new file mode 100644 index 0000000..0587c4d --- /dev/null +++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/mqttSd1/stir/CdSv.java @@ -0,0 +1,15 @@ +package com.dy.pipIrrRemote.monitor.mqttSd1.stir; + +import com.dy.pipIrrRemote.monitor.common.Com4MqttSv; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +/** + * @Author: liurunyu + * @Date: 2025/6/16 17:36 + * @Description + */ +@Slf4j +@Service("mqttSd1StirSv") +public class CdSv extends Com4MqttSv { +} \ No newline at end of file diff --git "a/pipIrr-platform/\346\226\207\346\241\243/\346\260\264\350\202\245\346\260\224\350\261\241\345\242\222\346\203\205/FlexManager\350\275\257\344\273\266\351\205\215\347\275\256\345\217\202\346\225\260.docx" "b/pipIrr-platform/\346\226\207\346\241\243/\346\260\264\350\202\245\346\260\224\350\261\241\345\242\222\346\203\205/FlexManager\350\275\257\344\273\266\351\205\215\347\275\256\345\217\202\346\225\260.docx" new file mode 100644 index 0000000..c544565 --- /dev/null +++ "b/pipIrr-platform/\346\226\207\346\241\243/\346\260\264\350\202\245\346\260\224\350\261\241\345\242\222\346\203\205/FlexManager\350\275\257\344\273\266\351\205\215\347\275\256\345\217\202\346\225\260.docx" Binary files differ -- Gitblit v1.8.0