From 566d6dba9ac3309a716efa43ecbeaaf09e46e394 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期五, 27 六月 2025 16:33:48 +0800
Subject: [PATCH] 表阀一体机协议增加35、36、37、38、9D功能码协议实现
---
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_35_Down.java | 225 +++++++++
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd38Vo.java | 23
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlParse.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_36_Down.java | 225 +++++++++
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd93_9D_A3Vo.java | 6
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_37_Down.java | 267 +++++++++++
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cdA3/CdCtrl.java | 5
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd35Vo.java | 16
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd36Vo.java | 16
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd37Vo.java | 23
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_38_Down.java | 266 +++++++++++
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/CodeV202404.java | 15
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_35_36_37_38Up.java | 92 +++
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd93/CdCtrl.java | 4
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd9DVo.java | 12
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd35_36Vo.java | 114 ++++
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9D_Down.java | 120 +++++
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_93_A3_Up.java | 7
18 files changed, 1,425 insertions(+), 13 deletions(-)
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/CodeV202404.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/CodeV202404.java
index 3bce602..9cd3273 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/CodeV202404.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/CodeV202404.java
@@ -41,6 +41,12 @@
public static final String cd_9B = "9B" ; //娓呴櫎璁惧缁堢娉ㄥ唽鍙�
public static final String cd_9C = "9C" ; //榛戝悕鍗曡繙绋嬪己鍒跺叧闂按娉�/闃�闂�
public static final String cd_C2 = "C2" ; //寮�鍏虫按娉�/闃�闂ㄦ垚鍔�/澶辫触涓婃姤
+ public static final String cd_9D = "9D" ; //姝e父杩滅▼鍏抽棴姘存车/闃�闂�
+
+ public static final String cd_35 = "35" ; //APP绔繙绋嬪畾鏃跺紑鍚按娉�/闃�闂�
+ public static final String cd_36 = "36" ; //APP绔繙绋嬪畾閲忓紑鍚按娉�/闃�闂�
+ public static final String cd_37 = "37" ; //APP绔鍒掕繙绋嬪畾鏃跺紑鍚按娉�/闃�闂�
+ public static final String cd_38 = "38" ; //APP绔繙绋嬭鍒掑畾閲忓紑鍚按娉�/闃�闂�
public static final String cd_1600 = "1600" ;//鍗囩骇澶嶄綅
public static final String cd_1601 = "1601" ;//鍗囩骇閰嶇疆
@@ -90,6 +96,13 @@
(code.equals(cd_9B) ? "娓呴櫎璁惧缁堢娉ㄥ唽鍙�" :
(code.equals(cd_9C) ? "榛戝悕鍗曡繙绋嬪己鍒跺叧闂按娉�/闃�闂�" :
(code.equals(cd_C2) ? "寮�鍏虫按娉�/闃�闂ㄧ粨鏋滀笂鎶�" :
+ (code.equals(cd_9D) ? "姝e父杩滅▼鍏抽棴姘存车/闃�闂�" :
+
+ (code.equals(cd_35) ? "APP绔繙绋嬪畾鏃跺紑鍚按娉�/闃�闂�" :
+ (code.equals(cd_36) ? "APP绔繙绋嬪畾閲忓紑鍚按娉�/闃�闂�" :
+ (code.equals(cd_37) ? "APP绔鍒掕繙绋嬪畾鏃跺紑鍚按娉�/闃�闂�" :
+ (code.equals(cd_38) ? "APP绔繙绋嬭鍒掑畾閲忓紑鍚按娉�/闃�闂�" :
+
(code.equals(cd_1600) ? "鍗囩骇澶嶄綅" :
(code.equals(cd_1601) ? "鍗囩骇閰嶇疆" :
(code.equals(cd_1602) ? "鍗囩骇鏁版嵁" :
@@ -97,7 +110,7 @@
(code.equals(cd_9601) ? "鍗囩骇閰嶇疆" :
(code.equals(cd_9602) ? "鍗囩骇鏁版嵁" :
(code.equals(cd_9603) ? "鍗囩骇鏍¢獙" :
- "")))))))))))))))))))))))))))))))))))))))))))))) ;
+ ""))))))))))))))))))))))))))))))))))))))))))))))))))) ;
if(name == null || name.equals("")){
name = code ;
}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd35Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd35Vo.java
new file mode 100644
index 0000000..5110913
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd35Vo.java
@@ -0,0 +1,16 @@
+package com.dy.common.mw.protocol.p206V202404.downVos;
+
+import lombok.Data;
+
+@Data
+public class ComCd35Vo {
+ public String controllerType;//鎺у埗鍣ㄧ被鍨� 01锛�0x01锛�:娴嬫帶涓�浣撻榾锛�02锛�0x02锛�:琛ㄩ榾涓�浣撴満锛�57(0x57):浜曠數鎺у埗鍣�
+ public Integer projectNo ;//椤圭洰缂栧彿
+ public String icCardNo ;//鐢ㄦ埛鍗″簭鍒楀彿锛�17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛�
+ public Double waterRemain ;//鐢ㄦ埛鍓╀綑姘撮噺, 涓や釜灏忔暟鐐�, 鍗曚綅m3, 0~99999999.99
+ public Double moneyRemain ;//鐢ㄦ埛鍓╀綑閲戦, 涓や釜灏忔暟鐐�, 鍗曚綅鍏�, 0~999999.99
+ public Double waterPrice ;//姘撮噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣
+ public Double elePrice ;//鐢甸噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣
+ public String orderNo ;//璁㈠崟鍙凤紙16浣嶆暟瀛楋級
+ public Integer minutes ;//鐢ㄦ按鏃堕暱锛�0~9999鍒嗛挓锛�
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd36Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd36Vo.java
new file mode 100644
index 0000000..8d99591
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd36Vo.java
@@ -0,0 +1,16 @@
+package com.dy.common.mw.protocol.p206V202404.downVos;
+
+import lombok.Data;
+
+@Data
+public class ComCd36Vo {
+ public String controllerType;//鎺у埗鍣ㄧ被鍨� 01锛�0x01锛�:娴嬫帶涓�浣撻榾锛�02锛�0x02锛�:琛ㄩ榾涓�浣撴満锛�57(0x57):浜曠數鎺у埗鍣�
+ public Integer projectNo ;//椤圭洰缂栧彿
+ public String icCardNo ;//鐢ㄦ埛鍗″簭鍒楀彿锛�17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛�
+ public Double waterRemain ;//鐢ㄦ埛鍓╀綑姘撮噺, 涓や釜灏忔暟鐐�, 鍗曚綅m3, 0~99999999.99
+ public Double moneyRemain ;//鐢ㄦ埛鍓╀綑閲戦, 涓や釜灏忔暟鐐�, 鍗曚綅鍏�, 0~999999.99
+ public Double waterPrice ;//姘撮噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣
+ public Double elePrice ;//鐢甸噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣
+ public String orderNo ;//璁㈠崟鍙凤紙16浣嶆暟瀛楋級
+ public Integer waterAmount ;//棰勭敤姘撮噺锛�0~9999 m3锛�
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd37Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd37Vo.java
new file mode 100644
index 0000000..2b300ff
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd37Vo.java
@@ -0,0 +1,23 @@
+package com.dy.common.mw.protocol.p206V202404.downVos;
+
+import lombok.Data;
+
+@Data
+public class ComCd37Vo {
+ public String controllerType;//鎺у埗鍣ㄧ被鍨� 01锛�0x01锛�:娴嬫帶涓�浣撻榾锛�02锛�0x02锛�:琛ㄩ榾涓�浣撴満锛�57(0x57):浜曠數鎺у埗鍣�
+ public Integer projectNo ;//椤圭洰缂栧彿
+ public String icCardNo ;//鐢ㄦ埛鍗″簭鍒楀彿锛�17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛�
+ public Double waterRemain ;//鐢ㄦ埛鍓╀綑姘撮噺, 涓や釜灏忔暟鐐�, 鍗曚綅m3, 0~99999999.99
+ public Double moneyRemain ;//鐢ㄦ埛鍓╀綑閲戦, 涓や釜灏忔暟鐐�, 鍗曚綅鍏�, 0~999999.99
+ public Double waterPrice ;//姘撮噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣
+ public Double elePrice ;//鐢甸噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣
+ public String orderNo ;//璁㈠崟鍙凤紙16浣嶆暟瀛楋級
+
+ public Integer year ; //璁″垝寮�闃�鏃堕棿---骞�
+ public Integer month ;//璁″垝寮�闃�鏃堕棿---鏈�
+ public Integer day ;//璁″垝寮�闃�鏃堕棿---鏃�
+ public Integer hour ;//璁″垝寮�闃�鏃堕棿---鏃�
+ public Integer minute ;//璁″垝寮�闃�鏃堕棿---鍒�
+
+ public Integer minutes ;//鐢ㄦ按鏃堕暱锛�0~9999鍒嗛挓锛�
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd38Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd38Vo.java
new file mode 100644
index 0000000..959630d
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd38Vo.java
@@ -0,0 +1,23 @@
+package com.dy.common.mw.protocol.p206V202404.downVos;
+
+import lombok.Data;
+
+@Data
+public class ComCd38Vo {
+ public String controllerType;//鎺у埗鍣ㄧ被鍨� 01锛�0x01锛�:娴嬫帶涓�浣撻榾锛�02锛�0x02锛�:琛ㄩ榾涓�浣撴満锛�57(0x57):浜曠數鎺у埗鍣�
+ public Integer projectNo ;//椤圭洰缂栧彿
+ public String icCardNo ;//鐢ㄦ埛鍗″簭鍒楀彿锛�17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛�
+ public Double waterRemain ;//鐢ㄦ埛鍓╀綑姘撮噺, 涓や釜灏忔暟鐐�, 鍗曚綅m3, 0~99999999.99
+ public Double moneyRemain ;//鐢ㄦ埛鍓╀綑閲戦, 涓や釜灏忔暟鐐�, 鍗曚綅鍏�, 0~999999.99
+ public Double waterPrice ;//姘撮噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣
+ public Double elePrice ;//鐢甸噺鍗曚环 鍗曚綅:鍏�, 2涓皬鏁扮偣
+ public String orderNo ;//璁㈠崟鍙凤紙16浣嶆暟瀛楋級
+
+ public Integer year ; //璁″垝寮�闃�鏃堕棿---骞�
+ public Integer month ;//璁″垝寮�闃�鏃堕棿---鏈�
+ public Integer day ;//璁″垝寮�闃�鏃堕棿---鏃�
+ public Integer hour ;//璁″垝寮�闃�鏃堕棿---鏃�
+ public Integer minute ;//璁″垝寮�闃�鏃堕棿---鍒�
+
+ public Integer waterAmount ;//棰勭敤姘撮噺锛�0~9999 m3锛�
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd9DVo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd9DVo.java
new file mode 100644
index 0000000..a0ddac9
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/downVos/ComCd9DVo.java
@@ -0,0 +1,12 @@
+package com.dy.common.mw.protocol.p206V202404.downVos;
+
+import lombok.Data;
+
+@Data
+public class ComCd9DVo {
+ public String controllerType;//鎺у埗鍣ㄧ被鍨� 01锛�0x01锛�:娴嬫帶涓�浣撻榾锛�02锛�0x02锛�:琛ㄩ榾涓�浣撴満锛�57(0x57):浜曠數鎺у埗鍣�
+ public Integer projectNo ;//椤圭洰缂栧彿
+ public String icCardAddr ;//鐢ㄦ埛鍗″湴鍧�锛夛紙4瀛楄妭HEX锛�
+ public String icCardNo ;//鐢ㄦ埛鍗″簭鍒楀彿锛�17浣嶆暟瀛楋級锛�6瀛楄妭BCD锛�2瀛楄妭HEX锛�
+ public String orderNo ;//璁㈠崟鍙凤紙16浣嶆暟瀛楋級
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_35_36_37_38Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_35_36_37_38Up.java
new file mode 100644
index 0000000..a87a415
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_35_36_37_38Up.java
@@ -0,0 +1,92 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.*;
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd35_36Vo;
+import com.dy.common.mw.protocol.rtuState.ValveStateInfo;
+import com.dy.common.util.ByteUtil;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+@AnnotationCodeUp(ifAny={
+ CodeV202404.cd_35,
+ CodeV202404.cd_36,
+ CodeV202404.cd_37,
+ CodeV202404.cd_38
+})
+@SuppressWarnings("unused")
+public class Cd_35_36_37_38Up implements CodeParse{
+
+ private static final Logger log = LogManager.getLogger(Cd_35_36_37_38Up.class);
+
+ /**
+ * 鍒嗘瀽涓婅鏁版嵁
+ */
+ @Override
+ public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
+ ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
+ if(bsLen > 0){
+ this.doParse(para.upBuffer,
+ bsLen,
+ para.upCode,
+ para.data) ;
+ }
+ log.info("\n鍒嗘瀽鍛戒护搴旂瓟鏁版嵁<" + CodeV202404.getCodeName(para.upCode) + " RTU鍦板潃=" + para.rtuAddr + ">:\n" + para.data.toString());
+
+ MidResultFromRtu midRs = new MidResultFromRtu() ;
+ midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+ midRs.protocolVersion = para.protocolVersion ;//鍗忚鐗堟湰鍙�
+ midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+ midRs.upCode = para.upCode ;//涓婅鏁版嵁涓殑鍔熻兘鐮�
+ midRs.upHex = para.upHex ;//涓婅鏁版嵁鍗佸叚杩涘埗褰㈠紡
+ midRs.upBuffer = para.upBuffer ;//涓婅鏁版嵁瀛楄妭鏁扮粍
+ midRs.data = para.data ;//瑙f瀽鍚庣殑鏁版嵁
+
+ midRs.reportOrResponse_trueOrFalse = false ;
+
+ callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
+ if(para.data != null && para.data.getSubData() != null){
+ DataCd35_36Vo subData = (DataCd35_36Vo)((DataV202404)para.data.getSubData()).subData ;
+ //opResult ;//寮�鍚车/闃�缁撴灉: 0x00:鎴愬姛 0x81:澶辫触
+ callback.notify(new ValveStateInfo(subData.opResult.byteValue() == 0 ? true:false));
+ }
+ return new MidResult[]{midRs} ;
+ }
+ /**
+ * 鎵ц鍒嗘瀽
+ * @param bs 瀛楄妭鏁扮粍
+ * @param bsLen 瀛楄妭闀垮害锛堟�诲寘闀匡紝鍖呮嫭鍖呭ご鍜屽寘灏撅級
+ * @param dataCode 鍔熻兘鐮�
+ * @param data 鏁版嵁
+ * @throws Exception 寮傚父
+ */
+ protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
+ DataV202404 dV202404 = (DataV202404)data.getSubData() ;
+ DataCd35_36Vo cdData = new DataCd35_36Vo(CodeV202404.getCodeName(dataCode)) ;
+ dV202404.subData = cdData ;
+ int index = ProtocolConstantV206V202404.dataIndex ;
+ cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
+
+ index++ ;
+ cdData.projectNo = (int)bs[index];
+
+ index++ ;
+ cdData.icCardNo = GlParse.parseIcCardNo(bs, index, 6, 2) ;
+
+ index += 8 ;
+ cdData.orderNo = ByteUtil.BCD2String_BE(bs, index, index + 7) ;
+
+ //index += 8 ;
+ //cdData.opDt = GlParse.parseRtuDt(bs, index) ;
+
+ index += 6 ;
+ cdData.opType = bs[index];
+
+ index ++ ;
+ cdData.opResult = bs[index];
+ }
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_35_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_35_Down.java
new file mode 100644
index 0000000..5da03c8
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_35_Down.java
@@ -0,0 +1,225 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.CodeV202404;
+import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd35Vo;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd92_A2Vo;
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+import com.dy.common.util.NumUtil;
+
+@AnnotationCodeDown(ifAny={
+ CodeV202404.cd_35
+})
+public class Cd_35_Down implements CodeParse {
+
+ @Override
+ public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+ ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ;
+ byte[] bs = this.doParse(para) ;
+
+ MidResultToRtu midRs = new MidResultToRtu() ;
+ midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+ midRs.protocolVersion = para.protocolVersion ;//鍗忚鐗堟湰鍙�
+ midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;
+ midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+ midRs.commandId = para.commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉
+ midRs.downCode = para.commandCode ;//涓嬭鍛戒护鍔熻兘鐮�;
+ midRs.downCodeName = CodeV202404.getCodeName(para.commandCode) ;//涓嬭鍛戒护鍔熻兘鐮佸悕绉�;
+ midRs.downBuffer = bs ;//涓嬭鍛戒护鏁版嵁
+ midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡
+ midRs.hasResponse = true ;//鏄惁鏈夊簲绛�
+ midRs.maxSendTimes = null ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
+ midRs.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+ midRs.isSendFirst = false ;//鍛戒护搴旂瓟锛岄鍏堝彂閫侊紝闃叉RTU閲嶆柊涓婃姤
+ if(isLowPower != null && isLowPower.booleanValue()){
+ //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+ midRs.isQuickSend = true ;
+ }
+
+ return new MidResult[]{midRs} ;
+ }
+ /**
+ * 鏋勯�犱笅琛屾暟鎹�
+ * @param para 鍙傛暟
+ * @return 瀛楄妭鏁扮粍
+ * @throws Exception 寮傚父
+ */
+ public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
+ byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
+ if(para.param != null){
+ JSONObject obj = (JSONObject)para.param;
+ String json = obj.toJSONString();
+ ComCd35Vo cvo = JSON.parseObject(json, ComCd35Vo.class) ;
+ if(cvo == null){
+ throw new Exception("json杞珻omCd35Vo涓簄ull") ;
+ }
+ if(cvo.waterRemain != null){
+ if(cvo.waterRemain < 0 || cvo.waterRemain > 99999999.99){
+ throw new Exception("鐢ㄦ埛鍓╀綑姘撮噺蹇呴』鏄�0~99999999.99鑼冨洿鍐呯殑鏁版嵁") ;
+ }
+ }
+ if(cvo.moneyRemain != null){
+ if(cvo.moneyRemain < 0 || cvo.moneyRemain > 999999.99){
+ throw new Exception("鐢ㄦ埛鍓╀綑閲戦蹇呴』鏄�0~999999.99鑼冨洿鍐呯殑鏁版嵁") ;
+ }
+ }
+ if(cvo.waterPrice != null){
+ if(cvo.waterPrice < 0 || cvo.waterPrice > 99.99){
+ throw new Exception("姘撮噺鍗曚环蹇呴』鏄�0~99.99鑼冨洿鍐呯殑鏁版嵁") ;
+ }
+ }
+ if(cvo.elePrice != null){
+ if(cvo.elePrice < 0 || cvo.elePrice > 99.99){
+ throw new Exception("鐢甸噺鍗曚环蹇呴』鏄�0~99.99鑼冨洿鍐呯殑鏁版嵁") ;
+ }
+ }
+ if(!NumUtil.isPlusIntNumber(cvo.orderNo)){
+ throw new Exception("璁㈠崟鍙峰繀椤绘槸16浣嶆暟瀛�") ;
+ }
+ if(cvo.orderNo.length() != 16){
+ throw new Exception("璁㈠崟鍙峰繀椤绘槸16浣嶆暟瀛�") ;
+ }
+ if(cvo.minutes == null || cvo.minutes == 0.0){
+ throw new Exception("鐢ㄦ按鏃堕暱涓嶈兘涓虹┖鎴栦负0") ;
+ }
+ if(cvo.minutes < 0 || cvo.minutes > 9999){
+ throw new Exception("鐢ㄦ按鏃堕暱鍙栧�艰寖鍥存槸0~9999鍒嗛挓") ;
+ }
+
+ byte[] bs = new byte[47] ;
+ int index = 0 ;
+ bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
+
+ index ++ ;
+ bs[index] = cvo.projectNo.byteValue() ;
+
+ index ++ ;
+ GlCreate.createValveOrPump(cvo.controllerType, bs, index) ;
+
+ index ++ ;
+ GlCreate.createIcCardNo(cvo.icCardNo, bs, index);
+
+ index += 8 ;
+ if(cvo.waterRemain == null){
+ cvo.waterRemain = 0.0 ;
+ }
+ String strTemp = "" + Double.valueOf(cvo.waterRemain * 100).intValue() ;
+ byte[] bTemp = ByteUtil.string2BCD_LE(strTemp) ;
+ int bTempLen = bTemp.length ;
+ int count = 0 ;
+ for(int i = 0 ; i < bTempLen; i++){
+ bs[index++] = bTemp[i] ;
+ count ++ ;
+ if(count >= 5){
+ break ;
+ }
+ }
+ for(; count < 5; count++){
+ bs[index++] = 0 ;
+ }
+
+ if(cvo.moneyRemain == null){
+ cvo.moneyRemain = 0.0 ;
+ }
+ strTemp = "" + (Double.valueOf(cvo.moneyRemain * 10000)).intValue() ;
+ bTemp = ByteUtil.string2BCD_LE(strTemp) ;
+ bTempLen = bTemp.length ;
+ count = 0 ;
+ for(int i = 0 ; i < bTempLen; i++){
+ bs[index++] = bTemp[i] ;
+ count ++ ;
+ if(count >= 4){
+ break ;
+ }
+ }
+ for(; count < 4; count++){
+ bs[index++] = 0 ;
+ }
+
+
+ if(cvo.waterPrice == null){
+ cvo.waterPrice = 0.0 ;
+ }
+ strTemp = "" + (Double.valueOf(cvo.waterPrice * 100)).intValue() ;
+ bTemp = ByteUtil.string2BCD_LE(strTemp) ;
+ bTempLen = bTemp.length ;
+ count = 0 ;
+ for(int i = 0 ; i < bTempLen; i++){
+ bs[index++] = bTemp[i] ;
+ count ++ ;
+ if(count >= 2){
+ break ;
+ }
+ }
+ for(; count < 2; count++){
+ bs[index++] = 0 ;
+ }
+
+
+ if(cvo.elePrice == null){
+ cvo.elePrice = 0.0 ;
+ }
+ strTemp = "" + (Double.valueOf(cvo.elePrice * 100)).intValue() ;
+ bTemp = ByteUtil.string2BCD_LE(strTemp) ;
+ bTempLen = bTemp.length ;
+ count = 0 ;
+ for(int i = 0 ; i < bTempLen; i++){
+ bs[index++] = bTemp[i] ;
+ count ++ ;
+ if(count >= 2){
+ break ;
+ }
+ }
+ for(; count < 2; count++){
+ bs[index++] = 0 ;
+ }
+
+
+ ByteUtil.string2BCD_BE(bs, cvo.orderNo, index) ;
+
+ index += 8 ;
+ GlCreate.createDt(bs, index);
+
+ index += 6 ;
+ bTemp = ByteUtil.int2BCD_LE(cvo.minutes) ;
+ bTempLen = bTemp.length ;
+ count = 0 ;
+ for(int i = 0 ; i < bTempLen; i++){
+ bs[index++] = bTemp[i] ;
+ count ++ ;
+ if(count >= 2){
+ break ;
+ }
+ }
+ for(; count < 2; count++){
+ bs[index++] = 0 ;
+ }
+
+ GlCreate.createPw(bs, index);
+
+ index += 2 ;
+ GlCreate.createS2D(bs, index) ;
+
+ index += 4 ;
+ bs[index] = 0 ; //鏃跺欢
+
+ bytes = ByteUtil.bytesMerge(bytes, bs) ;
+ }else{
+ throw new Exception("涓嬭鍛戒护鍙傛暟鎹负null") ;
+ }
+ GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
+ byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬
+
+ bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
+
+ return bytes ;
+ }
+
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_36_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_36_Down.java
new file mode 100644
index 0000000..56af443
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_36_Down.java
@@ -0,0 +1,225 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.CodeV202404;
+import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd35Vo;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd36Vo;
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+import com.dy.common.util.NumUtil;
+
+@AnnotationCodeDown(ifAny={
+ CodeV202404.cd_36
+})
+public class Cd_36_Down implements CodeParse {
+
+ @Override
+ public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+ ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ;
+ byte[] bs = this.doParse(para) ;
+
+ MidResultToRtu midRs = new MidResultToRtu() ;
+ midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+ midRs.protocolVersion = para.protocolVersion ;//鍗忚鐗堟湰鍙�
+ midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;
+ midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+ midRs.commandId = para.commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉
+ midRs.downCode = para.commandCode ;//涓嬭鍛戒护鍔熻兘鐮�;
+ midRs.downCodeName = CodeV202404.getCodeName(para.commandCode) ;//涓嬭鍛戒护鍔熻兘鐮佸悕绉�;
+ midRs.downBuffer = bs ;//涓嬭鍛戒护鏁版嵁
+ midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡
+ midRs.hasResponse = true ;//鏄惁鏈夊簲绛�
+ midRs.maxSendTimes = null ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
+ midRs.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+ midRs.isSendFirst = false ;//鍛戒护搴旂瓟锛岄鍏堝彂閫侊紝闃叉RTU閲嶆柊涓婃姤
+ if(isLowPower != null && isLowPower.booleanValue()){
+ //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+ midRs.isQuickSend = true ;
+ }
+
+ return new MidResult[]{midRs} ;
+ }
+ /**
+ * 鏋勯�犱笅琛屾暟鎹�
+ * @param para 鍙傛暟
+ * @return 瀛楄妭鏁扮粍
+ * @throws Exception 寮傚父
+ */
+ public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
+ byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
+ if(para.param != null){
+ JSONObject obj = (JSONObject)para.param;
+ String json = obj.toJSONString();
+ ComCd36Vo cvo = JSON.parseObject(json, ComCd36Vo.class) ;
+ if(cvo == null){
+ throw new Exception("json杞珻omCd35Vo涓簄ull") ;
+ }
+ if(cvo.waterRemain != null){
+ if(cvo.waterRemain < 0 || cvo.waterRemain > 99999999.99){
+ throw new Exception("鐢ㄦ埛鍓╀綑姘撮噺蹇呴』鏄�0~99999999.99鑼冨洿鍐呯殑鏁版嵁") ;
+ }
+ }
+ if(cvo.moneyRemain != null){
+ if(cvo.moneyRemain < 0 || cvo.moneyRemain > 999999.99){
+ throw new Exception("鐢ㄦ埛鍓╀綑閲戦蹇呴』鏄�0~999999.99鑼冨洿鍐呯殑鏁版嵁") ;
+ }
+ }
+ if(cvo.waterPrice != null){
+ if(cvo.waterPrice < 0 || cvo.waterPrice > 99.99){
+ throw new Exception("姘撮噺鍗曚环蹇呴』鏄�0~99.99鑼冨洿鍐呯殑鏁版嵁") ;
+ }
+ }
+ if(cvo.elePrice != null){
+ if(cvo.elePrice < 0 || cvo.elePrice > 99.99){
+ throw new Exception("鐢甸噺鍗曚环蹇呴』鏄�0~99.99鑼冨洿鍐呯殑鏁版嵁") ;
+ }
+ }
+ if(!NumUtil.isPlusIntNumber(cvo.orderNo)){
+ throw new Exception("璁㈠崟鍙峰繀椤绘槸16浣嶆暟瀛�") ;
+ }
+ if(cvo.orderNo.length() != 16){
+ throw new Exception("璁㈠崟鍙峰繀椤绘槸16浣嶆暟瀛�") ;
+ }
+ if(cvo.waterAmount == null || cvo.waterAmount == 0.0){
+ throw new Exception("棰勭敤姘撮噺涓嶈兘涓虹┖鎴栦负0") ;
+ }
+ if(cvo.waterAmount < 0 || cvo.waterAmount > 9999){
+ throw new Exception("棰勭敤姘撮噺鍙栧�艰寖鍥存槸0~9999m3") ;
+ }
+
+ byte[] bs = new byte[47] ;
+ int index = 0 ;
+ bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
+
+ index ++ ;
+ bs[index] = cvo.projectNo.byteValue() ;
+
+ index ++ ;
+ GlCreate.createValveOrPump(cvo.controllerType, bs, index) ;
+
+ index ++ ;
+ GlCreate.createIcCardNo(cvo.icCardNo, bs, index);
+
+ index += 8 ;
+ if(cvo.waterRemain == null){
+ cvo.waterRemain = 0.0 ;
+ }
+ String strTemp = "" + Double.valueOf(cvo.waterRemain * 100).intValue() ;
+ byte[] bTemp = ByteUtil.string2BCD_LE(strTemp) ;
+ int bTempLen = bTemp.length ;
+ int count = 0 ;
+ for(int i = 0 ; i < bTempLen; i++){
+ bs[index++] = bTemp[i] ;
+ count ++ ;
+ if(count >= 5){
+ break ;
+ }
+ }
+ for(; count < 5; count++){
+ bs[index++] = 0 ;
+ }
+
+ if(cvo.moneyRemain == null){
+ cvo.moneyRemain = 0.0 ;
+ }
+ strTemp = "" + (Double.valueOf(cvo.moneyRemain * 10000)).intValue() ;
+ bTemp = ByteUtil.string2BCD_LE(strTemp) ;
+ bTempLen = bTemp.length ;
+ count = 0 ;
+ for(int i = 0 ; i < bTempLen; i++){
+ bs[index++] = bTemp[i] ;
+ count ++ ;
+ if(count >= 4){
+ break ;
+ }
+ }
+ for(; count < 4; count++){
+ bs[index++] = 0 ;
+ }
+
+
+ if(cvo.waterPrice == null){
+ cvo.waterPrice = 0.0 ;
+ }
+ strTemp = "" + (Double.valueOf(cvo.waterPrice * 100)).intValue() ;
+ bTemp = ByteUtil.string2BCD_LE(strTemp) ;
+ bTempLen = bTemp.length ;
+ count = 0 ;
+ for(int i = 0 ; i < bTempLen; i++){
+ bs[index++] = bTemp[i] ;
+ count ++ ;
+ if(count >= 2){
+ break ;
+ }
+ }
+ for(; count < 2; count++){
+ bs[index++] = 0 ;
+ }
+
+
+ if(cvo.elePrice == null){
+ cvo.elePrice = 0.0 ;
+ }
+ strTemp = "" + (Double.valueOf(cvo.elePrice * 100)).intValue() ;
+ bTemp = ByteUtil.string2BCD_LE(strTemp) ;
+ bTempLen = bTemp.length ;
+ count = 0 ;
+ for(int i = 0 ; i < bTempLen; i++){
+ bs[index++] = bTemp[i] ;
+ count ++ ;
+ if(count >= 2){
+ break ;
+ }
+ }
+ for(; count < 2; count++){
+ bs[index++] = 0 ;
+ }
+
+
+ ByteUtil.string2BCD_BE(bs, cvo.orderNo, index) ;
+
+ index += 8 ;
+ GlCreate.createDt(bs, index);
+
+ index += 6 ;
+ bTemp = ByteUtil.int2BCD_LE(cvo.waterAmount) ;
+ bTempLen = bTemp.length ;
+ count = 0 ;
+ for(int i = 0 ; i < bTempLen; i++){
+ bs[index++] = bTemp[i] ;
+ count ++ ;
+ if(count >= 2){
+ break ;
+ }
+ }
+ for(; count < 2; count++){
+ bs[index++] = 0 ;
+ }
+
+ GlCreate.createPw(bs, index);
+
+ index += 2 ;
+ GlCreate.createS2D(bs, index) ;
+
+ index += 4 ;
+ bs[index] = 0 ; //鏃跺欢
+
+ bytes = ByteUtil.bytesMerge(bytes, bs) ;
+ }else{
+ throw new Exception("涓嬭鍛戒护鍙傛暟鎹负null") ;
+ }
+ GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
+ byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬
+
+ bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
+
+ return bytes ;
+ }
+
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_37_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_37_Down.java
new file mode 100644
index 0000000..735b656
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_37_Down.java
@@ -0,0 +1,267 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.CodeV202404;
+import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd35Vo;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd37Vo;
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+import com.dy.common.util.NumUtil;
+
+@AnnotationCodeDown(ifAny={
+ CodeV202404.cd_37
+})
+public class Cd_37_Down implements CodeParse {
+
+ @Override
+ public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+ ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ;
+ byte[] bs = this.doParse(para) ;
+
+ MidResultToRtu midRs = new MidResultToRtu() ;
+ midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+ midRs.protocolVersion = para.protocolVersion ;//鍗忚鐗堟湰鍙�
+ midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;
+ midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+ midRs.commandId = para.commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉
+ midRs.downCode = para.commandCode ;//涓嬭鍛戒护鍔熻兘鐮�;
+ midRs.downCodeName = CodeV202404.getCodeName(para.commandCode) ;//涓嬭鍛戒护鍔熻兘鐮佸悕绉�;
+ midRs.downBuffer = bs ;//涓嬭鍛戒护鏁版嵁
+ midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡
+ midRs.hasResponse = true ;//鏄惁鏈夊簲绛�
+ midRs.maxSendTimes = null ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
+ midRs.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+ midRs.isSendFirst = false ;//鍛戒护搴旂瓟锛岄鍏堝彂閫侊紝闃叉RTU閲嶆柊涓婃姤
+ if(isLowPower != null && isLowPower.booleanValue()){
+ //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+ midRs.isQuickSend = true ;
+ }
+
+ return new MidResult[]{midRs} ;
+ }
+ /**
+ * 鏋勯�犱笅琛屾暟鎹�
+ * @param para 鍙傛暟
+ * @return 瀛楄妭鏁扮粍
+ * @throws Exception 寮傚父
+ */
+ public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
+ byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
+ if(para.param != null){
+ JSONObject obj = (JSONObject)para.param;
+ String json = obj.toJSONString();
+ ComCd37Vo cvo = JSON.parseObject(json, ComCd37Vo.class) ;
+ if(cvo == null){
+ throw new Exception("json杞珻omCd37Vo涓簄ull") ;
+ }
+ if(cvo.waterRemain != null){
+ if(cvo.waterRemain < 0 || cvo.waterRemain > 99999999.99){
+ throw new Exception("鐢ㄦ埛鍓╀綑姘撮噺蹇呴』鏄�0~99999999.99鑼冨洿鍐呯殑鏁版嵁") ;
+ }
+ }
+ if(cvo.moneyRemain != null){
+ if(cvo.moneyRemain < 0 || cvo.moneyRemain > 999999.99){
+ throw new Exception("鐢ㄦ埛鍓╀綑閲戦蹇呴』鏄�0~999999.99鑼冨洿鍐呯殑鏁版嵁") ;
+ }
+ }
+ if(cvo.waterPrice != null){
+ if(cvo.waterPrice < 0 || cvo.waterPrice > 99.99){
+ throw new Exception("姘撮噺鍗曚环蹇呴』鏄�0~99.99鑼冨洿鍐呯殑鏁版嵁") ;
+ }
+ }
+ if(cvo.elePrice != null){
+ if(cvo.elePrice < 0 || cvo.elePrice > 99.99){
+ throw new Exception("鐢甸噺鍗曚环蹇呴』鏄�0~99.99鑼冨洿鍐呯殑鏁版嵁") ;
+ }
+ }
+ if(!NumUtil.isPlusIntNumber(cvo.orderNo)){
+ throw new Exception("璁㈠崟鍙峰繀椤绘槸16浣嶆暟瀛�") ;
+ }
+ if(cvo.orderNo.length() != 16){
+ throw new Exception("璁㈠崟鍙峰繀椤绘槸16浣嶆暟瀛�") ;
+ }
+
+ if(cvo.year == null){
+ throw new Exception("璁″垝寮�闃�鏃堕棿---骞翠笉鑳戒负绌�") ;
+ }
+ if(cvo.year < 24 || cvo.year > 9999){
+ throw new Exception("璁″垝寮�闃�鏃堕棿---骞翠笉姝g‘") ;
+ }
+ if(cvo.year > 99 && cvo.year < 2024){
+ throw new Exception("璁″垝寮�闃�鏃堕棿---骞翠笉姝g‘") ;
+ }
+ if(cvo.month == null){
+ throw new Exception("璁″垝寮�闃�鏃堕棿---鏈堜笉鑳戒负绌�") ;
+ }
+ if(cvo.month < 1 || cvo.month > 12){
+ throw new Exception("璁″垝寮�闃�鏃堕棿---鏈堜笉姝g‘") ;
+ }
+ if(cvo.day == null){
+ throw new Exception("璁″垝寮�闃�鏃堕棿---鏃ヤ笉鑳戒负绌�") ;
+ }
+ if(cvo.day < 1 || cvo.day > 31){
+ throw new Exception("璁″垝寮�闃�鏃堕棿---鏃ヤ笉姝g‘") ;
+ }
+ if(cvo.hour == null){
+ throw new Exception("璁″垝寮�闃�鏃堕棿---鏃朵笉鑳戒负绌�") ;
+ }
+ if(cvo.hour < 0 || cvo.hour > 23){
+ throw new Exception("璁″垝寮�闃�鏃堕棿---鏃朵笉姝g‘") ;
+ }
+ if(cvo.minute == null){
+ throw new Exception("璁″垝寮�闃�鏃堕棿---鏃朵笉鑳戒负绌�") ;
+ }
+ if(cvo.minute < 0 || cvo.minute > 59){
+ throw new Exception("璁″垝寮�闃�鏃堕棿---鍒嗕笉姝g‘") ;
+ }
+
+ if(cvo.minutes == null || cvo.minutes == 0.0){
+ throw new Exception("鐢ㄦ按鏃堕暱涓嶈兘涓虹┖鎴栦负0") ;
+ }
+ if(cvo.minutes < 0 || cvo.minutes > 9999){
+ throw new Exception("鐢ㄦ按鏃堕暱鍙栧�艰寖鍥存槸0~9999鍒嗛挓") ;
+ }
+
+ byte[] bs = new byte[53] ;
+ int index = 0 ;
+ bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
+
+ index ++ ;
+ bs[index] = cvo.projectNo.byteValue() ;
+
+ index ++ ;
+ GlCreate.createValveOrPump(cvo.controllerType, bs, index) ;
+
+ index ++ ;
+ GlCreate.createIcCardNo(cvo.icCardNo, bs, index);
+
+ index += 8 ;
+ if(cvo.waterRemain == null){
+ cvo.waterRemain = 0.0 ;
+ }
+ String strTemp = "" + Double.valueOf(cvo.waterRemain * 100).intValue() ;
+ byte[] bTemp = ByteUtil.string2BCD_LE(strTemp) ;
+ int bTempLen = bTemp.length ;
+ int count = 0 ;
+ for(int i = 0 ; i < bTempLen; i++){
+ bs[index++] = bTemp[i] ;
+ count ++ ;
+ if(count >= 5){
+ break ;
+ }
+ }
+ for(; count < 5; count++){
+ bs[index++] = 0 ;
+ }
+
+ if(cvo.moneyRemain == null){
+ cvo.moneyRemain = 0.0 ;
+ }
+ strTemp = "" + (Double.valueOf(cvo.moneyRemain * 10000)).intValue() ;
+ bTemp = ByteUtil.string2BCD_LE(strTemp) ;
+ bTempLen = bTemp.length ;
+ count = 0 ;
+ for(int i = 0 ; i < bTempLen; i++){
+ bs[index++] = bTemp[i] ;
+ count ++ ;
+ if(count >= 4){
+ break ;
+ }
+ }
+ for(; count < 4; count++){
+ bs[index++] = 0 ;
+ }
+
+
+ if(cvo.waterPrice == null){
+ cvo.waterPrice = 0.0 ;
+ }
+ strTemp = "" + (Double.valueOf(cvo.waterPrice * 100)).intValue() ;
+ bTemp = ByteUtil.string2BCD_LE(strTemp) ;
+ bTempLen = bTemp.length ;
+ count = 0 ;
+ for(int i = 0 ; i < bTempLen; i++){
+ bs[index++] = bTemp[i] ;
+ count ++ ;
+ if(count >= 2){
+ break ;
+ }
+ }
+ for(; count < 2; count++){
+ bs[index++] = 0 ;
+ }
+
+
+ if(cvo.elePrice == null){
+ cvo.elePrice = 0.0 ;
+ }
+ strTemp = "" + (Double.valueOf(cvo.elePrice * 100)).intValue() ;
+ bTemp = ByteUtil.string2BCD_LE(strTemp) ;
+ bTempLen = bTemp.length ;
+ count = 0 ;
+ for(int i = 0 ; i < bTempLen; i++){
+ bs[index++] = bTemp[i] ;
+ count ++ ;
+ if(count >= 2){
+ break ;
+ }
+ }
+ for(; count < 2; count++){
+ bs[index++] = 0 ;
+ }
+
+
+ ByteUtil.string2BCD_BE(bs, cvo.orderNo, index) ;
+
+ index += 8 ;
+ GlCreate.createDt(bs, index);
+
+ index += 6 ;
+ bs[index++] = 0 ;//绉�
+ bs[index++] = ByteUtil.int2BCD_LE(cvo.minute)[0] ;
+ bs[index++] = ByteUtil.int2BCD_LE(cvo.hour)[0] ;
+ bs[index++] = ByteUtil.int2BCD_LE(cvo.day)[0] ;
+ bs[index++] = ByteUtil.int2BCD_LE(cvo.month)[0] ;
+ bs[index++] = ByteUtil.int2BCD_LE(cvo.year)[0] ;
+
+ bTemp = ByteUtil.int2BCD_LE(cvo.minutes) ;
+ bTempLen = bTemp.length ;
+ count = 0 ;
+ for(int i = 0 ; i < bTempLen; i++){
+ bs[index++] = bTemp[i] ;
+ count ++ ;
+ if(count >= 2){
+ break ;
+ }
+ }
+ for(; count < 2; count++){
+ bs[index++] = 0 ;
+ }
+
+ GlCreate.createPw(bs, index);
+
+ index += 2 ;
+ GlCreate.createS2D(bs, index) ;
+
+ index += 4 ;
+ bs[index] = 0 ; //鏃跺欢
+
+ bytes = ByteUtil.bytesMerge(bytes, bs) ;
+ }else{
+ throw new Exception("涓嬭鍛戒护鍙傛暟鎹负null") ;
+ }
+ GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
+ byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬
+
+ bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
+
+ return bytes ;
+ }
+
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_38_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_38_Down.java
new file mode 100644
index 0000000..56e7852
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_38_Down.java
@@ -0,0 +1,266 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.CodeV202404;
+import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd38Vo;
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+import com.dy.common.util.NumUtil;
+
+@AnnotationCodeDown(ifAny={
+ CodeV202404.cd_38
+})
+public class Cd_38_Down implements CodeParse {
+
+ @Override
+ public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+ ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ;
+ byte[] bs = this.doParse(para) ;
+
+ MidResultToRtu midRs = new MidResultToRtu() ;
+ midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+ midRs.protocolVersion = para.protocolVersion ;//鍗忚鐗堟湰鍙�
+ midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;
+ midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+ midRs.commandId = para.commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉
+ midRs.downCode = para.commandCode ;//涓嬭鍛戒护鍔熻兘鐮�;
+ midRs.downCodeName = CodeV202404.getCodeName(para.commandCode) ;//涓嬭鍛戒护鍔熻兘鐮佸悕绉�;
+ midRs.downBuffer = bs ;//涓嬭鍛戒护鏁版嵁
+ midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡
+ midRs.hasResponse = true ;//鏄惁鏈夊簲绛�
+ midRs.maxSendTimes = null ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
+ midRs.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+ midRs.isSendFirst = false ;//鍛戒护搴旂瓟锛岄鍏堝彂閫侊紝闃叉RTU閲嶆柊涓婃姤
+ if(isLowPower != null && isLowPower.booleanValue()){
+ //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+ midRs.isQuickSend = true ;
+ }
+
+ return new MidResult[]{midRs} ;
+ }
+ /**
+ * 鏋勯�犱笅琛屾暟鎹�
+ * @param para 鍙傛暟
+ * @return 瀛楄妭鏁扮粍
+ * @throws Exception 寮傚父
+ */
+ public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
+ byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
+ if(para.param != null){
+ JSONObject obj = (JSONObject)para.param;
+ String json = obj.toJSONString();
+ ComCd38Vo cvo = JSON.parseObject(json, ComCd38Vo.class) ;
+ if(cvo == null){
+ throw new Exception("json杞珻omCd35Vo涓簄ull") ;
+ }
+ if(cvo.waterRemain != null){
+ if(cvo.waterRemain < 0 || cvo.waterRemain > 99999999.99){
+ throw new Exception("鐢ㄦ埛鍓╀綑姘撮噺蹇呴』鏄�0~99999999.99鑼冨洿鍐呯殑鏁版嵁") ;
+ }
+ }
+ if(cvo.moneyRemain != null){
+ if(cvo.moneyRemain < 0 || cvo.moneyRemain > 999999.99){
+ throw new Exception("鐢ㄦ埛鍓╀綑閲戦蹇呴』鏄�0~999999.99鑼冨洿鍐呯殑鏁版嵁") ;
+ }
+ }
+ if(cvo.waterPrice != null){
+ if(cvo.waterPrice < 0 || cvo.waterPrice > 99.99){
+ throw new Exception("姘撮噺鍗曚环蹇呴』鏄�0~99.99鑼冨洿鍐呯殑鏁版嵁") ;
+ }
+ }
+ if(cvo.elePrice != null){
+ if(cvo.elePrice < 0 || cvo.elePrice > 99.99){
+ throw new Exception("鐢甸噺鍗曚环蹇呴』鏄�0~99.99鑼冨洿鍐呯殑鏁版嵁") ;
+ }
+ }
+ if(!NumUtil.isPlusIntNumber(cvo.orderNo)){
+ throw new Exception("璁㈠崟鍙峰繀椤绘槸16浣嶆暟瀛�") ;
+ }
+ if(cvo.orderNo.length() != 16){
+ throw new Exception("璁㈠崟鍙峰繀椤绘槸16浣嶆暟瀛�") ;
+ }
+
+ if(cvo.year == null){
+ throw new Exception("璁″垝寮�闃�鏃堕棿---骞翠笉鑳戒负绌�") ;
+ }
+ if(cvo.year < 24 || cvo.year > 9999){
+ throw new Exception("璁″垝寮�闃�鏃堕棿---骞翠笉姝g‘") ;
+ }
+ if(cvo.year > 99 && cvo.year < 2024){
+ throw new Exception("璁″垝寮�闃�鏃堕棿---骞翠笉姝g‘") ;
+ }
+ if(cvo.month == null){
+ throw new Exception("璁″垝寮�闃�鏃堕棿---鏈堜笉鑳戒负绌�") ;
+ }
+ if(cvo.month < 1 || cvo.month > 12){
+ throw new Exception("璁″垝寮�闃�鏃堕棿---鏈堜笉姝g‘") ;
+ }
+ if(cvo.day == null){
+ throw new Exception("璁″垝寮�闃�鏃堕棿---鏃ヤ笉鑳戒负绌�") ;
+ }
+ if(cvo.day < 1 || cvo.day > 31){
+ throw new Exception("璁″垝寮�闃�鏃堕棿---鏃ヤ笉姝g‘") ;
+ }
+ if(cvo.hour == null){
+ throw new Exception("璁″垝寮�闃�鏃堕棿---鏃朵笉鑳戒负绌�") ;
+ }
+ if(cvo.hour < 0 || cvo.hour > 23){
+ throw new Exception("璁″垝寮�闃�鏃堕棿---鏃朵笉姝g‘") ;
+ }
+ if(cvo.minute == null){
+ throw new Exception("璁″垝寮�闃�鏃堕棿---鏃朵笉鑳戒负绌�") ;
+ }
+ if(cvo.minute < 0 || cvo.minute > 59){
+ throw new Exception("璁″垝寮�闃�鏃堕棿---鍒嗕笉姝g‘") ;
+ }
+
+ if(cvo.waterAmount == null || cvo.waterAmount == 0.0){
+ throw new Exception("棰勭敤姘撮噺涓嶈兘涓虹┖鎴栦负0") ;
+ }
+ if(cvo.waterAmount < 0 || cvo.waterAmount > 9999){
+ throw new Exception("棰勭敤姘撮噺鍙栧�艰寖鍥存槸0~9999m3") ;
+ }
+
+ byte[] bs = new byte[53] ;
+ int index = 0 ;
+ bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
+
+ index ++ ;
+ bs[index] = cvo.projectNo.byteValue() ;
+
+ index ++ ;
+ GlCreate.createValveOrPump(cvo.controllerType, bs, index) ;
+
+ index ++ ;
+ GlCreate.createIcCardNo(cvo.icCardNo, bs, index);
+
+ index += 8 ;
+ if(cvo.waterRemain == null){
+ cvo.waterRemain = 0.0 ;
+ }
+ String strTemp = "" + Double.valueOf(cvo.waterRemain * 100).intValue() ;
+ byte[] bTemp = ByteUtil.string2BCD_LE(strTemp) ;
+ int bTempLen = bTemp.length ;
+ int count = 0 ;
+ for(int i = 0 ; i < bTempLen; i++){
+ bs[index++] = bTemp[i] ;
+ count ++ ;
+ if(count >= 5){
+ break ;
+ }
+ }
+ for(; count < 5; count++){
+ bs[index++] = 0 ;
+ }
+
+ if(cvo.moneyRemain == null){
+ cvo.moneyRemain = 0.0 ;
+ }
+ strTemp = "" + (Double.valueOf(cvo.moneyRemain * 10000)).intValue() ;
+ bTemp = ByteUtil.string2BCD_LE(strTemp) ;
+ bTempLen = bTemp.length ;
+ count = 0 ;
+ for(int i = 0 ; i < bTempLen; i++){
+ bs[index++] = bTemp[i] ;
+ count ++ ;
+ if(count >= 4){
+ break ;
+ }
+ }
+ for(; count < 4; count++){
+ bs[index++] = 0 ;
+ }
+
+
+ if(cvo.waterPrice == null){
+ cvo.waterPrice = 0.0 ;
+ }
+ strTemp = "" + (Double.valueOf(cvo.waterPrice * 100)).intValue() ;
+ bTemp = ByteUtil.string2BCD_LE(strTemp) ;
+ bTempLen = bTemp.length ;
+ count = 0 ;
+ for(int i = 0 ; i < bTempLen; i++){
+ bs[index++] = bTemp[i] ;
+ count ++ ;
+ if(count >= 2){
+ break ;
+ }
+ }
+ for(; count < 2; count++){
+ bs[index++] = 0 ;
+ }
+
+
+ if(cvo.elePrice == null){
+ cvo.elePrice = 0.0 ;
+ }
+ strTemp = "" + (Double.valueOf(cvo.elePrice * 100)).intValue() ;
+ bTemp = ByteUtil.string2BCD_LE(strTemp) ;
+ bTempLen = bTemp.length ;
+ count = 0 ;
+ for(int i = 0 ; i < bTempLen; i++){
+ bs[index++] = bTemp[i] ;
+ count ++ ;
+ if(count >= 2){
+ break ;
+ }
+ }
+ for(; count < 2; count++){
+ bs[index++] = 0 ;
+ }
+
+
+ ByteUtil.string2BCD_BE(bs, cvo.orderNo, index) ;
+
+ index += 8 ;
+ GlCreate.createDt(bs, index);
+
+ index += 6 ;
+ bs[index++] = 0 ;//绉�
+ bs[index++] = ByteUtil.int2BCD_LE(cvo.minute)[0] ;
+ bs[index++] = ByteUtil.int2BCD_LE(cvo.hour)[0] ;
+ bs[index++] = ByteUtil.int2BCD_LE(cvo.day)[0] ;
+ bs[index++] = ByteUtil.int2BCD_LE(cvo.month)[0] ;
+ bs[index++] = ByteUtil.int2BCD_LE(cvo.year)[0] ;
+
+ bTemp = ByteUtil.int2BCD_LE(cvo.waterAmount) ;
+ bTempLen = bTemp.length ;
+ count = 0 ;
+ for(int i = 0 ; i < bTempLen; i++){
+ bs[index++] = bTemp[i] ;
+ count ++ ;
+ if(count >= 2){
+ break ;
+ }
+ }
+ for(; count < 2; count++){
+ bs[index++] = 0 ;
+ }
+
+ GlCreate.createPw(bs, index);
+
+ index += 2 ;
+ GlCreate.createS2D(bs, index) ;
+
+ index += 4 ;
+ bs[index] = 0 ; //鏃跺欢
+
+ bytes = ByteUtil.bytesMerge(bytes, bs) ;
+ }else{
+ throw new Exception("涓嬭鍛戒护鍙傛暟鎹负null") ;
+ }
+ GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
+ byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬
+
+ bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
+
+ return bytes ;
+ }
+
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_93_A3_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_93_A3_Up.java
index ae7d890..66a3ae9 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_93_A3_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_93_A3_Up.java
@@ -4,13 +4,14 @@
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.*;
import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse;
-import com.dy.common.mw.protocol.p206V202404.upVos.DataCd93_A3Vo;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd93_9D_A3Vo;
import com.dy.common.mw.protocol.rtuState.ValveStateInfo;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@AnnotationCodeUp(ifAny={
CodeV202404.cd_93,
+ CodeV202404.cd_9D,
CodeV202404.cd_A3
})
@SuppressWarnings("unused")
@@ -46,7 +47,7 @@
callback.callback(midRs.reportOrResponse_trueOrFalse, para.data.subData==null?null:((DataV202404)(para.data.subData)).subData);
if(para.data != null && para.data.getSubData() != null){
- DataCd93_A3Vo subData = (DataCd93_A3Vo)((DataV202404)para.data.getSubData()).subData ;
+ DataCd93_9D_A3Vo subData = (DataCd93_9D_A3Vo)((DataV202404)para.data.getSubData()).subData ;
//opResult ;//鍏虫车/闃�缁撴灉: 0x00:鎴愬姛 0x81:澶辫触
callback.notify(new ValveStateInfo(subData.clResult.byteValue()==0?false:true));
}
@@ -63,7 +64,7 @@
*/
protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
DataV202404 dV202404 = (DataV202404)data.getSubData() ;
- DataCd93_A3Vo cdData = new DataCd93_A3Vo(CodeV202404.getCodeName(dataCode)) ;
+ DataCd93_9D_A3Vo cdData = new DataCd93_9D_A3Vo(CodeV202404.getCodeName(dataCode)) ;
dV202404.subData = cdData ;
GlParse.parseCd93A3(bs, cdData) ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9D_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9D_Down.java
new file mode 100644
index 0000000..83b1d94
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9D_Down.java
@@ -0,0 +1,120 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.CodeV202404;
+import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd92_A2Vo;
+import com.dy.common.mw.protocol.p206V202404.downVos.ComCd9DVo;
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+import com.dy.common.util.NumUtil;
+
+@AnnotationCodeDown(ifAny={
+ CodeV202404.cd_9D
+})
+public class Cd_9D_Down implements CodeParse {
+
+ @Override
+ public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+ ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ;
+ byte[] bs = this.doParse(para) ;
+
+ MidResultToRtu midRs = new MidResultToRtu() ;
+ midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+ midRs.protocolVersion = para.protocolVersion ;//鍗忚鐗堟湰鍙�
+ midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;
+ midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+ midRs.commandId = para.commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉
+ midRs.downCode = para.commandCode ;//涓嬭鍛戒护鍔熻兘鐮�;
+ midRs.downCodeName = CodeV202404.getCodeName(para.commandCode) ;//涓嬭鍛戒护鍔熻兘鐮佸悕绉�;
+ midRs.downBuffer = bs ;//涓嬭鍛戒护鏁版嵁
+ midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡
+ midRs.hasResponse = true ;//鏄惁鏈夊簲绛�
+ midRs.maxSendTimes = null ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
+ midRs.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+ midRs.isSendFirst = false ;//鍛戒护搴旂瓟锛岄鍏堝彂閫侊紝闃叉RTU閲嶆柊涓婃姤
+ if(isLowPower != null && isLowPower.booleanValue()){
+ //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+ midRs.isQuickSend = true ;
+ }
+
+ return new MidResult[]{midRs} ;
+ }
+ /**
+ * 鏋勯�犱笅琛屾暟鎹�
+ * @param para 鍙傛暟
+ * @return 瀛楄妭鏁扮粍
+ * @throws Exception 寮傚父
+ */
+ public byte[] doParse(ParseParamsForDownV202404 para) throws Exception {
+ byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode);
+ if(para.param != null){
+ JSONObject obj = (JSONObject)para.param;
+ String json = obj.toJSONString();
+ ComCd9DVo cvo = JSON.parseObject(json, ComCd9DVo.class) ;
+ if(cvo == null){
+ throw new Exception("json杞珻omCd9DVo涓簄ull") ;
+ }
+ if(cvo.icCardAddr == null || cvo.icCardAddr.trim().equals("")){
+ throw new Exception("鐢ㄦ埛IC鍗″湴鍧�蹇呴』鎻愪緵") ;
+ }
+ if(cvo.icCardNo == null || cvo.icCardNo.trim().equals("")){
+ throw new Exception("鐢ㄦ埛IC鍗″彿蹇呴』鎻愪緵") ;
+ }
+ if(cvo.orderNo == null || cvo.orderNo.trim().equals("")){
+ throw new Exception("璁㈠崟鍙峰繀椤绘彁渚�") ;
+ }
+ if(!NumUtil.isPlusIntNumber(cvo.orderNo)){
+ throw new Exception("璁㈠崟鍙峰繀椤绘槸16浣嶆暟瀛�") ;
+ }
+ if(cvo.orderNo.length() != 16){
+ throw new Exception("璁㈠崟鍙峰繀椤绘槸16浣嶆暟瀛�") ;
+ }
+
+
+ byte[] bs = new byte[29] ;
+ int index = 0 ;
+ bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16));
+
+ index ++ ;
+ bs[index] = cvo.projectNo.byteValue() ;
+
+ index ++ ;
+ GlCreate.createValveOrPump(cvo.controllerType, bs, index) ;
+
+ index ++ ;
+ GlCreate.createIcCardAddr(cvo.icCardAddr, bs, index) ;
+
+ index += 4 ;
+ GlCreate.createIcCardNo(cvo.icCardNo, bs, index);
+
+ index += 8 ;
+ ByteUtil.string2BCD_BE(bs, cvo.orderNo, index) ;
+
+ index += 8 ;
+ GlCreate.createPw(bs, index);
+
+ index += 2 ;
+ GlCreate.createS2D(bs, index) ;
+
+ index += 4 ;
+ bs[index] = 0 ; //鏃跺欢
+
+ bytes = ByteUtil.bytesMerge(bytes, bs) ;
+ }else{
+ throw new Exception("涓嬭鍛戒护鍙傛暟鎹负null") ;
+ }
+ GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
+ byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬
+
+ bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
+
+ return bytes ;
+ }
+
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlParse.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlParse.java
index df54556..66ca03c 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlParse.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlParse.java
@@ -306,7 +306,7 @@
* @param cdData
* @throws Exception
*/
- public static void parseCd93A3(byte[] bs, DataCd93_A3Vo cdData) throws Exception {
+ public static void parseCd93A3(byte[] bs, DataCd93_9D_A3Vo cdData) throws Exception {
int index = ProtocolConstantV206V202404.dataIndex ;
cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd35_36Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd35_36Vo.java
new file mode 100644
index 0000000..e9d12f2
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd35_36Vo.java
@@ -0,0 +1,114 @@
+package com.dy.common.mw.protocol.p206V202404.upVos;
+
+import com.dy.common.mw.protocol.UpComResVo;
+import com.dy.common.mw.protocol.p206V202404.CodeV202404;
+import com.dy.common.mw.protocol.p206V202404.CommonV202404;
+import lombok.Data;
+
+//APP绔繙绋嬪畾鏃跺紑鍚按娉�/闃�闂�
+@Data
+public class DataCd35_36Vo implements UpComResVo {
+
+ public String controllerType;//鎺у埗鍣ㄧ被鍨�
+ public Integer projectNo ;//椤圭洰缂栧彿
+ public String icCardNo ;//IC鍗$紪鍙凤紙17浣嶆暟瀛楋級
+ public String orderNo ;//璁㈠崟鍙凤紙16浣嶆暟瀛楋級
+ //public String opDt ;//寮�娉�/闃�鏃堕棿锛坹yyy-mm-dd HH:MM:SS锛�
+ public Byte opType ;//寮�闃�绫诲瀷
+ public Byte opResult ;//寮�鍚车/闃�缁撴灉: 0x01:鎴愬姛 0x81:澶辫触
+
+ public String comName ;//鍛戒护鍚嶇О
+
+ //鏃犲弬鏋勯�犲嚱鏁帮紝璁剧疆鍛戒护鍚嶇О
+ public DataCd35_36Vo(){
+ this.comName = CodeV202404.getCodeName(CodeV202404.cd_35) ;
+ }
+ //鏈夊弬鏋勯�犲嚱鏁帮紝璁剧疆鍛戒护鍚嶇О
+ public DataCd35_36Vo(String comName){
+ this.comName = comName ;
+ }
+
+ //閲嶅啓toString鏂规硶锛岃繑鍥濪ataCd35Vo瀵硅薄鐨勫瓧绗︿覆琛ㄧず
+ public String toString(){
+ StringBuffer sb = new StringBuffer() ;
+ sb.append(" " + comName + " : \n") ;
+ sb.append(" 鎺у埗鍣ㄧ被鍨� : ") ;
+ sb.append(CommonV202404.ctrlDevType(controllerType)) ;
+ sb.append("\n") ;
+ sb.append(" 椤圭洰缂栧彿 : ") ;
+ sb.append(projectNo == null?"鏈煡":projectNo) ;
+ sb.append("\n") ;
+ sb.append(" IC鍗$紪鍙� : ") ;
+ sb.append(icCardNo == null?"鏈煡":icCardNo) ;
+ sb.append("\n") ;
+ sb.append(" 璁㈠崟鍙� : ") ;
+ sb.append(orderNo == null?"鏈煡":orderNo) ;
+ sb.append("\n") ;
+
+ /*
+ sb.append(" 寮�娉�/闃�鏃堕棿 : ") ;
+ sb.append(opDt == null?"鏈煡":opDt) ;
+ sb.append("\n") ;
+ */
+
+ sb.append(" 寮�鍚车/闃�绫诲瀷 : ") ;
+ sb.append(opType == null?"鏈煡":(opType.byteValue() == 0x02 ? "骞冲彴":"鐢ㄦ埛")) ;
+ sb.append("\n") ;
+ sb.append(" 寮�鍚车/闃�缁撴灉 : ") ;
+ sb.append(opResult == null?"鏈煡":(opResult.byteValue() == 0x01 ? "鎴愬姛":"澶辫触")) ;
+ sb.append("\n") ;
+ return sb.toString() ;
+ }
+
+ //閲嶅啓toStr鏂规硶锛岃繑鍥濪ataCd35Vo瀵硅薄鐨勫瓧绗︿覆琛ㄧず锛屾牴鎹畇howBase鍙傛暟鍐冲畾鏄惁鏄剧ず鍩虹淇℃伅
+ public String toStr(boolean showBase){
+ StringBuffer sb = new StringBuffer() ;
+ if(showBase){
+ sb.append(comName + " : \n") ;
+ sb.append("鎺у埗鍣ㄧ被鍨� : ") ;
+ sb.append(CommonV202404.ctrlDevType(controllerType)) ;
+ sb.append("\n") ;
+ sb.append("椤圭洰缂栧彿 : ") ;
+ sb.append(projectNo == null?"鏈煡":projectNo) ;
+ sb.append("\n") ;
+ }
+ sb.append("IC鍗$紪鍙� : ") ;
+ sb.append(icCardNo == null?"鏈煡":icCardNo) ;
+ sb.append("\n") ;
+ sb.append("璁㈠崟鍙� : ") ;
+ sb.append(orderNo == null?"鏈煡":orderNo) ;
+ sb.append("\n") ;
+
+ /*
+ sb.append("寮�娉�/闃�鏃堕棿 : ") ;
+ sb.append(opDt == null?"鏈煡":opDt) ;
+ sb.append("\n") ;
+ */
+
+ sb.append("寮�鍚车/闃�绫诲瀷 : ") ;
+ sb.append(opType == null?"鏈煡":(opType.byteValue() == 0x02 ? "骞冲彴":"鐢ㄦ埛")) ;
+ sb.append("\n") ;
+ sb.append("寮�鍚车/闃�缁撴灉 : ") ;
+ sb.append(opResult == null?"鏈煡":(opResult.byteValue() == 0x01 ? "鎴愬姛":"澶辫触")) ;
+ sb.append("\n") ;
+ return sb.toString() ;
+ }
+
+
+ //閲嶅啓comLog鏂规硶锛岃繑鍥濪ataCd35Vo瀵硅薄鐨勫瓧绗︿覆琛ㄧず锛岀敤浜庤褰曟棩蹇�
+ public String comLog(){
+ StringBuilder sb = new StringBuilder() ;
+ sb.append("杩滅▼寮�闃�鍛戒护鍥炲:\n");
+ sb.append(opResult == null?"鏈煡":(opResult.byteValue() == 0x01 ? "鎴愬姛":"澶辫触"));
+ sb.append("\n");
+
+ return sb.toString() ;
+ }
+
+ //閲嶅啓comLog鏂规硶锛屾牴鎹甤ode鍙傛暟杩斿洖DataCd35Vo瀵硅薄鐨勫瓧绗︿覆琛ㄧず锛岀敤浜庤褰曟棩蹇�
+ @Override
+ public String comLog(String code) {
+ return null;
+ }
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd93_A3Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd93_9D_A3Vo.java
similarity index 97%
rename from pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd93_A3Vo.java
rename to pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd93_9D_A3Vo.java
index 5ac8543..0fa457e 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd93_A3Vo.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd93_9D_A3Vo.java
@@ -9,7 +9,7 @@
//骞冲彴/APP杩滅▼鍏抽棴姘存车/闃�闂� + 鍒峰崱鍏虫车/闃�涓婃姤
@Data
@EqualsAndHashCode(callSuper=false)
-public class DataCd93_A3Vo extends AlarmVo implements UpComResVo {
+public class DataCd93_9D_A3Vo extends AlarmVo implements UpComResVo {
public String controllerType;//鎺у埗鍣ㄧ被鍨�
public Integer projectNo ;//椤圭洰缂栧彿
@@ -30,10 +30,10 @@
public Integer thisDuration;//鏈浣跨敤鏃堕棿闀�, 鍗曚綅锛氬垎閽�
public String comName ;//鍛戒护鍚嶇О
- public DataCd93_A3Vo(){
+ public DataCd93_9D_A3Vo(){
this.comName = CodeV202404.getCodeName(CodeV202404.cd_93) ;
}
- public DataCd93_A3Vo(String comName){
+ public DataCd93_9D_A3Vo(String comName){
this.comName = comName ;
}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd93/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd93/CdCtrl.java
index 9f00fbe..241f9c1 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd93/CdCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cd93/CdCtrl.java
@@ -4,7 +4,7 @@
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.aop.SsoAop;
import com.dy.common.mw.protocol.Command;
-import com.dy.common.mw.protocol.p206V202404.upVos.DataCd93_A3Vo;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd93_9D_A3Vo;
import com.dy.common.util.Callback;
import com.dy.common.webUtil.BaseResponse;
import com.dy.common.webUtil.BaseResponseUtils;
@@ -145,7 +145,7 @@
msg = RtuSuccessMsg ;
}else {
String json = codeData.toJSONString();
- DataCd93_A3Vo cvo = JSON.parseObject(json, DataCd93_A3Vo.class) ;
+ DataCd93_9D_A3Vo cvo = JSON.parseObject(json, DataCd93_9D_A3Vo.class) ;
if(cvo != null){
if(callback != null){
if(cvo.clResult != null && cvo.clResult == 0){
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cdA3/CdCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cdA3/CdCtrl.java
index c7b5924..a2a4553 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cdA3/CdCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/monitor/p202404V201/cdA3/CdCtrl.java
@@ -4,12 +4,11 @@
import com.alibaba.fastjson2.JSONObject;
import com.dy.common.aop.SsoAop;
import com.dy.common.mw.protocol.Command;
-import com.dy.common.mw.protocol.p206V202404.upVos.DataCd93_A3Vo;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd93_9D_A3Vo;
import com.dy.common.util.Callback;
import com.dy.common.webUtil.BaseResponse;
import com.dy.common.webUtil.BaseResponseUtils;
import com.dy.pipIrrGlobal.pojoRm.RmCommandOpen;
-import com.dy.pipIrrGlobal.voRm.VoUnclosedParam;
import com.dy.pipIrrRemote.common.dto.DtoBase;
import com.dy.pipIrrRemote.monitor.common.ComCtrl;
import com.dy.pipIrrRemote.monitor.p202404V201.cd93.CdParam;
@@ -147,7 +146,7 @@
msg = RtuSuccessMsg ;
}else {
String json = codeData.toJSONString();
- DataCd93_A3Vo cvo = JSON.parseObject(json, DataCd93_A3Vo.class) ;
+ DataCd93_9D_A3Vo cvo = JSON.parseObject(json, DataCd93_9D_A3Vo.class) ;
if(cvo != null){
if(callback != null){
if(cvo.clResult != null && cvo.clResult == 0){
--
Gitblit v1.8.0