From 99bf09fbc855590e209dda4cd2b6c725101cbe9c Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期五, 26 七月 2024 14:39:43 +0800
Subject: [PATCH] 1、完善代码,把开关阀类型编码改为BCD码; 2、制定并实现协议“定时关阀计划开阀(A1H)”和“定量关阀计划开阀(A2H)”.

---
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_A1_Up.java                    |   73 +++++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/ComA1Vo.java                   |   23 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/ComA2Vo.java                   |   22 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_A2_Down.java                  |  221 +++++++++++++++++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_A1_Down.java                  |  214 ++++++++++++++++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CodeV1_0_1.java                        |    6 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_A2_Up.java                    |   73 +++++
 pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V1_0_0/CommandP206V1_0_0Ctrl.java |    2 
 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/upVos/DataCd84Vo.java                  |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Up.java                    |   20 -
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCdA1Vo.java                  |   41 +++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCdA2Vo.java                  |   41 +++
 13 files changed, 719 insertions(+), 21 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 029060c..9f3b91f 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
@@ -41,6 +41,8 @@
 	public static final String cd_98 = "98" ;//APP杩滅▼鍏抽榾
 	public static final String cd_99 = "99" ;//瀹氭椂鍏抽榾寮�闃�
 	public static final String cd_A0 = "A0" ;//瀹氶噺鍏抽榾寮�闃�
+	public static final String cd_A1 = "A1" ;//瀹氭椂鍏抽榾璁″垝寮�闃�
+	public static final String cd_A2 = "A2" ;//瀹氶噺鍏抽榾璁″垝寮�闃�
 	public static final String cd_B0 = "B0" ;//鏌ヨ瀹炴椂鏁版嵁锛堟湭瀹炵幇锛�
 	public static final String cd_C0 = "C0" ;//閬ユ祴绔欐暣鐐逛笂鎶ュ疄鏃舵暟鎹� ok
 
@@ -84,9 +86,11 @@
 			(code.equals(cd_98) ? "APP杩滅▼鍏抽榾" :
 			(code.equals(cd_99) ? "瀹氭椂鍏抽榾寮�闃�" :
 			(code.equals(cd_A0) ? "瀹氶噺鍏抽榾寮�闃�" :
+			(code.equals(cd_A1) ? "瀹氭椂鍏抽榾璁″垝寮�闃�" :
+			(code.equals(cd_A2) ? "瀹氶噺鍏抽榾璁″垝寮�闃�" :
 			(code.equals(cd_B0) ? "鏌ヨ瀹炴椂鏁版嵁" :
 			(code.equals(cd_C0) ? "鑷姤(鏁寸偣)瀹炴椂鏁版嵁" :
-			""))))))))))))))))))))))))))))))))))))))))) ;
+			""))))))))))))))))))))))))))))))))))))))))))) ;
 		return name ;
 	}
 
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/ComA1Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/ComA1Vo.java
new file mode 100644
index 0000000..38b0178
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/ComA1Vo.java
@@ -0,0 +1,23 @@
+package com.dy.common.mw.protocol.p206V1_0_0.downVos;
+
+import lombok.Data;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/5/28 21:30
+ * @Description 瀹氭椂鍏抽榾寮�闃�
+ */
+@Data
+public class ComA1Vo {
+    public String icCardNo ;//17浣嶈櫄鎷烮C鍗$紪鍙�(鍗忚鏄�10浣嶆暟瀛�)
+    public Double moneyRemain;//鍓╀綑閲戦(鍙栧�艰寖鍥�0.00~999999.99锛屽崟浣嶄负鍏�)
+    public Double waterPrice;//姘翠环(鍙栧�艰寖鍥�0.00~99.99鍏�/m3)
+    public Integer minutes ;//鐢ㄦ按鏃堕暱锛�0~9999鍒嗛挓锛�
+    public Integer year ; //璁″垝寮�闃�鏃堕棿---骞�
+    public Integer month ;//璁″垝寮�闃�鏃堕棿---鏈�
+    public Integer day ;//璁″垝寮�闃�鏃堕棿---鏃�
+    public Integer hour ;//璁″垝寮�闃�鏃堕棿---鏃�
+    public Integer minute ;//璁″垝寮�闃�鏃堕棿---鍒�
+
+    public String orderNo ;//璁㈠崟鍙凤紙16浣嶆暟瀛楋級
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/ComA2Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/ComA2Vo.java
new file mode 100644
index 0000000..d1227a1
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/downVos/ComA2Vo.java
@@ -0,0 +1,22 @@
+package com.dy.common.mw.protocol.p206V1_0_0.downVos;
+
+import lombok.Data;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/5/28 21:30
+ * @Description 瀹氭椂鍏抽榾寮�闃�
+ */
+@Data
+public class ComA2Vo {
+    public String icCardNo ;//17浣嶈櫄鎷烮C鍗$紪鍙�(鍗忚鏄�10浣嶆暟瀛�)
+    public Double moneyRemain;//鍓╀綑閲戦(鍙栧�艰寖鍥�0.00~999999.99锛屽崟浣嶄负鍏�)
+    public Double waterPrice;//姘翠环(鍙栧�艰寖鍥�0.00~99.99鍏�/m3)
+    public Integer waterAmount ;//棰勭敤姘撮噺锛�0~9999 m3锛�
+    public Integer year ; //璁″垝寮�闃�鏃堕棿---骞�
+    public Integer month ;//璁″垝寮�闃�鏃堕棿---鏈�
+    public Integer day ;//璁″垝寮�闃�鏃堕棿---鏃�
+    public Integer hour ;//璁″垝寮�闃�鏃堕棿---鏃�
+    public Integer minute ;//璁″垝寮�闃�鏃堕棿---鍒�
+    public String orderNo ;//璁㈠崟鍙凤紙16浣嶆暟瀛楋級
+}
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 d51fa90..4b304de 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
@@ -84,12 +84,14 @@
      * @throws Exception 寮傚父
      */
     protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
-        byte opType = bs[ProtocolConstantV206V1_0_0.dataIndex];
+        byte opType = (byte)ByteUtil.BCD2Int_LE(bs[ProtocolConstantV206V1_0_0.dataIndex]) ;
         Boolean isCloseType = CommonV1_0_1.isCloseValveType(opType) ;
         if(isCloseType != null && isCloseType.booleanValue()){
             this.doParseClose(opType, bs, bsLen, dataCode, data);
         }else if(isCloseType != null && !isCloseType.booleanValue()){
             this.doParseOpen(opType, bs, bsLen, dataCode, data);
+        }else{
+            throw new Exception("寮�鍏抽榾绫诲瀷[" + ByteUtil.bytes2Hex(new byte[]{opType}, false) + "(hex)]涓嶅彲璇嗗埆" ) ;
         }
     }
     private void doParseOpen(byte opType, byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
@@ -122,22 +124,6 @@
         cdData.openDt = GlParse.parseTp(bs, index) ;
 
         index += 6 ;
-        /* 寮�闃�鏃讹紝姝ら儴鍒嗘病鏈�
-        cdData.priceType = bs[index] ;
-
-        index++ ;
-        cdData.price = 0.0D ;
-        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
-        index++ ;
-        cdData.price += tpInt/100.0 ;
-        tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ;
-        index++ ;
-        cdData.price += tpInt;
-
-        cdData.cardType = bs[index] ;
-
-        index++ ;
-         */
         //鎺у埗鍣ㄦ椂閽�
         cdData.rtuDt = GlParse.parseTp(bs, index) ;
         //index += 6 ;
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 877e0b8..a5f7245 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 @@
         dV1.subData = cdData ;
 
         short index = ProtocolConstantV206V1_0_0.dataIndex ;
-        cdData.opType = bs[index] ;
+        cdData.opType = (byte)ByteUtil.BCD2Int_LE(bs[index]) ;
 
         index++ ;
         cdData.cardType = bs[index] ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_A1_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_A1_Down.java
new file mode 100644
index 0000000..fb4fcc4
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_A1_Down.java
@@ -0,0 +1,214 @@
+package com.dy.common.mw.protocol.p206V1_0_0.parse;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+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.downVos.Com99Vo;
+import com.dy.common.mw.protocol.p206V1_0_0.downVos.ComA1Vo;
+import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/06/12 9:30
+ * @Description
+ */
+@AnnotationCodeDown(ifAny={
+        CodeV1_0_1.cd_A1
+})
+public class Cd_A1_Down implements CodeParse {
+
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+        ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ;
+        MidResultToRtu midRs = new MidResultToRtu() ;
+        byte[] bs = this.doParse(midRs, para) ;
+
+        midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu杩斿洖鍛戒护缁撴灉 鍙戝悜鐩殑鍦皐eb URL
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+        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 midRs 鍙傛暟
+     * @param para 鍙傛暟
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
+     */
+    public byte[] doParse(MidResultToRtu midRs, 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) ;
+
+        JSONObject obj = (JSONObject)para.param;
+        String json = obj.toJSONString();
+        ComA1Vo cvo = JSON.parseObject(json, ComA1Vo.class) ;
+        if(cvo == null){
+            throw new Exception("json杞珻om99Vo涓簄ull") ;
+        }
+        if(cvo.icCardNo == null){
+            throw new Exception("铏氭嫙IC鍗$紪鍙蜂笉鑳戒负绌�") ;
+        }
+        if(cvo.moneyRemain == null){
+            throw new Exception("鍓╀綑閲戦涓嶈兘涓虹┖") ;
+        }
+        if(cvo.waterPrice == null){
+            throw new Exception("姘翠环涓嶈兘涓虹┖") ;
+        }
+        if(cvo.minutes == null){
+            throw new Exception("鐢ㄦ按鏃堕暱涓嶈兘涓虹┖") ;
+        }
+        if(cvo.minutes < 0 || cvo.minutes > 9999){
+            throw new Exception("鐢ㄦ按鏃堕暱鍙栧�艰寖鍥存槸0~9999鍒嗛挓") ;
+        }
+        if(cvo.year == null){
+            throw new Exception("璁″垝寮�闃�鏃堕棿---骞翠笉鑳戒负绌�") ;
+        }
+        if(cvo.year < 24 || cvo.year > 9999){
+            throw new Exception("璁″垝寮�闃�鏃堕棿---骞翠笉姝g‘") ;
+        }
+        if(cvo.year > 24 && 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‘") ;
+        }
+
+        byte[] bs = new byte[8] ;
+        GlCreate.createIcCardNo(cvo.icCardNo, bs, 0);
+        bytes = ByteUtil.bytesMerge(bsHead, bs) ;
+
+        bs = new byte[4] ;
+        index = 0 ;
+        Integer money = Double.valueOf(cvo.moneyRemain * 100.0D).intValue() ;
+        byte[] bTemp = ByteUtil.int2BCD_LE(money) ;
+        int bTempLen = bTemp.length ;
+        int 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 ;
+        }
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[2] ;
+        index = 0 ;
+        Integer price = Double.valueOf(cvo.waterPrice * 100.0D).intValue() ;
+        bTemp = ByteUtil.int2BCD_LE(price) ;
+        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 ;
+        }
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+
+        bs = new byte[2] ;
+        index = 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 ;
+        }
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[5] ;
+        if(cvo.year >= 2024){
+            cvo.year = cvo.year - 2000 ;
+        }
+        bs[0] = ByteUtil.int2BCD_LE(cvo.minute)[0] ;
+        bs[1] = ByteUtil.int2BCD_LE(cvo.hour)[0] ;
+        bs[2] = ByteUtil.int2BCD_LE(cvo.day)[0] ;
+        bs[3] = ByteUtil.int2BCD_LE(cvo.month)[0] ;
+        bs[4] = ByteUtil.int2BCD_LE(cvo.year)[0] ;
+
+        bytes = ByteUtil.bytesMerge(bytes, 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_A1_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_A1_Up.java
new file mode 100644
index 0000000..704b677
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_A1_Up.java
@@ -0,0 +1,73 @@
+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.mw.protocol.p206V1_0_0.upVos.DataCd99Vo;
+import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataCdA1Vo;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/06/12 9:30
+ * @Description
+ */
+@AnnotationCodeUp(ifAny={
+        CodeV1_0_1.cd_A1
+})
+@SuppressWarnings("unused")
+public class Cd_A1_Up implements CodeParse {
+
+    private static final Logger log = LogManager.getLogger(Cd_A1_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() ;
+        DataCdA1Vo cdData = new DataCdA1Vo() ;
+        dV1.subData = cdData ;
+        //铏氭嫙鍗″彿
+        cdData.cardNo = GlParse.parseIcCardNo(bs, ProtocolConstantV206V1_0_0.dataIndex) ;
+
+        if(bs[ProtocolConstantV206V1_0_0.dataIndex + 8] == (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_A2_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_A2_Down.java
new file mode 100644
index 0000000..9db5735
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_A2_Down.java
@@ -0,0 +1,221 @@
+package com.dy.common.mw.protocol.p206V1_0_0.parse;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+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.downVos.ComA0Vo;
+import com.dy.common.mw.protocol.p206V1_0_0.downVos.ComA2Vo;
+import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/06/12 9:30
+ * @Description
+ */
+@AnnotationCodeDown(ifAny={
+        CodeV1_0_1.cd_A2
+})
+public class Cd_A2_Down implements CodeParse {
+
+    @Override
+    public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+        ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ;
+        MidResultToRtu midRs = new MidResultToRtu() ;
+        byte[] bs = this.doParse(midRs, para) ;
+
+        midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu杩斿洖鍛戒护缁撴灉 鍙戝悜鐩殑鍦皐eb URL
+        midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+        midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+        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 midRs 鍙傛暟
+     * @param para 鍙傛暟
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
+     */
+    public byte[] doParse(MidResultToRtu midRs, 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) ;
+
+        JSONObject obj = (JSONObject)para.param;
+        String json = obj.toJSONString();
+        ComA2Vo cvo = JSON.parseObject(json, ComA2Vo.class) ;
+        if(cvo == null){
+            throw new Exception("json杞珻omA0Vo涓簄ull") ;
+        }
+        if(cvo.icCardNo == null){
+            throw new Exception("铏氭嫙IC鍗$紪鍙蜂笉鑳戒负绌�") ;
+        }
+        if(cvo.moneyRemain == null){
+            throw new Exception("鍓╀綑閲戦涓嶈兘涓虹┖") ;
+        }
+        if(cvo.waterPrice == null){
+            throw new Exception("姘翠环涓嶈兘涓虹┖") ;
+        }
+        if(cvo.waterAmount == null){
+            throw new Exception("棰勭敤姘撮噺涓嶈兘涓虹┖") ;
+        }
+       if(cvo.waterAmount < 0 || cvo.waterAmount > 9999){
+            throw new Exception("棰勭敤姘撮噺鍙栧�艰寖鍥存槸0~9999m3") ;
+        }
+        if(cvo.year == null){
+            throw new Exception("璁″垝寮�闃�鏃堕棿---骞翠笉鑳戒负绌�") ;
+        }
+        if(cvo.year < 24 || cvo.year > 9999){
+            throw new Exception("璁″垝寮�闃�鏃堕棿---骞翠笉姝g‘") ;
+        }
+        if(cvo.year > 24 && 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‘") ;
+        }
+
+        //String[] icCardNoGrp = CommonV1_0_1.dealIcCardNo(cvo.icCardNo) ;
+        //if(icCardNoGrp[0] != null){
+        //    midRs.param = icCardNoGrp[0] ;
+        //}
+        //ByteUtil.string2BCD_LE(bs, icCardNoGrp[1], index) ;
+        byte[] bs = new byte[16] ;
+        index = 0 ;
+        GlCreate.createIcCardNo(cvo.icCardNo, bs, 0);
+        bytes = ByteUtil.bytesMerge(bsHead, bs) ;
+
+        bs = new byte[4] ;
+        index = 0 ;
+        Integer money = Double.valueOf(cvo.moneyRemain * 100.0D).intValue() ;
+        byte[] bTemp = ByteUtil.int2BCD_LE(money) ;
+        int bTempLen = bTemp.length ;
+        int 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 ;
+        }
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[2] ;
+        index = 0 ;
+        Integer price = Double.valueOf(cvo.waterPrice * 100.0D).intValue() ;
+        bTemp = ByteUtil.int2BCD_LE(price) ;
+        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 ;
+        }
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+
+        bs = new byte[2] ;
+        index = 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 ;
+        }
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+
+        bs = new byte[5] ;
+        if(cvo.year >= 2024){
+            cvo.year = cvo.year - 2000 ;
+        }
+        bs[0] = ByteUtil.int2BCD_LE(cvo.minute)[0] ;
+        bs[1] = ByteUtil.int2BCD_LE(cvo.hour)[0] ;
+        bs[2] = ByteUtil.int2BCD_LE(cvo.day)[0] ;
+        bs[3] = ByteUtil.int2BCD_LE(cvo.month)[0] ;
+        bs[4] = ByteUtil.int2BCD_LE(cvo.year)[0] ;
+
+        bytes = ByteUtil.bytesMerge(bytes, 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_A2_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_A2_Up.java
new file mode 100644
index 0000000..c789750
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_A2_Up.java
@@ -0,0 +1,73 @@
+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.mw.protocol.p206V1_0_0.upVos.DataCdA0Vo;
+import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataCdA2Vo;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/06/12 9:30
+ * @Description
+ */
+@AnnotationCodeUp(ifAny={
+        CodeV1_0_1.cd_A2
+})
+@SuppressWarnings("unused")
+public class Cd_A2_Up implements CodeParse {
+
+    private static final Logger log = LogManager.getLogger(Cd_A2_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() ;
+        DataCdA2Vo cdData = new DataCdA2Vo() ;
+        dV1.subData = cdData ;
+        //铏氭嫙鍗″彿
+        cdData.cardNo = GlParse.parseIcCardNo(bs, ProtocolConstantV206V1_0_0.dataIndex) ;
+
+        if(bs[ProtocolConstantV206V1_0_0.dataIndex + 8] == (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/upVos/DataCd84Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd84Vo.java
index 9d5dab4..1eb9111 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd84Vo.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCd84Vo.java
@@ -9,7 +9,7 @@
 @Data
 public class DataCd84Vo {
 
-    public Byte opType;//寮�鍏抽榾绫诲瀷(1:鍒峰崱寮�闃�锛�2:鍒峰崱鍏抽榾锛�3:涓績绔欏紑闃�锛�4:涓績绔欏叧闃�锛�5:娆犺垂鍏抽榾锛�6:娴侀噺璁℃晠闅滃叧闃�锛�7:绱ф�ュ叧闂紱8:鐢ㄦ埛杩滅▼寮�闃�锛�9:鐢ㄦ埛杩滅▼鍏抽榾锛�10:寮�鍏抽榾鍗″叧闃�锛�11:寮�鍏抽榾鍗″埛鍗″崱寮�闃�锛�)
+    public Byte opType;
     public Byte cardType ;//鍗$被鍨�(0:鏃犲崱锛�1:鐢ㄦ埛鍗★紱2锛氱鐞嗗憳鍗★紱3锛氳皟璇曞崱锛�4锛氬紑鍏抽榾鍗★紱5锛氭竻绌哄崱)
     public String cardAddr ;//IC鍗″湴鍧�锛�8浣嶅瓧绗︼級
     public String cardNo ;//IC鍗$紪鍙�
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCdA1Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCdA1Vo.java
new file mode 100644
index 0000000..9e682e0
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCdA1Vo.java
@@ -0,0 +1,41 @@
+package com.dy.common.mw.protocol.p206V1_0_0.upVos;
+
+import lombok.Data;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/01/13 10:08
+ * @LastEditTime 2024/01/13 10:08
+ * @Description
+ */
+@Data
+public class DataCdA1Vo {
+    public String cardNo ;//铏氭嫙鍗″彿
+    public boolean success;
+
+    public String toString(){
+        StringBuilder sb = new StringBuilder() ;
+        sb.append("   瀹氭椂鍏抽榾寮�闃�搴旂瓟:\n");
+        sb.append("      铏氭嫙鍗″彿锛�");
+        sb.append(cardNo);
+        sb.append("\n");
+        sb.append("      缁撴灉锛�");
+        sb.append(success?"鎵ц":"澶辫触");
+        sb.append("\n");
+
+        return sb.toString() ;
+    }
+
+
+    public String comLog(){
+        StringBuilder sb = new StringBuilder() ;
+        sb.append("瀹氭椂鍏抽榾寮�闃�鍛戒护鍥炲:\n");
+        sb.append("   铏氭嫙鍗″彿锛�");
+        sb.append(cardNo);
+        sb.append("\n");
+        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/upVos/DataCdA2Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCdA2Vo.java
new file mode 100644
index 0000000..8499e77
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/upVos/DataCdA2Vo.java
@@ -0,0 +1,41 @@
+package com.dy.common.mw.protocol.p206V1_0_0.upVos;
+
+import lombok.Data;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/01/13 10:08
+ * @LastEditTime 2024/01/13 10:08
+ * @Description
+ */
+@Data
+public class DataCdA2Vo {
+    public String cardNo ;//铏氭嫙鍗″彿
+    public boolean success;
+
+    public String toString(){
+        StringBuilder sb = new StringBuilder() ;
+        sb.append("   瀹氶噺鍏抽榾寮�闃�搴旂瓟:\n");
+        sb.append("      铏氭嫙鍗″彿锛�");
+        sb.append(cardNo);
+        sb.append("\n");
+        sb.append("      缁撴灉锛�");
+        sb.append(success?"鎵ц":"澶辫触");
+        sb.append("\n");
+
+        return sb.toString() ;
+    }
+
+
+    public String comLog(){
+        StringBuilder sb = new StringBuilder() ;
+        sb.append("瀹氶噺鍏抽榾寮�闃�鍛戒护鍥炲:\n");
+        sb.append("   铏氭嫙鍗″彿锛�");
+        sb.append(cardNo);
+        sb.append("\n");
+        sb.append("   缁撴灉锛�");
+        sb.append(success?"鎵ц":"澶辫触");
+        sb.append("\n");
+        return sb.toString() ;
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V1_0_0/CommandP206V1_0_0Ctrl.java b/pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V1_0_0/CommandP206V1_0_0Ctrl.java
index 8a475f0..f6008a4 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V1_0_0/CommandP206V1_0_0Ctrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V1_0_0/CommandP206V1_0_0Ctrl.java
@@ -193,7 +193,7 @@
         comVo.icCardNo = CommandP206V1_0_0Ctrl.vsIcCardNo;
         comVo.moneyRemain = 234.56 ;
         comVo.waterPrice = 1.2 ;
-        comVo.minutes = 5 ;
+        comVo.minutes = 3 ;
         return this.sendCom2Mw(this.command(CodeV1_0_1.cd_99, comVo, null)) ;
     }
 

--
Gitblit v1.8.0