From 823cbaa8e120a6fc2e72a4e62c06d375cc821562 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期一, 15 一月 2024 17:24:02 +0800
Subject: [PATCH] 1、增加流浪控制器实体(和数据库表); 2、修改部分通信协议实现; 3、增加部分通信协议实现; 4、增加通信中间件RTU上行数据处理任务树部分节点。

---
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83CloseVo.java                      |    6 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd97Vo.java                           |   27 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd98Vo.java                           |   27 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_97_Up.java                       |   71 +++
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerTrampMapper.xml                                        |   98 ++++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CommonV1_0_1.java                         |    4 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_65_Down.java                     |   88 +++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_97_Down.java                     |  111 ++++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd84Vo.java                           |    6 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrControllerTramp.java                              |   64 ++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_98_Up.java                       |   71 +++
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkFindReport.java          |   42 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd81Vo.java                           |   23 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Up.java                       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_92_Down.java                     |   18 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealControllerTramp.java |   37 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataV1_0_1.java                           |   16 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd65Vo.java                           |   21 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_93_Down.java                     |   18 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/RtuDataDealTree.xml                                          |   15 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/dbSv/DbSv.java                        |   64 ++
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TkRtuData.java                        |    9 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkPreGenObjs.java          |   79 --
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_21_Down.java                     |    3 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_98_Down.java                     |   97 ++++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CodeV1_0_1.java                           |   10 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83OpenVo.java                       |    6 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java                       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_81_Down.java                     |   89 +++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerTrampMapper.java                         |   65 ++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Up.java                       |    8 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/ProtocolConstantV206V1_0_0.java           |    3 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_65_Up.java                       |   75 +++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_81_Up.java                       |   99 ++++
 34 files changed, 1,269 insertions(+), 105 deletions(-)

diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CodeV1_0_1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CodeV1_0_1.java
index b633bba..1669ec7 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CodeV1_0_1.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CodeV1_0_1.java
@@ -6,12 +6,16 @@
 	public static final String cd_10 = "10" ;//璁剧疆閬ユ祴绔欑粓绔湴鍧�
 	public static final String cd_21 = "21" ;//璁剧疆鏈嶅姟绔疘P鍜岀鍙�
 	public static final String cd_50 = "50" ;//鏌ヨ閬ユ祴绔欑粓绔湴鍧�
+	public static final String cd_65 = "65" ;//鏌ヨIP鍜岀鍙�
 	public static final String cd_66 = "66" ;//鏌ヨ闃�闂ㄧ姸鎬�(闈虫�绘妸璇ュ懡浠よ璁℃垚鍙祴83鍔熻兘鐮佹暟鎹殑鍛戒护浜嗭紝鍥犱负杩欎釜鍛戒护鍥炴墽娌℃湁闃�闂ㄧ姸鎬佹暟鎹煙锛屾墍浠ヨ繖涓懡浠ゅ彧鑳戒綔涓哄彫娴嬪懡浠ょ敤浜�)
 	public static final String cd_71 = "71" ;//璁剧疆宸ヤ綔妯″紡锛堟潕澶╄祼鍒跺畾鐨勫崗璁紝褰撳墠鏈疄鐜帮級
+	public static final String cd_81 = "81" ;//闅忔満鑷姤鎶�
 	public static final String cd_83 = "83" ;//閬ユ祴绔欏紑鍏抽榾鑷姤
 	public static final String cd_84 = "84" ;//寮�闃�宸ヤ綔鎶�
 	public static final String cd_92 = "92" ;//閬ユ帶鍚姩闃�闂�
 	public static final String cd_93 = "93" ;//閬ユ帶鍏抽棴闃�闂�
+	public static final String cd_97 = "97" ;//APP杩滅▼寮�闃�
+	public static final String cd_98 = "98" ;//APP杩滅▼鍏抽榾
 	public static final String cd_C0 = "C0" ;//閬ユ祴绔欒嚜鎶ュ疄鏃舵暟鎹�
 
 	public static String getCodeName(String code) {
@@ -19,14 +23,18 @@
 			(code.equals(cd_10) ? "璁剧疆閬ユ祴绔欑粓绔湴鍧�" :
 			(code.equals(cd_21) ? "璁剧疆IP鍜岀鍙�" :
 			(code.equals(cd_50) ? "鏌ヨ閬ユ祴绔欑粓绔湴鍧�" :
+			(code.equals(cd_65) ? "鏌ヨIP鍜岀鍙�" :
 			(code.equals(cd_66) ? "鏌ヨ闃�闂ㄧ姸鎬�" :
 			(code.equals(cd_71) ? "璁剧疆宸ヤ綔妯″紡" :
+			(code.equals(cd_81) ? "闅忔満鑷姤" :
 			(code.equals(cd_83) ? "寮�鍏抽榾鑷姤" :
 			(code.equals(cd_84) ? "寮�闃�宸ヤ綔鎶�" :
 			(code.equals(cd_92) ? "閬ユ帶鍚姩闃�闂�" :
 			(code.equals(cd_93) ? "閬ユ帶鍏抽棴闃�闂�" :
+			(code.equals(cd_97) ? "APP杩滅▼寮�闃�" :
+			(code.equals(cd_98) ? "PP杩滅▼鍏抽榾" :
 			(code.equals(cd_C0) ? "鑷姤瀹炴椂鏁版嵁" :
-			""))))))))))) ;
+			""))))))))))))))) ;
 		return name ;
 	}
 
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CommonV1_0_1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CommonV1_0_1.java
index a80528a..e9677bb 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CommonV1_0_1.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CommonV1_0_1.java
@@ -82,7 +82,7 @@
 	public String parseRtuAddr(byte[] bs)throws Exception{
 		String rtuAddrBCD = "" + ByteUtil.BCD2Long_BE(bs, ProtocolConstantV206V1_0_0.rtuAddr1Index_start, ProtocolConstantV206V1_0_0.rtuAddr1Index_end) ;
 		String rtuAddrStr = "" + ByteUtilUnsigned.bytes2Short_BE(bs, ProtocolConstantV206V1_0_0.rtuAddr2Index_start) ;
-		while(rtuAddrStr.length() < 4){
+		while(rtuAddrStr.length() < 5){
 			rtuAddrStr = "0" + rtuAddrStr ;
 		}
 		return rtuAddrBCD + rtuAddrStr ;
@@ -99,7 +99,7 @@
 	public String parseRtuAddr(byte[] bs, int index)throws Exception{
 		String rtuAddrBCD = "" + ByteUtil.BCD2Long_BE(bs, index, index + 2) ;
 		String rtuAddrStr = "" + ByteUtilUnsigned.bytes2Short_BE(bs, index + 3) ;
-		while(rtuAddrStr.length() < 4){
+		while(rtuAddrStr.length() < 5){
 			rtuAddrStr = "0" + rtuAddrStr ;
 		}
 		return rtuAddrBCD + rtuAddrStr ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd65Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd65Vo.java
new file mode 100644
index 0000000..5bda8fd
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd65Vo.java
@@ -0,0 +1,21 @@
+package com.dy.common.mw.protocol.p206V1_0_0;
+
+import lombok.Data;
+
+@Data
+public class DataCd65Vo {
+    public String ip ;//IP鍦板潃
+    public Integer port ;//绔彛鍙�
+
+    public String toString(){
+        StringBuilder sb = new StringBuilder() ;
+        sb.append("   鏌ヨIP鍦板潃鍜岀鍙�:\n");
+        sb.append("      IP鍦板潃锛�");
+        sb.append(ip);
+        sb.append("\n");
+        sb.append("      绔彛鍙凤細");
+        sb.append(port==null?"":port);
+        sb.append("\n");
+        return sb.toString() ;
+    }
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd81Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd81Vo.java
new file mode 100644
index 0000000..4f95034
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd81Vo.java
@@ -0,0 +1,23 @@
+package com.dy.common.mw.protocol.p206V1_0_0;
+
+import lombok.Data;
+
+@Data
+public class DataCd81Vo {
+    public DataAlarmVo alarmVo ;//鎶ヨ
+    public DataStateVo stateVo ;//鐘舵��
+    public String toString(){
+        StringBuilder sb = new StringBuilder() ;
+        sb.append("   缁堢闅忔満鑷姤鏁版嵁:\n");
+        if(alarmVo != null){
+            sb.append(alarmVo.toString());
+            sb.append("\n");
+        }
+        if(stateVo != null){
+            sb.append(stateVo.toString());
+            sb.append("\n");
+        }
+        return sb.toString() ;
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83CloseVo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83CloseVo.java
index 5d93ebd..da14235 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83CloseVo.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83CloseVo.java
@@ -9,7 +9,7 @@
     // 6銆佹祦閲忚鏁呴殰鍏抽榾锛�7銆佺揣鎬ュ叧闃�锛�8銆佺敤鎴疯繙绋嬪紑闃�锛�9銆佺敤鎴疯繙绋嬪叧闃�锛�
     public Byte type ;
     public Double totalAmount; //绱娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3銆�
-    public String clientNum ;//鍐滄埛缂栧彿
+    public String cardNo ;//IC鍗$紪鍙�
     public String icAddr ;//ic鍗″湴鍧�
     public Double remainMoney ;//鍓╀綑閲戦锛氱敤鎴蜂綑棰�4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0.00~999999.99锛屽崟浣嶄负鍏�
     public String openDt ;//鐢ㄦ按鎴风敤姘村紑濮嬫椂闂达細6瀛楄妭BCD鐮侊紝椤哄簭鏄勾鏈堟棩鏃跺垎绉掞紝鍏朵腑鍏厓骞�=2000+骞淬��
@@ -28,8 +28,8 @@
         sb.append("      绱娴侀噺锛�");
         sb.append(totalAmount==null?"":totalAmount);
         sb.append("\n");
-        sb.append("      鍐滄埛缂栧彿锛�");
-        sb.append(clientNum);
+        sb.append("      IC鍗$紪鍙凤細");
+        sb.append(cardNo);
         sb.append("\n");
         sb.append("      ic鍗″湴鍧�锛�");
         sb.append(icAddr);
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83OpenVo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83OpenVo.java
index fdfadb7..8accb71 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83OpenVo.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83OpenVo.java
@@ -11,7 +11,7 @@
     // 16锛岀敤鎴峰紑闃�鍚庣閬撳唴娌℃湁姘达紝鑷姩鍏抽榾銆傜閬撲笉鍑烘按鑷姩鍏抽榾
     public Byte type ;
     public Double totalAmount; //绱娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3銆�
-    public String clientNum ;//鍐滄埛缂栧彿
+    public String cardNo ;//IC鍗$紪鍙�
     public String icAddr ;//ic鍗″湴鍧�
     public Double remainMoney;//鍓╀綑閲戦锛氱敤鎴蜂綑棰�4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0.00~999999.99锛屽崟浣嶄负鍏�
     public String openDt ;//鐢ㄦ按鎴峰紑闃�鏃堕棿锛�6瀛楄妭BCD鐮侊紝椤哄簭鏄勾鏈堟棩鏃跺垎绉掞紝鍏朵腑鍏厓骞�=2000+骞淬��
@@ -26,8 +26,8 @@
         sb.append("      绱娴侀噺锛�");
         sb.append(totalAmount==null?"":totalAmount);
         sb.append("\n");
-        sb.append("      鍐滄埛缂栧彿锛�");
-        sb.append(clientNum);
+        sb.append("      IC鍗$紪鍙凤細");
+        sb.append(cardNo);
         sb.append("\n");
         sb.append("      ic鍗″湴鍧�锛�");
         sb.append(icAddr);
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd84Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd84Vo.java
index 789350f..c178f88 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd84Vo.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd84Vo.java
@@ -4,7 +4,7 @@
 
 @Data
 public class DataCd84Vo {
-    public String clientNum ;//鍐滄埛缂栧彿
+    public String cardNo ;//IC鍗$紪鍙�
     public Double remainMoney ;//鍓╀綑閲戦锛氱敤鎴蜂綑棰�4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0.00~999999.99锛屽崟浣嶄负鍏�
     public Double totalAmount; //绱娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3銆�
     public Double instantAmount; //鐬椂娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999.999锛屽崟浣嶄负m3/h銆�
@@ -13,8 +13,8 @@
     public String toString(){
         StringBuilder sb = new StringBuilder() ;
         sb.append("   缁堢寮�闃�宸ヤ綔鎶�:\n");
-        sb.append("      鍐滄埛缂栧彿锛�");
-        sb.append(clientNum);
+        sb.append("      IC鍗$紪鍙凤細");
+        sb.append(cardNo);
         sb.append("\n");
         sb.append("      鍓╀綑閲戦锛堝厓锛夛細");
         sb.append(remainMoney==null?"":remainMoney);
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd97Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd97Vo.java
new file mode 100644
index 0000000..73bd0e6
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd97Vo.java
@@ -0,0 +1,27 @@
+package com.dy.common.mw.protocol.p206V1_0_0;
+
+import lombok.Data;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/01/13 10:08
+ * @LastEditTime 2024/01/13 10:08
+ * @Description
+ */
+@Data
+public class DataCd97Vo {
+    public String cardNo ;//铏氭嫙鍗″彿
+    public boolean success;
+
+    public String toString(){
+        StringBuilder sb = new StringBuilder() ;
+        sb.append("   APP杩滅▼寮�闃�搴旂瓟:\n");
+        sb.append("      铏氭嫙鍗″彿锛�");
+        sb.append(cardNo);
+        sb.append("      缁撴灉锛�");
+        sb.append(success?"鎵ц":"澶辫触");
+        sb.append("\n");
+
+        return sb.toString() ;
+    }
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd98Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd98Vo.java
new file mode 100644
index 0000000..f50967d
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd98Vo.java
@@ -0,0 +1,27 @@
+package com.dy.common.mw.protocol.p206V1_0_0;
+
+import lombok.Data;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/01/13 10:08
+ * @LastEditTime 2024/01/13 10:08
+ * @Description
+ */
+@Data
+public class DataCd98Vo {
+    public String cardNo ;//铏氭嫙鍗″彿
+    public boolean success;
+
+    public String toString(){
+        StringBuilder sb = new StringBuilder() ;
+        sb.append("   APP杩滅▼寮�闃�搴旂瓟:\n");
+        sb.append("      铏氭嫙鍗″彿锛�");
+        sb.append(cardNo);
+        sb.append("      缁撴灉锛�");
+        sb.append(success?"鎵ц":"澶辫触");
+        sb.append("\n");
+
+        return sb.toString() ;
+    }
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataV1_0_1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataV1_0_1.java
index 05e5b1c..8e028cb 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataV1_0_1.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataV1_0_1.java
@@ -12,12 +12,16 @@
 	public DataCd02Vo dataCd02Vo;//閾捐矾妫�娴�
 	public DataCd10Vo dataCd10Vo;//璁剧疆RTU鍦板潃
 	public DataCd21Vo dataCd21Vo;//璁剧疆IP鍦板潃
+	public DataCd65Vo dataCd65Vo;//鏌ヨIP鍦板潃鍜岀鍙�
 	public DataCd71Vo dataCd71Vo;//鏌ヨ闃�闂ㄧ姸鎬�
+	public DataCd81Vo dataCd81Vo;//闅忔満鑷姤鎶�
 	public DataCd83OpenVo dataCd83OpenVo;//寮�闃�鑷姤
 	public DataCd83CloseVo dataCd83CloseVo;//鍏抽榾鑷姤
 	public DataCd84Vo dataCd84Vo;//寮�闃�宸ヤ綔鎶�
 	public DataCd92Vo dataCd92Vo;//寮�闃�搴旂瓟
 	public DataCd93Vo dataCd93Vo;//鍏抽榾搴旂瓟
+	public DataCd97Vo dataCd97Vo;//APP杩滅▼寮�闃�搴旂瓟
+	public DataCd98Vo dataCd98Vo;//APP杩滅▼鍏抽榾搴旂瓟
 	public DataCdC0Vo dataCdC0Vo;//缁堢鑷姤瀹炴椂鏁版嵁
 
 	public String dt ;//閫氫俊涓棿浠朵骇鐢熷彂鎶ユ椂闂�(yyyy-MM-dd hh:mm:ss)
@@ -35,8 +39,14 @@
 		if(dataCd21Vo != null){
 			sb.append(dataCd21Vo.toString()) ;
 		}
+		if(dataCd65Vo != null){
+			sb.append(dataCd65Vo.toString()) ;
+		}
 		if(dataCd71Vo != null){
 			sb.append(dataCd71Vo.toString()) ;
+		}
+		if(dataCd81Vo != null){
+			sb.append(dataCd81Vo.toString()) ;
 		}
 		if(dataCd83OpenVo != null){
 			sb.append(dataCd83OpenVo.toString()) ;
@@ -53,6 +63,12 @@
 		if(dataCd93Vo != null){
 			sb.append(dataCd93Vo.toString()) ;
 		}
+		if(dataCd97Vo != null){
+			sb.append(dataCd97Vo.toString()) ;
+		}
+		if(dataCd98Vo != null){
+			sb.append(dataCd98Vo.toString()) ;
+		}
 		if(dataCdC0Vo != null){
 			sb.append(dataCdC0Vo.toString()) ;
 		}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/ProtocolConstantV206V1_0_0.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/ProtocolConstantV206V1_0_0.java
index 3ff2c20..d08a4de 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/ProtocolConstantV206V1_0_0.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/ProtocolConstantV206V1_0_0.java
@@ -28,7 +28,8 @@
     public static final byte P_Head_Byte = (byte)0x68 ;
     public static final byte P_Tail_Byte = (byte)0x16 ;
 
-    public static final byte P_Default_mode = (byte)0x0F ;//榛樿宸ヤ綔妯″紡
+    //00H鏃堕仴娴嬬粓绔湪鍏煎宸ヤ綔鐘舵�侊紱01H鏃堕仴娴嬬粓绔湪鑷姤宸ヤ綔鐘舵�侊紱02H鏃堕仴娴嬬粓绔湪鏌ヨ/搴旂瓟宸ヤ綔鐘舵�侊紱03H鏃堕仴娴嬬粓绔湪璋冭瘯/缁翠慨鐘舵�併��
+    public static final byte P_Default_mode = (byte)0x00 ;//榛樿宸ヤ綔妯″紡
 
     public static final String P_Head_Hex = "68" ;
     public static final String P_Tail_Hex = "16" ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_21_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_21_Down.java
index 6abb786..bead542 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_21_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_21_Down.java
@@ -73,6 +73,9 @@
 
         ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ;
 
+        /*
+        鍙傛暟鏍煎紡锛� ip1,ip2,ip3,ip4,port
+         */
         if(para.param == null){
             throw new Exception("鏈彁渚涘懡浠ゅ弬鏁版暟鎹紝涓嶈兘鏋勯�犲姛鑳界爜涓�" + CodeV1_0_1.cd_21 + "鐨勪笅琛屽懡浠�") ;
         }else{
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_65_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_65_Down.java
new file mode 100644
index 0000000..a9e4b03
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_65_Down.java
@@ -0,0 +1,88 @@
+package com.dy.common.mw.protocol.p206V1_0_0.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1;
+import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1;
+import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1;
+import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0;
+import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/01/13 10:47
+ * @LastEditTime 2024/01/13 10:47
+ * @Description
+ */
+@AnnotationCodeDown(ifAny={
+        CodeV1_0_1.cd_65
+})
+public class Cd_65_Down implements CodeParse {
+
+    //private static Logger log = LogManager.getLogger(Cd_66_Down.class);
+
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+        ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ;
+        byte[] bs = this.doParse(para) ;
+
+        MidResultToRtu midRs = new MidResultToRtu() ;
+        midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu杩斿洖鍛戒护缁撴灉 鍙戝悜鐩殑鍦皐eb URL
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃锛堢數淇″钩鍙拌澶嘔MEI锛�
+        midRs.commandId = para.commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉
+        midRs.downCode = para.commandCode ;//涓嬭鍛戒护鍔熻兘鐮�;
+        midRs.downBuffer = bs ;//涓嬭鍛戒护鏁版嵁
+        midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡
+        midRs.hasResponse = true ;//鏄惁鏈夊簲绛�
+        midRs.maxSendTimes = null ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
+        midRs.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+        if(isLowPower != null && isLowPower.booleanValue()){
+            //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+            midRs.isQuickSend = true ;
+        }
+
+        return new MidResult[]{midRs} ;
+    }
+
+    /**
+     * 鏋勯�犱笅琛屾暟鎹�
+     * @param para 鍙傛暟
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
+     */
+    public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception {
+        CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ;
+        byte[] bytes ;
+        byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ;
+        byte index = 0 ;
+        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
+
+        index++ ;
+        bsHead[index] = 0 ;//甯ч暱搴�
+
+        index++ ;
+        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
+
+        index++ ;
+        bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ;
+
+        index++ ;
+        GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
+        index += 5 ;
+
+        ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ;
+
+        bytes = bsHead ;
+
+        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/p206V1_0_0/parse/Cd_65_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_65_Up.java
new file mode 100644
index 0000000..b90809d
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_65_Up.java
@@ -0,0 +1,75 @@
+package com.dy.common.mw.protocol.p206V1_0_0.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V1_0_0.*;
+import com.dy.common.util.ByteUtilUnsigned;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/01/13 10:40
+ * @LastEditTime 2024/01/13 10:40
+ * @Description
+ */
+@AnnotationCodeUp(ifAny={
+        CodeV1_0_1.cd_65
+})
+@SuppressWarnings("unused")
+public class Cd_65_Up implements CodeParse {
+
+    private static final Logger log = LogManager.getLogger(Cd_65_Up.class);
+
+    /**
+     * 鍒嗘瀽涓婅鏁版嵁
+     */
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
+        ParseParamsForUpV1_0_1 para = (ParseParamsForUpV1_0_1)params ;
+        int bsLen = new CommonV1_0_1().parseDataLen(para.upBuffer) ;
+        if(bsLen > 0){
+            this.doParse(para.upBuffer,
+                    bsLen,
+                    para.upCode,
+                    para.data) ;
+        }
+        log.info("鍒嗘瀽鍛戒护搴旂瓟鏁版嵁<" + CodeV1_0_1.getCodeName(para.upCode) + " RTU鍦板潃=" + para.rtuAddr + ">:\n" + para.data.toString());
+
+        MidResultFromRtu midRs = new MidResultFromRtu() ;
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        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);
+        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 {
+        DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ;
+        DataCd65Vo cdData = new DataCd65Vo() ;
+        dV1.dataCd65Vo = cdData ;
+        short index = ProtocolConstantV206V1_0_0.dataIndex ;
+        String ip1 = "" + ByteUtilUnsigned.byte2Byte(bs, index++) ;
+        String ip2 = "" +ByteUtilUnsigned.byte2Byte(bs, index++) ;
+        String ip3 = "" +ByteUtilUnsigned.byte2Byte(bs, index++) ;
+        String ip4 = "" +ByteUtilUnsigned.byte2Byte(bs, index++) ;
+
+        cdData.ip = ip1 + "." + ip2 + "." + ip3 + "." + ip4 ;
+
+        String port = "" +ByteUtilUnsigned.bytes2Short_LE(bs, index++) ;
+        cdData.port = Integer.parseInt(port) ;
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_81_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_81_Down.java
new file mode 100644
index 0000000..d60cfc3
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_81_Down.java
@@ -0,0 +1,89 @@
+package com.dy.common.mw.protocol.p206V1_0_0.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1;
+import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1;
+import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1;
+import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0;
+import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+
+@AnnotationCodeDown(ifAny={
+        CodeV1_0_1.cd_81
+})
+public class Cd_81_Down implements CodeParse {
+
+    //private static Logger log = LogManager.getLogger(Cd_C0_Down.class);
+
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+        ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ;
+        byte[] bs = this.doParse(para) ;
+
+        MidResultToRtu midRs = new MidResultToRtu() ;
+        midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu杩斿洖鍛戒护缁撴灉 鍙戝悜鐩殑鍦皐eb URL
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃锛堢數淇″钩鍙拌澶嘔MEI锛�
+        midRs.commandId = para.commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉
+        midRs.downCode = para.commandCode ;//涓嬭鍛戒护鍔熻兘鐮�;
+        midRs.downBuffer = bs ;//涓嬭鍛戒护鏁版嵁
+        midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡
+        midRs.hasResponse = false ;//鏄惁鏈夊簲绛�
+        midRs.maxSendTimes = 1 ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
+        midRs.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+        midRs.isSendFirst = true ;//鍛戒护搴旂瓟锛岄鍏堝彂閫侊紝闃叉RTU閲嶆柊涓婃姤
+        if(isLowPower != null && isLowPower.booleanValue()){
+            //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+            midRs.isQuickSend = true ;
+        }
+
+        return new MidResult[]{midRs} ;
+    }
+
+    /**
+     * 鏋勯�犱笅琛屾暟鎹�
+     * @param para 鍙傛暟
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
+     */
+    public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception {
+        CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ;
+        byte[] bytes ;
+        byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ;
+        byte index = 0 ;
+        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
+
+        index++ ;
+        bsHead[index] = 0 ;//甯ч暱搴�
+
+        index++ ;
+        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
+
+        index++ ;
+        bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ;
+
+        index++ ;
+        GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
+        index += 5 ;
+
+        ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ;
+
+        byte[] bs = new byte[1] ;
+        //纭甯х殑鏁版嵁鍩熺敤浜庨仴娴嬬粓绔伐浣滄ā寮忕殑纭鎴栬浆鎹€�傛暟鎹负 1 涓瓧鑺� HEX锛�00H 鏃堕仴娴嬬粓
+        //绔湪鍏煎宸ヤ綔鐘舵�侊紱 01H 鏃堕仴娴嬬粓绔湪鑷姤宸ヤ綔鐘舵�侊紱 02H 鏃堕仴娴嬬粓绔湪鏌ヨ/搴旂瓟宸ヤ綔
+        //鐘舵�侊紱 03H 鏃堕仴娴嬬粓绔湪璋冭瘯/缁翠慨鐘舵�併��
+        bs[0] = ProtocolConstantV206V1_0_0.P_Default_mode;//鏁版嵁鍩�
+
+        bytes = ByteUtil.bytesMerge(bsHead, bs) ;
+
+        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/p206V1_0_0/parse/Cd_81_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_81_Up.java
new file mode 100644
index 0000000..f8533c2
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_81_Up.java
@@ -0,0 +1,99 @@
+package com.dy.common.mw.protocol.p206V1_0_0.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V1_0_0.*;
+import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlParse;
+import com.dy.common.util.ByteUtil;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+@AnnotationCodeUp(ifAny={
+        CodeV1_0_1.cd_81
+})
+@SuppressWarnings("unused")
+public class Cd_81_Up implements CodeParse {
+
+    private static final Logger log = LogManager.getLogger(Cd_81_Up.class);
+
+    /**
+     * 鍒嗘瀽涓婅鏁版嵁
+     */
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
+        ParseParamsForUpV1_0_1 para = (ParseParamsForUpV1_0_1)params ;
+        int bsLen = new CommonV1_0_1().parseDataLen(para.upBuffer) ;
+        if(bsLen > 0){
+            this.doParse(para.upBuffer,
+                    bsLen,
+                    para.upCode,
+                    para.data) ;
+        }
+        log.info("鍒嗘瀽涓婅鏁版嵁<" + CodeV1_0_1.getCodeName(para.upCode) + " RTU鍦板潃=" + para.rtuAddr + ">:\n" + para.data.toString());
+
+        MidResultFromRtu midRs = new MidResultFromRtu() ;
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        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 = true ;//涓诲姩涓婃姤
+
+        String confirmComCode = para.upCode ;
+        ParseParamsForDownV1_0_1 downCpParams  = new ParseParamsForDownV1_0_1() ;
+        downCpParams.setValue(
+                null,
+                ProtocolConstantV206V1_0_0.protocolName,
+                para.rtuAddr,
+                Command.defaultId,
+                confirmComCode,
+                null,
+                null);
+        //鏋勯�犲簲绛�
+        byte[] data = new Cd_81_Down().doParse(downCpParams) ;
+
+        MidResultToRtu confirmCommand = new MidResultToRtu() ;
+        confirmCommand.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        confirmCommand.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+        confirmCommand.commandId = Command.defaultId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉
+        confirmCommand.downCode = confirmComCode ;//涓嬭鍛戒护鍔熻兘鐮�;
+        confirmCommand.downBuffer = data ;//涓嬭鍛戒护鏁版嵁
+        confirmCommand.downBufHex = ByteUtil.bytes2Hex(data, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡
+        confirmCommand.hasResponse = false ;//鏄惁鏈夊簲绛�
+        confirmCommand.maxSendTimes = 1 ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�2娆�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
+        confirmCommand.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨
+
+        confirmCommand.isSendFirst = true ;//纭鍛戒护锛屼紭鍏堝彂閫�
+        if(isLowPower != null && isLowPower.booleanValue()){
+            //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+            confirmCommand.isQuickSend = true ;
+        }
+
+        callback.callback(midRs.reportOrResponse_trueOrFalse);
+        return new MidResult[]{midRs, confirmCommand} ;
+    }
+    /**
+     * 鎵ц鍒嗘瀽
+     * @param bs 瀛楄妭鏁扮粍
+     * @param bsLen 瀛楄妭闀垮害锛堟�诲寘闀匡紝鍖呮嫭鍖呭ご鍜屽寘灏撅級
+     * @param dataCode 鍔熻兘鐮�
+     * @param data 鏁版嵁
+     * @throws Exception 寮傚父
+     */
+    protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
+        DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ;
+        DataCd81Vo cdData = new DataCd81Vo() ;
+        dV1.dataCd81Vo = cdData ;
+
+        short index = ProtocolConstantV206V1_0_0.dataIndex ;
+
+        //鎶ヨ鏁版嵁
+        cdData.alarmVo = GlParse.parseAlarm(bs, index) ;
+        index += 2 ;
+        //鐘舵�佹暟鎹�
+        cdData.stateVo = GlParse.parseState(bs, index) ;
+        index += 2 ;
+
+    }
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Up.java
index 59b9b98..381487d 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Up.java
@@ -116,11 +116,11 @@
         cdData.totalAmount += tpInt * 100000000.0 ;
 
         //鐢ㄦ按鎴峰彿鏁版嵁鏍煎紡锛�5瀛楄妭BCD鐮佷綆浣嶅湪鍓嶉珮浣嶅湪鍚庛��
-        cdData.clientNum = ByteUtil.BCD2String_LE(bs, index, index + 4) ;
+        cdData.cardNo = ByteUtil.BCD2String_LE(bs, index, index + 4) ;
         index += 5 ;
 
         //IC鍗″彿鏍煎紡锛�4瀛楄妭HEX鐮佷綆浣嶅湪鍓嶉珮浣嶅湪鍚庛��
-        cdData.clientNum = ByteUtil.bytesToHex(bs, index, index + 3) ;
+        cdData.cardNo = ByteUtil.bytesToHex(bs, index, index + 3) ;
         index += 4 ;
 
         //鐢ㄦ按鎴蜂綑棰濓細鐢ㄦ埛浣欓4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0.00~999999.99锛屽崟浣嶄负鍏冦��
@@ -174,11 +174,11 @@
         cdData.totalAmount += tpInt * 100000000.0 ;
 
         //鐢ㄦ按鎴峰彿鏁版嵁鏍煎紡锛�5瀛楄妭BCD鐮佷綆浣嶅湪鍓嶉珮浣嶅湪鍚庛��
-        cdData.clientNum = ByteUtil.BCD2String_LE(bs, index, index + 4) ;
+        cdData.cardNo = ByteUtil.BCD2String_LE(bs, index, index + 4) ;
         index += 5 ;
 
         //IC鍗″彿鏍煎紡锛�4瀛楄妭HEX鐮佷綆浣嶅湪鍓嶉珮浣嶅湪鍚庛��
-        cdData.clientNum = ByteUtil.bytesToHex(bs, index, index + 3) ;
+        cdData.cardNo = ByteUtil.bytesToHex(bs, index, index + 3) ;
         index += 4 ;
 
         //鐢ㄦ按鎴蜂綑棰濓細鐢ㄦ埛浣欓4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0.00~999999.99锛屽崟浣嶄负鍏冦��
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Up.java
index 6d36ca9..015cbac 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Up.java
@@ -88,7 +88,7 @@
 
         short index = ProtocolConstantV206V1_0_0.dataIndex ;
         //鐢ㄦ按鎴峰彿鏁版嵁鏍煎紡锛�5瀛楄妭BCD鐮佷綆浣嶅湪鍓嶉珮浣嶅湪鍚庛��
-        cdData.clientNum = ByteUtil.BCD2String_LE(bs, index, index + 4) ;
+        cdData.cardNo = ByteUtil.BCD2String_LE(bs, index, index + 4) ;
         index += 5 ;
 
         //鐢ㄦ按鎴蜂綑棰濓細鐢ㄦ埛浣欓4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0.00~999999.99锛屽崟浣嶄负鍏冦��
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_92_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_92_Down.java
index 73b0961..5bf918b 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_92_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_92_Down.java
@@ -72,18 +72,14 @@
 
         ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ;
 
-        if(para.param == null){
-            throw new Exception("鏈彁渚涘懡浠ゅ弬鏁版暟鎹紝涓嶈兘鏋勯�犲姛鑳界爜涓�" + CodeV1_0_1.cd_92 + "鐨勪笅琛屽懡浠�") ;
-        }else{
-            index = 0 ;
-            byte[] bs = new byte[9] ;
-            bs[index++] = (byte)0xF0 ;
-            GlCreate.createPw(bs, index);
-            index += 2 ;
-            GlCreate.createTp(bs, index);
+        byte index1 = 0 ;
+        byte[] bs = new byte[9] ;
+        bs[index1++] = (byte)0xF0 ;
+        GlCreate.createPw(bs, index1);
+        index1 += 2 ;
+        GlCreate.createTp(bs, index1);
 
-            bytes = ByteUtil.bytesMerge(bsHead, bs) ;
-        }
+        bytes = ByteUtil.bytesMerge(bsHead, bs) ;
 
         GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
 
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_93_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_93_Down.java
index 40dbd6c..7437c05 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_93_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_93_Down.java
@@ -72,18 +72,14 @@
 
         ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ;
 
-        if(para.param == null){
-            throw new Exception("鏈彁渚涘懡浠ゅ弬鏁版暟鎹紝涓嶈兘鏋勯�犲姛鑳界爜涓�" + CodeV1_0_1.cd_93 + "鐨勪笅琛屽懡浠�") ;
-        }else{
-            index = 0 ;
-            byte[] bs = new byte[9] ;
-            bs[index++] = (byte)0xF0 ;
-            GlCreate.createPw(bs, index);
-            index += 2 ;
-            GlCreate.createTp(bs, index);
+        byte index1 = 0 ;
+        byte[] bs = new byte[9] ;
+        bs[index1++] = (byte)0xF0 ;
+        GlCreate.createPw(bs, index1);
+        index1 += 2 ;
+        GlCreate.createTp(bs, index1);
 
-            bytes = ByteUtil.bytesMerge(bsHead, bs) ;
-        }
+        bytes = ByteUtil.bytesMerge(bsHead, bs) ;
 
         GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
 
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_97_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_97_Down.java
new file mode 100644
index 0000000..636e274
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_97_Down.java
@@ -0,0 +1,111 @@
+package com.dy.common.mw.protocol.p206V1_0_0.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1;
+import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1;
+import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1;
+import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0;
+import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+import com.dy.common.util.ByteUtilUnsigned;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/01/12 14:49
+ * @LastEditTime 2024/01/12 14:49
+ * @Description
+ */
+@AnnotationCodeDown(ifAny={
+        CodeV1_0_1.cd_97
+})
+public class Cd_97_Down implements CodeParse {
+
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+        ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ;
+        byte[] bs = this.doParse(para) ;
+
+        MidResultToRtu midRs = new MidResultToRtu() ;
+        midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu杩斿洖鍛戒护缁撴灉 鍙戝悜鐩殑鍦皐eb URL
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃锛堢數淇″钩鍙拌澶嘔MEI锛�
+        midRs.commandId = para.commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉
+        midRs.downCode = para.commandCode ;//涓嬭鍛戒护鍔熻兘鐮�;
+        midRs.downBuffer = bs ;//涓嬭鍛戒护鏁版嵁
+        midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡
+        midRs.hasResponse = true ;//鏄惁鏈夊簲绛�
+        midRs.maxSendTimes = null ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
+        midRs.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+        if(isLowPower != null && isLowPower.booleanValue()){
+            //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+            midRs.isQuickSend = true ;
+        }
+
+        return new MidResult[]{midRs} ;
+    }
+
+    /**
+     * 鏋勯�犱笅琛屾暟鎹�
+     * @param para 鍙傛暟
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
+     */
+    public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception {
+        CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ;
+        byte[] bytes ;
+        byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ;
+        byte index = 0 ;
+        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
+
+        index++ ;
+        bsHead[index] = 0 ;//甯ч暱搴�
+
+        index++ ;
+        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
+
+        index++ ;
+        bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ;
+
+        index++ ;
+        GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
+        index += 5 ;
+
+        ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ;
+
+        /*
+        鍙傛暟鏍煎紡锛�  铏氭嫙鍗″彿,鐢靛瓙閽卞寘浣欓,姘翠环
+         */
+        String param = (String)para.param ;
+        if(param == null || param.trim().equals("")){
+            throw new Exception("鏈彁渚涘懡浠ゅ弬鏁版暟鎹紝涓嶈兘鏋勯�犲姛鑳界爜涓�" + CodeV1_0_1.cd_97 + "鐨勪笅琛屽懡浠�") ;
+        }else{
+            String[] params = ((String)para.param).split(",") ;
+            if(params == null || params.length != 3){
+                throw new Exception("鍛戒护鍙傛暟鏁版嵁涓嶆纭紝涓嶈兘鏋勯�犲姛鑳界爜涓�" + CodeV1_0_1.cd_97 + "鐨勪笅琛屽懡浠�") ;
+            }else{
+                byte index1 = 0 ;
+                byte[] bs = new byte[11] ;
+                ByteUtil.string2BCD_LE(bs, params[0], 0) ;
+
+                Integer money = (Double.valueOf(Double.parseDouble(params[1]) * 100)).intValue() ;
+                ByteUtilUnsigned.int2Bytes_LE(bs, money, 4);
+
+                Short price = (Double.valueOf(Double.parseDouble(params[2]) * 100)).shortValue() ;
+                ByteUtilUnsigned.short2Bytes_LE(bs, price, 8);
+
+                bytes = ByteUtil.bytesMerge(bsHead, bs) ;
+            }
+        }
+
+        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/p206V1_0_0/parse/Cd_97_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_97_Up.java
new file mode 100644
index 0000000..b2ccb2b
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_97_Up.java
@@ -0,0 +1,71 @@
+package com.dy.common.mw.protocol.p206V1_0_0.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V1_0_0.*;
+import com.dy.common.util.ByteUtil;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/01/13 8:49
+ * @LastEditTime 2024/01/13 8:49
+ * @Description
+ */
+@AnnotationCodeUp(ifAny={
+        CodeV1_0_1.cd_97
+})
+@SuppressWarnings("unused")
+public class Cd_97_Up implements CodeParse {
+
+    private static final Logger log = LogManager.getLogger(Cd_97_Up.class);
+
+    /**
+     * 鍒嗘瀽涓婅鏁版嵁
+     */
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
+        ParseParamsForUpV1_0_1 para = (ParseParamsForUpV1_0_1)params ;
+        int bsLen = new CommonV1_0_1().parseDataLen(para.upBuffer) ;
+        if(bsLen > 0){
+            this.doParse(para.upBuffer,
+                    bsLen,
+                    para.upCode,
+                    para.data) ;
+        }
+        log.info("鍒嗘瀽涓婅鏁版嵁<" + CodeV1_0_1.getCodeName(para.upCode) + " RTU鍦板潃=" + para.rtuAddr + ">:\n" + para.data.toString());
+
+        MidResultFromRtu midRs = new MidResultFromRtu() ;
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        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);
+        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 {
+        DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ;
+        DataCd97Vo cdData = new DataCd97Vo() ;
+        dV1.dataCd97Vo = cdData ;
+        //铏氭嫙鍗″彿
+        cdData.cardNo = ByteUtil.BCD2String_LE(bs, ProtocolConstantV206V1_0_0.dataIndex, ProtocolConstantV206V1_0_0.dataIndex+4) ;
+        if(bs[ProtocolConstantV206V1_0_0.dataIndex + 5] == (byte)0xAA){
+            cdData.success = true ;
+        }else{
+            cdData.success = false ;
+        }
+    }
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_98_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_98_Down.java
new file mode 100644
index 0000000..9221960
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_98_Down.java
@@ -0,0 +1,97 @@
+package com.dy.common.mw.protocol.p206V1_0_0.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V1_0_0.CodeV1_0_1;
+import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1;
+import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1;
+import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0;
+import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+import com.dy.common.util.ByteUtilUnsigned;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/01/12 14:49
+ * @LastEditTime 2024/01/12 14:49
+ * @Description
+ */
+@AnnotationCodeDown(ifAny={
+        CodeV1_0_1.cd_98
+})
+public class Cd_98_Down implements CodeParse {
+
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+        ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ;
+        byte[] bs = this.doParse(para) ;
+
+        MidResultToRtu midRs = new MidResultToRtu() ;
+        midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu杩斿洖鍛戒护缁撴灉 鍙戝悜鐩殑鍦皐eb URL
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃锛堢數淇″钩鍙拌澶嘔MEI锛�
+        midRs.commandId = para.commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉
+        midRs.downCode = para.commandCode ;//涓嬭鍛戒护鍔熻兘鐮�;
+        midRs.downBuffer = bs ;//涓嬭鍛戒护鏁版嵁
+        midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡
+        midRs.hasResponse = true ;//鏄惁鏈夊簲绛�
+        midRs.maxSendTimes = null ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
+        midRs.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+        if(isLowPower != null && isLowPower.booleanValue()){
+            //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+            midRs.isQuickSend = true ;
+        }
+
+        return new MidResult[]{midRs} ;
+    }
+
+    /**
+     * 鏋勯�犱笅琛屾暟鎹�
+     * @param para 鍙傛暟
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
+     */
+    public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception {
+        CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ;
+        byte[] bytes ;
+        byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ;
+        byte index = 0 ;
+        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
+
+        index++ ;
+        bsHead[index] = 0 ;//甯ч暱搴�
+
+        index++ ;
+        bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ;
+
+        index++ ;
+        bsHead[index] = commonV1_0_1.createCtrl((byte)0, (byte)0) ;
+
+        index++ ;
+        GlCreate.createRtuAddr(para.rtuAddr, bsHead, index);
+        index += 5 ;
+
+        ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ;
+
+         /*
+        鍙傛暟鏍煎紡锛�  铏氭嫙鍗″彿
+         */
+        if(para.param == null ||((String)para.param).trim().equals("")){
+            throw new Exception("鏈彁渚涘懡浠ゅ弬鏁版暟鎹紝涓嶈兘鏋勯�犲姛鑳界爜涓�" + CodeV1_0_1.cd_98 + "鐨勪笅琛屽懡浠�") ;
+        }else{
+            byte[] bs = new byte[5] ;
+            ByteUtil.string2BCD_LE(bs, ((String)para.param).trim(), 0) ;
+            bytes = ByteUtil.bytesMerge(bsHead, bs) ;
+        }
+
+        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/p206V1_0_0/parse/Cd_98_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_98_Up.java
new file mode 100644
index 0000000..8d578ba
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_98_Up.java
@@ -0,0 +1,71 @@
+package com.dy.common.mw.protocol.p206V1_0_0.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V1_0_0.*;
+import com.dy.common.util.ByteUtil;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/01/13 8:49
+ * @LastEditTime 2024/01/13 8:49
+ * @Description
+ */
+@AnnotationCodeUp(ifAny={
+        CodeV1_0_1.cd_98
+})
+@SuppressWarnings("unused")
+public class Cd_98_Up implements CodeParse {
+
+    private static final Logger log = LogManager.getLogger(Cd_98_Up.class);
+
+    /**
+     * 鍒嗘瀽涓婅鏁版嵁
+     */
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
+        ParseParamsForUpV1_0_1 para = (ParseParamsForUpV1_0_1)params ;
+        int bsLen = new CommonV1_0_1().parseDataLen(para.upBuffer) ;
+        if(bsLen > 0){
+            this.doParse(para.upBuffer,
+                    bsLen,
+                    para.upCode,
+                    para.data) ;
+        }
+        log.info("鍒嗘瀽涓婅鏁版嵁<" + CodeV1_0_1.getCodeName(para.upCode) + " RTU鍦板潃=" + para.rtuAddr + ">:\n" + para.data.toString());
+
+        MidResultFromRtu midRs = new MidResultFromRtu() ;
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        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);
+        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 {
+        DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ;
+        DataCd98Vo cdData = new DataCd98Vo() ;
+        dV1.dataCd98Vo = cdData ;
+        //铏氭嫙鍗″彿
+        cdData.cardNo = ByteUtil.BCD2String_LE(bs, ProtocolConstantV206V1_0_0.dataIndex, ProtocolConstantV206V1_0_0.dataIndex+4) ;
+        if(bs[ProtocolConstantV206V1_0_0.dataIndex + 5] == (byte)0xAA){
+            cdData.success = true ;
+        }else{
+            cdData.success = false ;
+        }
+    }
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java
index c4ae4d4..80a0238 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java
@@ -51,7 +51,7 @@
                 null,
                 null);
         //鏋勯�犲簲绛�
-        byte[] data = new Cd_02_Down().doParse(downCpParams) ;
+        byte[] data = new Cd_C0_Down().doParse(downCpParams) ;
 
         MidResultToRtu confirmCommand = new MidResultToRtu() ;
         confirmCommand.protocolName = para.protocolName ;//鍗忚鍚嶇О
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerTrampMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerTrampMapper.java
new file mode 100644
index 0000000..9e86073
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrControllerTrampMapper.java
@@ -0,0 +1,65 @@
+package com.dy.pipIrrGlobal.daoPr;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dy.pipIrrGlobal.pojoPr.PrControllerTramp;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/1/15 15:27
+ * @LastEditTime 2024/1/15 15:27
+ * @Description
+ */   
+@Mapper
+public interface PrControllerTrampMapper extends BaseMapper<PrControllerTramp> {
+    /**
+     * delete by primary key
+     * @param id primaryKey
+     * @return deleteCount
+     */
+    int deleteByPrimaryKey(Long id);
+
+    /**
+     * insert record to table
+     * @param record the record
+     * @return insert count
+     */
+    int insert(PrControllerTramp record);
+
+    /**
+     * insert record to table selective
+     * @param record the record
+     * @return insert count
+     */
+    int insertSelective(PrControllerTramp record);
+
+    /**
+     * select by primary key
+     * @param id primary key
+     * @return object by primary key
+     */
+    PrControllerTramp selectByPrimaryKey(Long id);
+
+    /**
+     * select by RtuAddr
+     * @param rutAddr 鎺у埗鍣ㄥ湴鍧�
+     * @return object by 鎺у埗鍣ㄥ湴鍧�
+     */
+    List<PrControllerTramp> selectPrControllerTrampByRtuAddr(String rutAddr);
+
+    /**
+     * update record selective
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKeySelective(PrControllerTramp record);
+
+    /**
+     * update record
+     * @param record the updated record
+     * @return update count
+     */
+    int updateByPrimaryKey(PrControllerTramp record);
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrControllerTramp.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrControllerTramp.java
new file mode 100644
index 0000000..05ac965
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrControllerTramp.java
@@ -0,0 +1,64 @@
+package com.dy.pipIrrGlobal.pojoPr;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/1/15 15:00
+ * @LastEditTime 2024/1/15 15:00
+ * @Description
+ */
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.dy.common.po.BaseEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import lombok.*;
+import org.hibernate.validator.constraints.Length;
+
+/**
+ * 娴佹氮鎺у埗鍣�
+ */
+@TableName(value="pr_controller_tramp", autoResultMap = true)
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "娴佹氮鎺у埗鍣�")
+public class PrControllerTramp implements BaseEntity {
+    public static final long serialVersionUID = 2024011502001L;
+    /**
+     * 涓婚敭
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @TableId(type = IdType.INPUT)
+    @Schema(description = "瀹炰綋id", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    public Long id;
+
+    /**
+     * 閫氳鍗忚
+     */
+    @Schema(description = "鎺у埗鍣ㄥ湴鍧�", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "鎺у埗鍣ㄥ湴鍧�涓嶈兘涓虹┖")
+    @Length(message = "鎺у埗鍣ㄥ湴鍧�蹇呴』{max}浣�",min = 11, max = 11)
+    public String rtuAddr;
+
+    /**
+     * 閫氳鍗忚
+     */
+    @Schema(description = "閫氳鍗忚", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "閫氳鍗忚涓嶈兘涓虹┖")
+    @Length(message = "閫氳鍗忚涓嶅ぇ浜巤max}瀛�",max = 25)
+    public String protocol;
+
+    /**
+     * 閫氳鍗忚
+     */
+    @Schema(description = "鍙戠幇鏃堕棿", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "鍙戠幇鏃堕棿涓嶈兘涓虹┖")
+    public String findDt;//鍙戠幇鏃堕棿锛� yyyy-mm-dd HH:MM:SS锛�
+
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerTrampMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerTrampMapper.xml
new file mode 100644
index 0000000..029d01a
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrControllerTrampMapper.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dy.pipIrrGlobal.daoPr.PrControllerTrampMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoPr.PrControllerTramp">
+    <!--@mbg.generated-->
+    <!--@Table pr_controller_tramp-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="rtuAddr" jdbcType="VARCHAR" property="rtuAddr" />
+    <result column="protocol" jdbcType="VARCHAR" property="protocol" />
+    <result column="findDt" jdbcType="VARCHAR" property="findDt" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, rtuAddr, protocol, findDt
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from pr_controller_tramp
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <select id="selectPrControllerTrampByRtuAddr" parameterType="java.lang.String" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select
+    <include refid="Base_Column_List" />
+    from pr_controller_tramp
+    where rtuAddr = #{rtuAddr,jdbcType=VARCHAR}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--@mbg.generated-->
+    delete from pr_controller_tramp
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoPr.PrControllerTramp">
+    <!--@mbg.generated-->
+    insert into pr_controller_tramp (id, rtuAddr, protocol, 
+      findDt)
+    values (#{id,jdbcType=BIGINT}, #{rtuAddr,jdbcType=VARCHAR}, #{protocol,jdbcType=VARCHAR},
+      #{findDt,jdbcType=VARCHAR})
+  </insert>
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoPr.PrControllerTramp">
+    <!--@mbg.generated-->
+    insert into pr_controller_tramp
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="rtuAddr != null">
+        rtuAddr,
+      </if>
+      <if test="protocol != null">
+        protocol,
+      </if>
+      <if test="findDt != null">
+        findDt,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="rtuAddr != null">
+        #{rtuAddr,jdbcType=VARCHAR},
+      </if>
+      <if test="protocol != null">
+        #{protocol,jdbcType=VARCHAR},
+      </if>
+      <if test="findDt != null">
+        #{findDt,jdbcType=VARCHAR},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoPr.PrControllerTramp">
+    <!--@mbg.generated-->
+    update pr_controller_tramp
+    <set>
+      <if test="rtuAddr != null">
+        rtuAddr = #{rtuAddr,jdbcType=VARCHAR},
+      </if>
+      <if test="protocol != null">
+        protocol = #{protocol,jdbcType=VARCHAR},
+      </if>
+      <if test="findDt != null">
+        findDt = #{findDt,jdbcType=VARCHAR},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoPr.PrControllerTramp">
+    <!--@mbg.generated-->
+    update pr_controller_tramp
+    set rtuAddr = #{rtuAddr,jdbcType=VARCHAR},
+      protocol = #{protocol,jdbcType=VARCHAR},
+      findDt = #{findDt,jdbcType=VARCHAR}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TkRtuData.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TkRtuData.java
index 23f334c..ca9c35c 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TkRtuData.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/TkRtuData.java
@@ -19,10 +19,15 @@
 	public void execute(Object data) {
 		Data d = (Data)data ;
 		String rtuAddr = d.getRtuAddr() ;
-		if(rtuAddr == null){
+		if(rtuAddr == null || rtuAddr.trim().equals("")){
 			log.error("涓ラ噸閿欒锛孯TU涓婅鏁版嵁涓棤RTU鍦板潃锛�" );
 		}else{
-			this.toNextTasks(data);
+			String protocol = d.getProtocol() ;
+			if(protocol == null || protocol.trim().equals("")){
+				log.error("涓ラ噸閿欒锛孯TU涓婅鏁版嵁涓棤鍗忚鍚嶇О锛�" );
+			}else{
+				this.toNextTasks(data);
+			}
 		}
 	}
 
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/dbSv/DbSv.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/dbSv/DbSv.java
new file mode 100644
index 0000000..c645532
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/dbSv/DbSv.java
@@ -0,0 +1,64 @@
+package com.dy.aceMw.server.rtuData.dbSv;
+
+import com.dy.pipIrrGlobal.daoPr.PrControllerMapper;
+import com.dy.pipIrrGlobal.daoPr.PrControllerTrampMapper;
+import com.dy.pipIrrGlobal.pojoPr.PrController;
+import com.dy.pipIrrGlobal.pojoPr.PrControllerTramp;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/1/13 10:57
+ * @LastEditTime 2024/1/13 10:57
+ * @Description
+ */
+@Service()
+public class DbSv {
+    @Autowired
+    private PrControllerTrampMapper prControllerTrampMapperDao;//娴佹氮鎺у埗鍣―AO
+    @Autowired
+    private PrControllerMapper prControllerMapperDao ;//鎺у埗鍣―AO
+
+    @Autowired
+    @Lazy
+    private DbSv sv ;
+
+    /**
+     * 閫氳繃鎺у埗鍣ㄥ湴鍧�浠庢暟鎹簱琛ㄤ腑鏌ヨ鎺у埗鍣�
+     * @param rtuAddr 鎺у埗鍣ㄥ湴鍧�
+     * @return 鎺у埗鍣�
+     */
+    public PrController getPrControllerByRtuAddr(String rtuAddr){
+        List<PrController> list = this.prControllerMapperDao.selectPrControllerByRtuAddr(rtuAddr) ;
+        if(list != null && list.size() > 0){
+            return list.get(0) ;
+        }
+        return null ;
+    }
+    /**
+     * 閫氳繃鎺у埗鍣ㄥ湴鍧�浠庢暟鎹簱琛ㄤ腑鏌ヨ娴佹氮鎺у埗鍣�
+     * @param rtuAddr 鎺у埗鍣ㄥ湴鍧�
+     * @return 娴佹氮鎺у埗鍣�
+     */
+    public PrControllerTramp getPrControllerTrampByRtuAddr(String rtuAddr){
+        List<PrControllerTramp> list = this.prControllerTrampMapperDao.selectPrControllerTrampByRtuAddr(rtuAddr) ;
+        if(list != null && list.size() > 0){
+            return list.get(0) ;
+        }
+        return null ;
+    }
+
+
+    /**
+     * 淇濆瓨娴佹氮鎺у埗鍣�
+     * @param po
+     */
+    public void savePrConctrollerTramp(PrControllerTramp po){
+        this.prControllerTrampMapperDao.insert(po) ;
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealControllerTramp.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealControllerTramp.java
new file mode 100644
index 0000000..06c31c3
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkDealControllerTramp.java
@@ -0,0 +1,37 @@
+package com.dy.aceMw.server.rtuData.p206V1_0_0;
+
+import com.dy.aceMw.server.rtuData.TaskSurpport;
+import com.dy.aceMw.server.rtuData.dbSv.DbSv;
+import com.dy.pipIrrGlobal.pojoPr.PrControllerTramp;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/1/15 16:29
+ * @LastEditTime 2024/1/15 16:29
+ * @Description
+ */
+
+/**
+ * 澶勭悊娴佹氮鎺у埗鍣�
+ */
+public class TkDealControllerTramp extends TaskSurpport {
+
+    private static final Logger log = LogManager.getLogger(TkDealControllerTramp.class.getName()) ;
+
+    //绫籌D锛屼竴瀹氫笌Tree.xml閰嶇疆鏂囦欢涓厤缃竴鑷�
+    public static final String taskId = "TkDealControllerTramp" ;
+
+    /**
+     * 鎵ц鑺傜偣浠诲姟
+     * @param data 闇�瑕佸鐞嗙殑鏁版嵁
+     */
+    @Override
+    public void execute(Object data) {
+        Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ;
+        DbSv sv = (DbSv)objs[0] ;
+        PrControllerTramp rtuTramp = (PrControllerTramp)objs[2] ;
+        sv.savePrConctrollerTramp(rtuTramp);
+    }
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkFindReport.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkFindReport.java
new file mode 100644
index 0000000..6255791
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkFindReport.java
@@ -0,0 +1,42 @@
+package com.dy.aceMw.server.rtuData.p206V1_0_0;
+
+import com.dy.aceMw.server.rtuData.TaskSurpport;
+import com.dy.common.mw.protocol.Data;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/1/15 17:15
+ * @LastEditTime 2024/1/15 17:15
+ * @Description
+ */
+
+/**
+ * 璇嗗埆闈炲懡浠ゅ簲绛�
+ */
+public class TkFindReport extends TaskSurpport {
+
+    private static final Logger log = LogManager.getLogger(TkFindReport.class.getName()) ;
+
+    //绫籌D锛屼竴瀹氫笌Tree.xml閰嶇疆鏂囦欢涓厤缃竴鑷�
+    public static final String taskId = "TkFindReport" ;
+
+    /**
+     * 鎵ц鑺傜偣浠诲姟
+     * @param data 闇�瑕佸鐞嗙殑鏁版嵁
+     */
+    @Override
+    public void execute(Object data) {
+        if(data instanceof Data){
+            Data d = (Data)data ;
+            if(d.getCommandId() == null || d.getCommandId().trim().equals("")){
+                //鏃犲懡浠D
+                this.toNextTasks(data);
+            }
+        }
+        //Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ;
+        //DbSv sv = (DbSv)objs[0] ;
+        //PrController controller = (PrController)objs[1] ;
+    }
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkPreGenObjs.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkPreGenObjs.java
index 66048c2..a4771a6 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkPreGenObjs.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/rtuData/p206V1_0_0/TkPreGenObjs.java
@@ -1,9 +1,12 @@
 package com.dy.aceMw.server.rtuData.p206V1_0_0;
 
 import com.dy.aceMw.server.rtuData.TaskSurpport;
-import com.dy.aceMw.server.rtuData.dbSv.RtuSv;
+import com.dy.aceMw.server.rtuData.dbSv.DbSv;
 import com.dy.common.mw.protocol.Data;
 import com.dy.common.springUtil.SpringContextUtil;
+import com.dy.common.util.DateTime;
+import com.dy.pipIrrGlobal.pojoPr.PrController;
+import com.dy.pipIrrGlobal.pojoPr.PrControllerTramp;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
@@ -21,69 +24,25 @@
 	@Override
 	public void execute(Object data) {
 		Data d = (Data)data ;
-		String rtuAddr = d.getRtuAddr() ;
-		log.info("RTU" + rtuAddr + "鏁版嵁鍒版锛岃繘琛屾暟鎹簱瀛樺偍娴嬭瘯");
-
-		RtuSv sv = (RtuSv)SpringContextUtil.getBean(RtuSv.class) ;
-		sv.save(d) ;
-
-		//寰楀埌鏈湴RTU 鏁版嵁锛屼互澶囧悗闈㈣妭鐐瑰簲鐢�
-		/*
-		BuziInterface baseBusi = BuziGeter.getBaseBusi() ;
-		BuziInterface orgBusi = null ;
-		SyRtu nbRtu = null ;
-		SyRtuTramp rtuTramp = null ;
-		if(baseBusi != null){
-			nbRtu = DbSyBuzi.getRtu(baseBusi, imei) ;
-			if(nbRtu != null){
-				//鏁版嵁搴撲腑鏌ヨ鍒癗B浜у搧锛圧TU瀹炰綋锛�
-				if(nbRtu.orgTag != null && !nbRtu.orgTag.trim().equals("")){
-					orgBusi = BuziGeter.getBusi(nbRtu.orgTag) ;
-					if(orgBusi == null){
-						log.error("涓ラ噸閿欒锛屾湭鑳藉緱鍒版爣绛句负" + nbRtu.orgTag + "鐨勪緵姘存満鏋勬暟鎹簱涓氬姟Busi");
-					}else{
-						BaMeter meter = DbOrgBuzi.getMeterByImeiAndNo(orgBusi, imei, rtuAddr) ;
-						//鍙兘鏈煡璇㈠埌meter锛屽嵆浠嶆槸娴佹氮鑰匯TU锛屼絾浠嶈鍚庣画澶勭悊锛氾紙1锛夈�佷粛鑳借瘑鍒嚭娴佹氮鑰匯TU锛岋紙2锛夈�佷粛瑕佽褰曞叾涓婃姤鏁版嵁
-						if(meter != null){
-							String protocol = d.getProtocol() ;
-							if(protocol != null){
-								protocol = protocol.trim();
-								if(!protocol.equals("")){
-									if(meter.protocol == null 
-											|| meter.protocol.trim().equals("")
-											|| !meter.protocol.trim().equals(protocol)){
-										//闇�瑕佹洿鏂板崗璁悕绉�
-										DbOrgBuzi.updateMeter4Protocol(orgBusi, meter.id, protocol);
-									}
-								}
-							}
-						}
-						this.taskResult = new Object[]{baseBusi, orgBusi, nbRtu, null, meter} ;	
-						this.toNextTasks(data);
-					}
-				}else{
-					//NB浜у搧锛圧TU瀹炰綋锛夋湭鍒嗛厤缁欏叿浣撶殑渚涙按鏈烘瀯
-					//娴佹氮鑰匯TU
-					rtuTramp = DbSyBuzi.getSyRtuTramp(baseBusi, imei, rtuAddr) ;
-					if(rtuTramp == null){
-						rtuTramp = new SyRtuTramp(imei, rtuAddr) ; 
-					}
-					this.taskResult = new Object[]{baseBusi, orgBusi, nbRtu, rtuTramp, null} ;
-					this.toNextOneTask(data, TkDealRtuTramp.taskId);
-				}
-			}else{
-				//鏁版嵁搴撲腑鏈煡璇㈠埌NB浜у搧锛圧TU瀹炰綋锛�
-				//娴佹氮鑰匯TU
-				rtuTramp = DbSyBuzi.getSyRtuTramp(baseBusi, imei, rtuAddr) ;
+		String rtuAddr = d.getRtuAddr() ;//TkRtuData閲屽垽鏂簡rtuAddr涓虹┖
+		DbSv sv = (DbSv)SpringContextUtil.getBean(DbSv.class) ;
+		if(sv != null){
+			PrController controller = sv.getPrControllerByRtuAddr(rtuAddr) ;
+			if(controller == null){
+				//鏁版嵁搴撲腑鏈煡璇㈠埌鎺у埗鍣紙RTU瀹炰綋锛�
+				//娴佹氮鑰呮帶鍒跺櫒
+				PrControllerTramp rtuTramp = sv.getPrControllerTrampByRtuAddr(rtuAddr);
 				if(rtuTramp == null){
-					rtuTramp = new SyRtuTramp(imei, rtuAddr) ; 
+					rtuTramp = new PrControllerTramp(null, rtuAddr, d.getProtocol(), DateTime.yyyy_MM_dd_HH_mm_ss()) ;
+					this.taskResult = new Object[]{sv, null, rtuTramp} ;
+					this.toNextOneTask(data, TkDealControllerTramp.taskId);
 				}
-				this.taskResult = new Object[]{baseBusi, orgBusi, nbRtu, rtuTramp, null} ;
-				this.toNextOneTask(data, TkDealRtuTramp.taskId);
 			}
+			//涓嶈鏄惁涓烘祦娴帶鍒跺櫒锛圧TU瀹炰綋锛夛紝閮借杩涜涓嬫宸ヤ綔
+			this.taskResult = new Object[]{sv, controller, null} ;
+			this.toNextTasks(data);
 		}else{
-			log.error("涓ラ噸閿欒锛屾湭鑳藉緱鍒癇aseBusi瀵硅薄");
+			log.error("涓ラ噸閿欒锛屾湭鑳藉緱鍒癉bSv瀵硅薄");
 		}
-		*/
 	}
 }
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/RtuDataDealTree.xml b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/RtuDataDealTree.xml
index 8a89412..75a82be 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/RtuDataDealTree.xml
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/resources/RtuDataDealTree.xml
@@ -8,9 +8,20 @@
 	<task id="TkReceive" name="鎺ユ敹鏁版嵁" enable="true" class="com.dy.aceMw.server.rtuData.TkReceive">
 		<task id="TkRtuData" name="鎺ユ敹RTU鏁版嵁" enable="true" class="com.dy.aceMw.server.rtuData.TkRtuData">
 			<task id="TkFindP206V1_0_0" name="璇嗗埆P206V1_0_0鏁版嵁" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkFindP206V1_0_0">
-				<task id="TkPreGenObjs" name="棰勫厛鍑嗗鍚勫璞�" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkPreGenObjs">
+				<task id="TkPreGenObjs" name="棰勫厛鍑嗗鍚勫璞″苟璇嗗埆娴佹氮鎺у埗鍣�" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkPreGenObjs">
+					<!-- 澶勭悊娴佹氮鎺у埗鍣� -->
+					<task id="TkDealControllerTramp" name="澶勭悊娴佹氮鎺у埗鍣�" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkDealControllerTramp" />
+					<!-- 闈炴祦娴�匯TU锛屽繀椤绘斁鍦═kDealControllerTramp鍚庨潰 -->
+					<!-- 璇嗗埆涓诲姩涓婃姤鏁版嵁 -->
+					<task id="TkFindReport" name="璇嗗埆涓婃姤鏁版嵁" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkFindReport">
+
+					</task>
+					<!-- 璇嗗埆鍛戒护鍝嶅簲鏁版嵁 -->
+					<task id="TkFindComResponse" name="璇嗗埆鍝嶅簲鍛戒护鏁版嵁" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkFindComResponse">
+						<task id="TkRtuDealCommandResponse" name="RTU鍝嶅簲鍛戒护鏁版嵁" enable="true" class="com.dy.aceMw.server.rtuData.p206V1_0_0.TkRtuDealCommandResponse" >
+						</task>
+					</task>
 				</task>
-			</task>
 		</task>
 	</task>
 </project>
\ No newline at end of file

--
Gitblit v1.8.0