From 5fcdef2e8eec55221bb65a7a2cf91a4be7cc89ac Mon Sep 17 00:00:00 2001
From: zhubaomin <zhubaomin>
Date: 星期一, 02 十二月 2024 16:41:11 +0800
Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV

---
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeCtrl.java              |    7 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/global/GlCreate.java                    |   21 ++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1602_Down.java                       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_1600_Down.java                       |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeStateReceiverCtrl.java |    7 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_1602_Down.java                       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlCreate.java               |   35 +++-
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/RtuStatus.java                            |    1 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/DriverV1.java                                 |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1600_Down.java                  |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/RtuStatusDeal.java           |   17 +
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuStatus/RtuInfoNotify.java                     |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/web/com/CommandCtrl.java                                |   20 --
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1601_Down.java                       |    4 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1602_Down.java                  |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1603_Down.java                       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/DriverV2.java                                 |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/RtuStatusDealer.java                      |   17 +
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java                  |   57 +++++-
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java                      |   74 ---------
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/CRC16.java                                                  |  117 +++++++++-----
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_1601_Down.java                       |    2 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/rtuMw/Web2RtuMw.java                                       |   14 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/DriverV202404.java                       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/global/GlCreate.java                    |   16 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1601_Down.java                  |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/CodeLocal.java               |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_1603_Down.java                       |    2 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1600_Down.java                       |    5 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1603_Down.java                  |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/AdapterImp_ProtocolUnit.java                     |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/CommandInnerDeaLer.java                    |   22 ++
 32 files changed, 274 insertions(+), 192 deletions(-)

diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/DriverV1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/DriverV1.java
index 789ee94..54279c3 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/DriverV1.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/DriverV1.java
@@ -106,10 +106,10 @@
 					}
 					@Override
 					public void notify(NotifyInfo ...infos) {
+						notify.notify(rtuAddr, ProtocolConstantV206V1.protocolName, ProtocolConstantV206V1.protocolVer, infos);
 					}
 				});
 			}
-				
 		} catch (Exception e) {
 			isFail = true ;
 			return new MidResult[]{(new MidResultError(ProtocolConstantV206V1.protocolName, rtuAddr, "涓ラ噸閿欒锛屽垎鏋怰tu鏁版嵁鍑洪敊锛佹暟鎹负锛�" + upHex + (e.getMessage() == null?"":("锛屽嚭閿欎俊鎭細" + e.getMessage())), e))} ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_1600_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_1600_Down.java
index 55f2527..641d16c 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_1600_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_1600_Down.java
@@ -71,6 +71,8 @@
         index += 2 ;
         GlCreate.createRtuAddr4PUg(para.rtuAddr, preBytes, index);
 
+        GlCreate.createLen4PUg(preBytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
         byte[] bsTail = GlCreate.createCrcTail4Ug(preBytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
 
         return ByteUtil.bytesMerge(preBytes, bsTail) ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_1601_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_1601_Down.java
index 845a90a..26549ff 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_1601_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_1601_Down.java
@@ -99,6 +99,8 @@
         ByteUtil.hex2Bytes(vo.softStartAddr, bs, 0) ;
         bytes = ByteUtil.bytesMerge(bytes, bs) ;
 
+        GlCreate.createLen4PUg(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
         byte[] bsTail = GlCreate.createCrcTail4Ug(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
 
         return ByteUtil.bytesMerge(bytes, bsTail) ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_1602_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_1602_Down.java
index 8c90752..6e7a932 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_1602_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_1602_Down.java
@@ -82,6 +82,8 @@
 
         bytes = ByteUtil.bytesMerge(bytes, (byte[])para.attachment) ;
 
+        GlCreate.createLen4PUg(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
         byte[] bsTail = GlCreate.createCrcTail4Ug(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
 
         return ByteUtil.bytesMerge(bytes, bsTail) ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_1603_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_1603_Down.java
index 672e40c..1e4a715 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_1603_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/Cd_1603_Down.java
@@ -71,6 +71,8 @@
         index += 2 ;
         GlCreate.createRtuAddr4PUg(para.rtuAddr, preBytes, index);
 
+        GlCreate.createLen4PUg(preBytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
         byte[] bsTail = GlCreate.createCrcTail4Ug(preBytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
 
         return ByteUtil.bytesMerge(preBytes, bsTail) ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/global/GlCreate.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/global/GlCreate.java
index 634534a..553c055 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/global/GlCreate.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/parse/global/GlCreate.java
@@ -54,12 +54,13 @@
 
     public static void createLen4PUg(byte[] bytes) throws Exception {
         int len = bytes.length - 4;
-        byte[] bs = ByteUtil.int2BCD_LE(len) ;
+        byte[] bs = ByteUtil.short2Bytes_LE((short)len) ;
         if(bs != null && bs.length == 1){
-            bytes[1] = bs[0] ;
+            bytes[1] = 0 ;
+            bytes[2] = bs[0] ;
         }else if(bs != null && bs.length > 1){
-            bytes[1] = bs[0] ;
-            bytes[2] = bs[1] ;
+            bytes[1] = bs[1] ;
+            bytes[2] = bs[0] ;
         }
     }
 
@@ -92,9 +93,12 @@
     }
 
     public static byte[] createCrcTail4Ug(byte[] bsNoTail) throws Exception {
-        short crc = new CRC16().CRC(bsNoTail, 0, bsNoTail.length -1) ;
+        int crc = new CRC16().CRC16_table(bsNoTail, 0, bsNoTail.length -1) ;
+        byte[] crcBs = new byte[4] ;
+        ByteUtil.int2Bytes_BE(crcBs, crc, 0);
         byte[] bytes = new byte[ProtocolConstantV206V1.UG_lenTail] ;
-        ByteUtil.short2Bytes_BE(bytes, crc, 0);
+        bytes[0] = crcBs[2] ;
+        bytes[1] = crcBs[3] ;
         bytes[2] = ProtocolConstantV206V1.P_Tail_Byte ;
         return bytes ;
     }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/DriverV2.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/DriverV2.java
index 5dba5f7..3297dbb 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/DriverV2.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/DriverV2.java
@@ -1,6 +1,7 @@
 package com.dy.common.mw.protocol.p206V2;
 
 import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V1.ProtocolConstantV206V1;
 import com.dy.common.util.DateTime;
 
 @AnnotationDriver(enable = true,
@@ -107,6 +108,7 @@
 					}
 					@Override
 					public void notify(NotifyInfo ...infos) {
+						notify.notify(rtuAddr, ProtocolConstantV206V1.protocolName, ProtocolConstantV206V1.protocolVer, infos);
 					}
 				});
 			}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1600_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1600_Down.java
index 13d6504..321f0c2 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1600_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1600_Down.java
@@ -1,11 +1,10 @@
 package com.dy.common.mw.protocol.p206V2.parse;
 
 import com.dy.common.mw.protocol.*;
-import com.dy.common.mw.protocol.p206V1.ProtocolConstantV206V1;
 import com.dy.common.mw.protocol.p206V2.CodeV2;
 import com.dy.common.mw.protocol.p206V2.ParseParamsForDownV2;
 import com.dy.common.mw.protocol.p206V2.ProtocolConstantV206V2;
-import com.dy.common.mw.protocol.p206V2.parse.global.GlCreate;
+import com.dy.common.mw.protocol.p206V1.parse.global.GlCreate;
 import com.dy.common.util.ByteUtil;
 
 /**
@@ -71,6 +70,8 @@
         index += 2 ;
         GlCreate.createRtuAddr4PUg(para.rtuAddr, preBytes, index);
 
+        GlCreate.createLen4PUg(preBytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
         byte[] bsTail = GlCreate.createCrcTail4Ug(preBytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
 
         return ByteUtil.bytesMerge(preBytes, bsTail) ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1601_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1601_Down.java
index 6b701e3..dcb32aa 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1601_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1601_Down.java
@@ -4,7 +4,7 @@
 import com.dy.common.mw.protocol.p206V2.CodeV2;
 import com.dy.common.mw.protocol.p206V2.ParseParamsForDownV2;
 import com.dy.common.mw.protocol.p206V2.ProtocolConstantV206V2;
-import com.dy.common.mw.protocol.p206V2.parse.global.GlCreate;
+import com.dy.common.mw.protocol.p206V1.parse.global.GlCreate;
 import com.dy.common.softUpgrade.Com1601Vo;
 import com.dy.common.util.ByteUtil;
 
@@ -99,6 +99,8 @@
         ByteUtil.hex2Bytes(vo.softStartAddr, bs, 0) ;
         bytes = ByteUtil.bytesMerge(bytes, bs) ;
 
+        GlCreate.createLen4PUg(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
         byte[] bsTail = GlCreate.createCrcTail4Ug(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
 
         return ByteUtil.bytesMerge(bytes, bsTail) ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1602_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1602_Down.java
index 941a836..4a72d61 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1602_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1602_Down.java
@@ -81,6 +81,8 @@
 
         bytes = ByteUtil.bytesMerge(bytes, (byte[])para.attachment) ;
 
+        GlCreate.createLen4PUg(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
         byte[] bsTail = GlCreate.createCrcTail4Ug(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
 
         return ByteUtil.bytesMerge(bytes, bsTail) ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1603_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1603_Down.java
index f9ad376..5b6b9f9 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1603_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1603_Down.java
@@ -71,6 +71,8 @@
         index += 2 ;
         GlCreate.createRtuAddr4PUg(para.rtuAddr, preBytes, index);
 
+        GlCreate.createLen4PUg(preBytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
         byte[] bsTail = GlCreate.createCrcTail4Ug(preBytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
 
         return ByteUtil.bytesMerge(preBytes, bsTail) ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/global/GlCreate.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/global/GlCreate.java
index 9875718..eb37b70 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/global/GlCreate.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/global/GlCreate.java
@@ -1,5 +1,6 @@
 package com.dy.common.mw.protocol.p206V2.parse.global;
 
+import com.dy.common.mw.protocol.p206V1.ProtocolConstantV206V1;
 import com.dy.common.mw.protocol.p206V2.ProtocolConstantV206V2;
 import com.dy.common.util.*;
 
@@ -54,6 +55,17 @@
         bsNoTail[ProtocolConstantV206V2.dataLenIndex] = (byte)len ;
     }
 
+    public static void createLen4PUg(byte[] bytes) throws Exception {
+        int len = bytes.length - 4;
+        byte[] bs = ByteUtil.short2Bytes_LE((short)len) ;
+        if(bs != null && bs.length == 1){
+            bytes[1] = 0 ;
+            bytes[2] = bs[0] ;
+        }else if(bs != null && bs.length > 1){
+            bytes[1] = bs[1] ;
+            bytes[2] = bs[0] ;
+        }
+    }
 
     /**
      * 鐢熸垚IC鍗$紪鐮�
@@ -83,10 +95,13 @@
     }
 
     public static byte[] createCrcTail4Ug(byte[] bsNoTail) throws Exception {
-        int crc = new CRC16().CRC(bsNoTail, 0, bsNoTail.length -1) ;
+        int crc = new CRC16().CRC16_table(bsNoTail, 0, bsNoTail.length -1) ;
+        byte[] crcBs = new byte[4] ;
+        ByteUtil.int2Bytes_BE(crcBs, crc, 0);
         byte[] bytes = new byte[ProtocolConstantV206V2.UG_lenTail] ;
-        ByteUtilUnsigned.short2Bytes_BE(bytes, crc, 0);
-        bytes[2] = ProtocolConstantV206V2.P_Tail_Byte ;
+        bytes[0] = crcBs[2] ;
+        bytes[1] = crcBs[3] ;
+        bytes[2] = ProtocolConstantV206V1.P_Tail_Byte ;
         return bytes ;
     }
 }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/DriverV202404.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/DriverV202404.java
index 0c2e775..c504d5c 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/DriverV202404.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/DriverV202404.java
@@ -67,7 +67,6 @@
 			if(crcStr != null){
 				return new MidResult[]{(new MidResultError(ProtocolConstantV206V202404.protocolName, rtuAddr, "涓ラ噸閿欒锛屼笂琛屾暟鎹瓹RC妫�鏌ュけ璐ワ紝" + crcStr, null))} ;
 			}
-			rtuAddr = cp.parseRtuAddr(upBuffer) ;
 			upCode = cp.parseCode(upBuffer) ;
 			if(upCode == null){
 				return new MidResult[]{(new MidResultError(ProtocolConstantV206V202404.protocolName, rtuAddr, "涓ラ噸閿欒锛屾湭鑳戒粠涓婅鏁版嵁涓В鏋愬嚭鍔熻兘鐮侊紒", null))} ;
@@ -107,6 +106,7 @@
 					}
 					@Override
 					public void notify(NotifyInfo ...infos) {
+						notify.notify(rtuAddr, ProtocolConstantV206V1.protocolName, ProtocolConstantV206V1.protocolVer, infos);
 					}
 				});
 			}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1600_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1600_Down.java
index c73a6d2..dab5bad 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1600_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1600_Down.java
@@ -70,6 +70,8 @@
         index += 2 ;
         GlCreate.createRtuAddr4PUg(para.rtuAddr, preBytes, index);
 
+        GlCreate.createLen4PUg(preBytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
         byte[] bsTail = GlCreate.createCrcTail4Ug(preBytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
 
         return ByteUtil.bytesMerge(preBytes, bsTail) ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1601_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1601_Down.java
index 31d9552..5c03b60 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1601_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1601_Down.java
@@ -99,6 +99,8 @@
         ByteUtil.hex2Bytes(vo.softStartAddr, bs, 0) ;
         bytes = ByteUtil.bytesMerge(bytes, bs) ;
 
+        GlCreate.createLen4PUg(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
         byte[] bsTail = GlCreate.createCrcTail4Ug(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
 
         return ByteUtil.bytesMerge(bytes, bsTail) ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1602_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1602_Down.java
index 5281b89..cb39f83 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1602_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1602_Down.java
@@ -81,6 +81,8 @@
 
         bytes = ByteUtil.bytesMerge(bytes, (byte[])para.attachment) ;
 
+        GlCreate.createLen4PUg(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
         byte[] bsTail = GlCreate.createCrcTail4Ug(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
 
         return ByteUtil.bytesMerge(bytes, bsTail) ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1603_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1603_Down.java
index b708300..a9a9d24 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1603_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1603_Down.java
@@ -71,6 +71,8 @@
         index += 2 ;
         GlCreate.createRtuAddr4PUg(para.rtuAddr, preBytes, index);
 
+        GlCreate.createLen4PUg(preBytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
         byte[] bsTail = GlCreate.createCrcTail4Ug(preBytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
 
         return ByteUtil.bytesMerge(preBytes, bsTail) ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlCreate.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlCreate.java
index 432a0bf..60e7d69 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlCreate.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlCreate.java
@@ -1,7 +1,5 @@
 package com.dy.common.mw.protocol.p206V202404.parse.global;
 
-import com.dy.common.mw.protocol.p206V1.ProtocolConstantV206V1;
-import com.dy.common.mw.protocol.p206V2.ProtocolConstantV206V2;
 import com.dy.common.mw.protocol.p206V202404.CommonV202404;
 import com.dy.common.mw.protocol.p206V202404.ProtocolConstantV206V202404;
 import com.dy.common.util.*;
@@ -142,23 +140,38 @@
     }
 
     public static void createLen(byte[] bsNoTail) throws Exception {
-        int len = bsNoTail.length - ProtocolConstantV206V1.lenHead2ctrl;
-        bsNoTail[ProtocolConstantV206V1.dataLenIndex] = (byte)len ;
+        int len = bsNoTail.length - ProtocolConstantV206V202404.lenHead2ctrl;
+        bsNoTail[ProtocolConstantV206V202404.dataLenIndex] = (byte)len ;
+    }
+
+    public static void createLen4PUg(byte[] bytes) throws Exception {
+        int len = bytes.length - 4;
+        byte[] bs = ByteUtil.short2Bytes_LE((short)len) ;
+        if(bs != null && bs.length == 1){
+            bytes[1] = 0 ;
+            bytes[2] = bs[0] ;
+        }else if(bs != null && bs.length > 1){
+            bytes[1] = bs[1] ;
+            bytes[2] = bs[0] ;
+        }
     }
 
     public static byte[] createCrcTail(byte[] bsNoTail) throws Exception {
-        int crc = new CRC8_for_2_0().CRC8(bsNoTail, ProtocolConstantV206V1.ctrlIndex, bsNoTail.length -1) ;
-        byte[] bytes = new byte[ProtocolConstantV206V1.lenTail] ;
+        int crc = new CRC8_for_2_0().CRC8(bsNoTail, ProtocolConstantV206V202404.ctrlIndex, bsNoTail.length -1) ;
+        byte[] bytes = new byte[ProtocolConstantV206V202404.lenTail] ;
         bytes[0] = (byte)crc ;
-        bytes[1] = ProtocolConstantV206V1.P_Tail_Byte ;
+        bytes[1] = ProtocolConstantV206V202404.P_Tail_Byte ;
         return bytes ;
     }
 
     public static byte[] createCrcTail4Ug(byte[] bsNoTail) throws Exception {
-        int crc = new CRC16().CRC(bsNoTail, 0, bsNoTail.length -1) ;
-        byte[] bytes = new byte[ProtocolConstantV206V2.UG_lenTail] ;
-        ByteUtilUnsigned.short2Bytes_BE(bytes, crc, 0);
-        bytes[2] = ProtocolConstantV206V2.P_Tail_Byte ;
+        int crc = new CRC16().CRC16_table(bsNoTail, 0, bsNoTail.length -1) ;
+        byte[] crcBs = new byte[4] ;
+        ByteUtil.int2Bytes_BE(crcBs, crc, 0);
+        byte[] bytes = new byte[ProtocolConstantV206V202404.UG_lenTail] ;
+        bytes[0] = crcBs[2] ;
+        bytes[1] = crcBs[3] ;
+        bytes[2] = ProtocolConstantV206V202404.P_Tail_Byte ;
         return bytes ;
     }
 
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/CRC16.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/CRC16.java
index e056bdc..307e1af 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/CRC16.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/CRC16.java
@@ -1,6 +1,8 @@
 package com.dy.common.util;
 
 
+import com.dy.common.mw.protocol.p206V1.ProtocolConstantV206V1;
+
 @SuppressWarnings("unused")
 public final class CRC16 {
 	
@@ -48,57 +50,74 @@
 		}
 		return (short)crc;
 	}
-	
-	
-	
-	 private static final int[] crc16_rev_table = new int[]
-	    {   0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241,
-		    0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440,
-		    0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40,
-		    0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841,
-		    0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40,
-		    0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41,
-		    0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641,
-		    0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040,
-		    0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240,
-		    0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441,
-		    0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41,
-		    0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840,
-		    0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41,
-		    0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40,
-		    0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640,
-		    0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041,
-		    0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240,
-		    0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441,
-		    0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41,
-		    0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840,
-		    0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41,
-		    0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40,
-		    0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640,
-		    0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041,
-		    0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241,
-		    0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440,
-		    0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40,
-		    0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841,
-		    0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40,
-		    0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41,
-		    0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641,
-		    0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040
-	        };
 
+
+	private static final int[] crc16_rev_table = new int[]{
+		0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241,
+		0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440,
+		0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40,
+		0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841,
+		0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40,
+		0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41,
+		0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641,
+		0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040,
+		0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240,
+		0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441,
+		0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41,
+		0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840,
+		0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41,
+		0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40,
+		0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640,
+		0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041,
+		0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240,
+		0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441,
+		0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41,
+		0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840,
+		0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41,
+		0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40,
+		0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640,
+		0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041,
+		0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241,
+		0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440,
+		0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40,
+		0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841,
+		0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40,
+		0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41,
+		0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641,
+		0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040
+	};
+
+	/**
+	 * 16浣嶇殑CRC鍊兼槸鏃犵鍙蜂袱瀛楄妭鏁存暟锛�
+	 * @param bs 瀛楄妭鏁扮粍
+	 * @param startIndex 寮�濮嬩笅鏍�
+	 * @param endIndex 鎴涓嬫爣
+	 * @return CRC
+	 */
+	@SuppressWarnings("unused")
+	public int CRC16_table(byte[] bs, int startIndex, int endIndex) {
+		int x ;
+		int crc = 0xffff;
+		if(bs != null && bs.length >= endIndex + 1){
+			for (int i = startIndex ; i <= endIndex; i++){
+				x =  (crc ^ bs[i]) ;
+				crc =  ((crc >> 8) ^ crc16_rev_table[x & 0x00FF]) ;
+			}
+		}
+		return crc ;
+	}
 	/**
 	 * 16浣嶇殑CRC鍊� 锛屾煡琛ㄦ硶
 	 * @param bs 瀛楄妭鏁扮粍
 	 * @return CRC
 	 */
-	@SuppressWarnings("unused")
-	public int CRC_table(byte[] bs) {
-		int x ;
-		int crc = 0xffff;
+	public short CRC16_table(byte[] bs) {
+		short x ;
+		short crc = (short)0xffff;
 		if(bs != null && bs.length > 0){
 			for(byte b : bs){
-				x = crc ^ b ;
-				crc = (crc >> 8) ^ crc16_rev_table[x & 0x00FF];
+				x = (short)(crc ^ b) ;
+				crc = (short)((crc >> 8) ^ crc16_rev_table[x & 0x00FF]) ;
 			}
 		}
 		return crc ;
@@ -121,6 +140,16 @@
 		System.arraycopy(new byte[] {(byte)(c - ((c / 256) * 256)) }, 0, crc, 1, 1);
 		return crc;
 	}
-	
+
+	public static void main(String[] args) throws Exception {
+		int s = 62430 ;
+		//String hex = "AA0018AA16015301150599800001100000014A005D4D5D4D00004000AA7E16" ;
+		String hex = "AA0018AA16015301150599800001100000014A005D4D5D4D00004000" ;
+		byte[] bs = ByteUtil.hex2Bytes(hex) ;
+		int crc = new CRC16().CRC16_table(bs, 0 , bs.length - 1) ;
+		byte[] crcBs = new byte[4] ;
+		ByteUtil.int2Bytes_BE(crcBs, crc, 0);
+		System.out.println(ByteUtil.bytes2Hex(crcBs, true)) ;
+	}
 
 }
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/rtuMw/Web2RtuMw.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/rtuMw/Web2RtuMw.java
index e4f1d05..c4318f7 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/rtuMw/Web2RtuMw.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/rtuMw/Web2RtuMw.java
@@ -91,12 +91,18 @@
         String url = UriComponentsBuilder.fromUriString(toMwUrl)
                 .build()
                 .toUriString();
-        HttpHeaders headers = new HttpHeaders();
-        HttpEntity<?> httpEntity = new HttpEntity<>(headers);
+
+        //UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url)
+        //        .queryParam("test", test);
+        UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url) ;
+
         ResponseEntity<BaseResponse> response = null;
         try {
-            // 閫氳繃Post鏂瑰紡璋冪敤鎺ュ彛
-            response = restTemplate.exchange(url, HttpMethod.GET, httpEntity, BaseResponse.class);
+            // 閫氳繃Get鏂瑰紡璋冪敤鎺ュ彛
+            response = restTemplate.exchange(builder.toUriString(),
+                    HttpMethod.GET,
+                    new HttpEntity<>(new HttpHeaders()),
+                    BaseResponse.class);
         } catch (Exception e) {
             e.printStackTrace();
             return BaseResponseUtils.buildError("鍚庣绯荤粺鍑洪敊锛屼腑闂翠欢璋冪敤寮傚父");
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/AdapterImp_ProtocolUnit.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/AdapterImp_ProtocolUnit.java
index 7b5c530..c86bb60 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/AdapterImp_ProtocolUnit.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/AdapterImp_ProtocolUnit.java
@@ -7,7 +7,7 @@
 import com.dy.rtuMw.server.forTcp.MidResultActionError;
 import com.dy.rtuMw.server.forTcp.MidResultActionFromRtu;
 import com.dy.rtuMw.server.forTcp.MidResultActionToRtu;
-import com.dy.rtuMw.server.protocolDriver.RtuInfoNotify;
+import com.dy.rtuMw.server.rtuStatus.RtuInfoNotify;
 
 public class AdapterImp_ProtocolUnit implements ProtocolUnitAdapter {
 	
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/RtuStatus.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/RtuStatus.java
index 7737987..aebbf41 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/RtuStatus.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/RtuStatus.java
@@ -89,7 +89,6 @@
 			this.valveCloseLastDt = DateTime.yyyy_MM_dd_HH_mm_ss() ;
 			this.valveStatusLastTimeStamp = System.currentTimeMillis() ;
 		}
-
 	}
 
 }
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/RtuStatusDealer.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/RtuStatusDealer.java
index 2ec4fb6..9f8c204 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/RtuStatusDealer.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/RtuStatusDealer.java
@@ -22,18 +22,27 @@
 	 * 寰楀埌閮ㄥ垎鐘舵��
 	 * @return
 	 */
-	public static Map<String, RtuStatus> partStatus(String[] rtuAddrArrGrp){
+	public static Map<String, RtuStatus> someStatus(String[] rtuAddrArrGrp){
 		synchronized (map){
-			Map<String, RtuStatus> map = new HashMap<>();
+			Map<String, RtuStatus> rsMap = new HashMap<>();
 			for(String rtuAddr : rtuAddrArrGrp){
 				RtuStatus status = map.get(rtuAddr) ;
 				if(status != null){
-					map.put(rtuAddr, status) ;
+					rsMap.put(rtuAddr, status) ;
 				}
 			}
-			return map ;
+			return rsMap ;
 		}
 	}
+	/**
+	 * 寰楀埌涓�涓猂TU鐨勭姸鎬�
+	 * @return
+	 */
+	public static RtuStatus oneStatus(String rtuAddr){
+		return map.get(rtuAddr) ;
+	}
+
+
 	public static void onLine(String rtuAddr, String ip, Integer port, String protocolName, Short protocolVersion){
 		RtuStatus vo = map.get(rtuAddr) ;
 		if(vo == null) {
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java
index cc82cf0..d03d826 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java
@@ -113,19 +113,6 @@
 	 * 寰楀埌Tcp閫氫俊鍗忚鍚嶇О
 	 * @param rtuAddr
 	 * @return
-	public static String getTcpProtocolName(String rtuAddr){
-		TcpSession tcpSe = sessionTable.get(rtuAddr) ;
-		if(tcpSe != null){
-			return tcpSe.protocolName ;
-		}else{
-			return null ;
-		}
-	}
-	 */
-	/**
-	 * 寰楀埌Tcp閫氫俊鍗忚鍚嶇О
-	 * @param rtuAddr
-	 * @return
 	 * */
 	public static Object[] getTcpProtocolNameVersion(String rtuAddr){
 		TcpSession tcpSe = map.get(rtuAddr) ;
@@ -194,50 +181,7 @@
 			return map ;
 		}
 	}
-//
-//	/**
-//	 * 寰楀埌鎵�鏈塕TU杩炴帴鐘舵�佹儏鍐�
-//	 * @return
-//	 */
-//	public static List<RtuSessionStatus> allConnectStatus(){
-//		synchronized (sessionTable){
-//			List<RtuSessionStatus> list = new ArrayList<RtuSessionStatus>();
-//			Iterator<Entry<String, TcpSession>> it = sessionTable.entrySet().iterator() ;
-//			Entry<String, TcpSession> entry = null ;
-//			while(it.hasNext()){
-//				entry = it.next() ;
-//				RtuSessionStatus vo = new RtuSessionStatus() ;
-//				vo.rtuAddr = entry.getKey() ;
-//				IoSession se = entry.getValue().ioSession ;
-//				vo.onTrueOffLine = se.isConnected() ;
-//				InetSocketAddress sa = (InetSocketAddress)se.getRemoteAddress() ;
-//				if(sa != null){
-//					InetAddress inetAddr = sa.getAddress() ;
-//					if(inetAddr != null){
-//						vo.ip = inetAddr.getHostAddress() ;
-//						vo.port = sa.getPort() ;
-//					}
-//				}
-//				list.add(vo) ;
-//			}
-//			return list ;
-//		}
-//	}
-//
-	
-	/**
-	 * 寰楀埌IoSession
-	 * @param rtuAddr
-	 * @return
-	 */
-//	public IoSession getIoSession(String rtuAddr){
-//		TcpSession tcpSe = sessionMap.get(rtuAddr) ;
-//		if(tcpSe != null){
-//			return tcpSe.ioSession ;
-//		}
-//		return null ;
-//	}
-	
+
 	/**
 	 * 缃戠粶鏄惁杩炴帴
 	 * @param rtuAddr
@@ -312,21 +256,5 @@
 			}
 		}
 	}
-
-//	public static void updateRtuStatus(Long now){
-//		synchronized (sessionTable){
-//			Iterator<TcpSession> it = sessionTable.values().iterator() ;
-//			TcpSession tcpSe ;
-//			while(it.hasNext()){
-//				tcpSe = it.next() ;
-//				if(tcpSe.lastUpDataTime != null){
-//					if(now - tcpSe.lastUpDataTime > ServerProperties.lastUpDataTimeLive){
-//						tcpSe.lastUpDataTime = null ;
-//					}
-//				}
-//			}
-//		}
-//	}
-
 
 }
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/CommandInnerDeaLer.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/CommandInnerDeaLer.java
index 3441197..c26ef26 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/CommandInnerDeaLer.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/CommandInnerDeaLer.java
@@ -34,7 +34,9 @@
         }else if(code.equals(CodeLocal.allRtuStates)){
             return this.allRtuStates(com) ;
         }else if(code.equals(CodeLocal.partRtuStates)){
-            return this.partRtuStates(com) ;
+            return this.someRtuStates(com) ;
+        }else if(code.equals(CodeLocal.oneRtuStates)){
+            return this.oneRtuStates(com) ;
         }else if(code.equals(CodeLocal.allProtocols)){
             return this.allProtocols(com) ;
         }else if(code.equals(CodeLocal.stopTcpSv)){
@@ -101,10 +103,10 @@
      * 鏌ヨ閮ㄥ垎RTU鐘舵��
      * @throws Exception
      */
-    private Command partRtuStates(Command command) throws Exception{
+    private Command someRtuStates(Command command) throws Exception{
         if(command.param != null && command.param instanceof String && !command.param.equals("")){
             String[] rtuAddrGrp = ((String)command.param).split(",");
-            Map<String, RtuStatus> map = new RtuStatusDeal().dealPart(rtuAddrGrp) ;
+            Map<String, RtuStatus> map = new RtuStatusDeal().dealSome(rtuAddrGrp) ;
             return ReturnCommand.successed("鏌ヨ閮ㄥ垎RTU鐘舵�佺粨鏋�", command.getId(), command.getCode(), map) ;
         }else{
             return ReturnCommand.errored("鍑洪敊锛屽懡浠ゅ弬鏁板簲璇ユ槸鎵�鏌ヨRTU鐨勫湴鍧�涓�",  command.getId(), command.getCode()) ;
@@ -112,6 +114,20 @@
     }
 
     /**
+     * 鏌ヨ閮ㄥ垎RTU鐘舵��
+     * @throws Exception
+     */
+    private Command oneRtuStates(Command command) throws Exception{
+        if(command.param != null && command.param instanceof String && !command.param.equals("")){
+            String rtuAddr = (String)command.param;
+            RtuStatus rtuStatus = new RtuStatusDeal().dealOne(rtuAddr) ;
+            return ReturnCommand.successed("鏌ヨ閮ㄥ垎RTU鐘舵�佺粨鏋�", command.getId(), command.getCode(), rtuStatus) ;
+        }else{
+            return ReturnCommand.errored("鍑洪敊锛屽懡浠ゅ弬鏁板簲璇ユ槸鎵�鏌ヨRTU鐨勫湴鍧�",  command.getId(), command.getCode()) ;
+        }
+    }
+
+    /**
      * 鏌ヨ鎵�鏈塕TU鍗忚閰嶇疆
      * @throws Exception
      */
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/CodeLocal.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/CodeLocal.java
index 02a1783..9337b04 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/CodeLocal.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/CodeLocal.java
@@ -14,6 +14,8 @@
 
 	public static final String partRtuStates = "LCD0011" ;//鏌ヨ閮ㄥ垎RTU鐘舵��
 
+	public static final String oneRtuStates = "LCD0012" ;//鏌ヨ涓�涓猂TU鐘舵��
+
 	public static final String allProtocols = "LCD0100" ;//鏌ヨ鎵�鏈夊崗璁厤缃�
 
 	public static final String stopTcpSv = "LCD0110" ;//鍋滄TCP鏈嶅姟锛屼笉鍐嶆帴鍏ユ柊鐨凾CP杩炴帴锛屽凡缁廡CP杩炴帴鐨勫叏閮ㄦ柇杩炴帴
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/RtuStatusDeal.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/RtuStatusDeal.java
index 7103e28..d5c23c7 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/RtuStatusDeal.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/RtuStatusDeal.java
@@ -12,7 +12,7 @@
 public class RtuStatusDeal {
 
     /**
-     * 鏌ヨ鍦ㄧ嚎涓庝笉鍦ㄧ嚎鎯呭喌
+     * 鏌ヨ鐘舵��
      */
     public Map<String, RtuStatus> dealAll(){
         return RtuStatusDealer.allStatus();
@@ -20,9 +20,18 @@
 
 
     /**
-     * 鏌ヨ鍦ㄧ嚎涓庝笉鍦ㄧ嚎鎯呭喌
+     * 鏌ヨ鐘舵��
      */
-    public Map<String, RtuStatus> dealPart(String[] rtuAddrGrp){
-        return RtuStatusDealer.partStatus(rtuAddrGrp) ;
+    public Map<String, RtuStatus> dealSome(String[] rtuAddrGrp){
+        return RtuStatusDealer.someStatus(rtuAddrGrp) ;
+    }
+
+
+
+    /**
+     * 鏌ヨ鐘舵��
+     */
+    public RtuStatus dealOne(String rtuAddr){
+        return RtuStatusDealer.oneStatus(rtuAddr) ;
     }
 }
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/protocolDriver/RtuInfoNotify.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuStatus/RtuInfoNotify.java
similarity index 96%
rename from pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/protocolDriver/RtuInfoNotify.java
rename to pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuStatus/RtuInfoNotify.java
index b22a455..9edb6ee 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/protocolDriver/RtuInfoNotify.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuStatus/RtuInfoNotify.java
@@ -1,4 +1,4 @@
-package com.dy.rtuMw.server.protocolDriver;
+package com.dy.rtuMw.server.rtuStatus;
 
 import com.dy.common.mw.protocol.Notify;
 import com.dy.common.mw.protocol.NotifyInfo;
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/web/com/CommandCtrl.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/web/com/CommandCtrl.java
index 2a4f64c..b96b485 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/web/com/CommandCtrl.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/web/com/CommandCtrl.java
@@ -165,15 +165,17 @@
      * 鎺ユ敹web绯荤粺鍙戞潵寮哄埗缁撴潫鍗囩骇浠诲姟
      * @return
      */
-    @GetMapping(path = "ugForceOver", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @GetMapping(path = "ugForceOver")
     public BaseResponse<String> ugForceOver() {
         log.info("鏀跺埌鍋滄RTU鍗囩骇浠诲姟鍛戒护") ;
         try{
             String mes = UpgradeUnit.getInstance().forceOverUpgradeTask();
             if(mes == null){
                 mes = "鍋滄鍗囩骇浠诲姟鎴愬姛" ;
+                return BaseResponseUtils.buildResult(ResultCodeMsg.RsCode.SUCCESS_CODE, mes, mes);
+            }else{
+                return BaseResponseUtils.buildResult(ResultCodeMsg.RsCode.FAIL_CODE, mes, mes);
             }
-            return BaseResponseUtils.buildResult(ResultCodeMsg.RsCode.SUCCESS_CODE, mes, mes);
         }catch (Exception e){
             log.error("鍋滄RTU鍗囩骇浠诲姟鏃跺彂鐢熷紓甯�", e);
             return BaseResponseUtils.buildError("鍋滄RTU鍗囩骇浠诲姟鏃跺彂鐢熷紓甯�" + (e.getMessage() == null?"":("锛�" + e.getMessage())));
@@ -207,24 +209,10 @@
             //閫氫俊涓棿浠跺唴閮ㄥ懡浠わ紝渚嬪鏌ヨ鐩戞帶涓棿浠舵椂閽燂紝鏌ヨRTU鍦ㄧ嚎鎯呭喌绛�
             try{
                 Command reCom = new CommandInnerDeaLer().deal(com) ;
-                /*
-                boolean error = false ;
-                if(reCom.param != null && reCom.param != null){
-                    CommandBackParam cbp = (CommandBackParam)reCom.param ;
-                    if(cbp.getSuccess() != null && !cbp.getSuccess().booleanValue()){
-                        error = true ;
-                        return BaseResponseUtils.buildError(ReturnCommand.errored(cbp.getMessage(), com.getId(), null));
-                    }
-                }
-                if(!error){
-                    return BaseResponseUtils.buildError(ReturnCommand.errored(cbp.getMessage(), com.getId(), null));
-                }
-                */
                 return BaseResponseUtils.buildSuccess(reCom);
             }catch(Exception e){
                 return BaseResponseUtils.buildError(ReturnCommand.errored("澶勭悊鍐呴儴鍛戒护鍑洪敊" + (e.getMessage() == null?"":("锛�" + e.getMessage())), com.getId(), com.getCode()) );
             }
-
         }else if(commandType.equals(CommandType.outerCommand)){
             //鍙戝悜RTU鐨勫閮ㄥ懡浠わ紝寮傛澶勭悊锛寃eb绔痡roups鎴愬憳鍚屾寰楀埌鍛戒护澶勭悊缁撴灉锛屼絾鏋勯�犲懡浠ゅ強涓嬪彂鍛戒护鍜屽懡浠ょ粨鏋滄帴鏀惰寮傛寰楀埌
             try{
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeCtrl.java
index a618170..146c7c0 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeCtrl.java
@@ -144,7 +144,12 @@
         BaseResponse res = sendGetRequest2Mw(restTemplate, rqUrl) ;
         if(res != null){
             if(res.isSuccess()){
-                return BaseResponseUtils.buildSuccess(true) ;
+                RtuUpgradeStateReceiverCtrl.afterMwForceOverCurUgTask();
+                String msg = res.getContent()==null?null:(String)res.getContent() ;
+                if(msg == null){
+                    msg = res.getMsg() ;
+                }
+                return BaseResponseUtils.buildResult(ResultCodeMsg.RsCode.SUCCESS_CODE, msg, msg) ;
             }else{
                 String msg = res.getContent()==null?null:(String)res.getContent() ;
                 if(msg == null){
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeStateReceiverCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeStateReceiverCtrl.java
index 9a8f18f..37a7fee 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeStateReceiverCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeStateReceiverCtrl.java
@@ -42,6 +42,13 @@
     private RtuUpgradeSv sv ;
 
     /**
+     * 寮哄埗缁撴潫鍗囩骇浠诲姟閫氫俊涓棿浠舵垚鍔熸墽琛屽悗
+     */
+    public static void afterMwForceOverCurUgTask(){
+        cache = null ;
+    }
+
+    /**
      * rtu杩滅▼鍗囩骇浠诲姟閫氫俊涓棿浠舵墽琛屾儏鍐电粺璁″洖鏀�
      * @param info 鏁版嵁
      * @return 鎿嶄綔缁撴灉
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java
index 31e7ab8..b144bb3 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cardOperate/CardOperateSv.java
@@ -416,30 +416,57 @@
         for (int i = list.size()-1; i >= 0 ; i--) {
             Optional.ofNullable(list.get(i).getGift()).orElse(0d);
             if (!list.get(i).getGift().equals(0d)){
-                Double gift1 = list.get(i).getGift();
-                String districtTitle = list.get(i).getDistrictTitle();
-                String clientNum = list.get(i).getClientNum();
-                String clientName = list.get(i).getClientName();
-                String phone = list.get(i).getPhone();
-                Date tradeTime = list.get(i).getTradeTime();
+                Double gift1 = list.get(i).getGift();//璧犻�侀噾棰�
+                String districtTitle = list.get(i).getDistrictTitle();//鍦板潃
+                String clientNum = list.get(i).getClientNum();//鍐滄埛缂栧彿
+                String clientName = list.get(i).getClientName();//鍐滄埛濮撳悕
+                String phone = list.get(i).getPhone();//鎵嬫満鍙�
+                Date tradeTime = list.get(i).getTradeTime();//浜ゆ槗鏃堕棿
+                String orderNumber = list.get(i).getOrderNumber();//璁㈠崟缂栧彿
+                String cardNum = list.get(i).getCardNum();//鍗$紪鍙�
+                String idCard = list.get(i).getIdCard();//韬唤璇�
+                String cashierName = list.get(i).getCashierName();//鎿嶄綔浜�
+                Double money = list.get(i).getMoney();//浣欓
+                Double cardCost1 = list.get(i).getCardCost();//璐崱閲戦
+                Double tradeAmount = list.get(i).getTradeAmount();//浜ゆ槗閲戦
+                Double waterCost1 = list.get(i).getWaterCost();//璐按閲戦
+                Double refundAmount1 = list.get(i).getRefundAmount();//杩斿洖閲戦
+                String paymentName = list.get(i).getPaymentName();//鏀粯鏂瑰紡
+                String operateType = list.get(i).getOperateType();//涓氬姟绫诲瀷
+                String cardState = list.get(i).getCardState();//鍗$姸鎬�
+                Long villageId = list.get(i).getVillageId();//鏉慽d
+                Long cashierId = list.get(i).getCashierId();//鏀堕摱鍛榠d
 
                 list.get(i).setGift(0d);
+                list.get(i).setMoney(money-gift1);
 
                 VoTradeDetails voTradeDetail = new VoTradeDetails();
-                voTradeDetail.setDistrictTitle(districtTitle);
-                voTradeDetail.setClientNum(clientNum);
-                voTradeDetail.setClientName(clientName);
-                voTradeDetail.setPhone(phone);
-                voTradeDetail.setOperateType("璧犻��");
-                voTradeDetail.setTradeTime(tradeTime);
-                voTradeDetail.setWaterCost(0d);
-                voTradeDetail.setCardCost(0d);
-                voTradeDetail.setGift(gift1);
+                voTradeDetail.setDistrictTitle(districtTitle);//2
+                voTradeDetail.setClientNum(clientNum);//2
+                voTradeDetail.setClientName(clientName);//2
+                voTradeDetail.setPhone(phone);//2
+                voTradeDetail.setOperateType("璧犻��");//2
+                voTradeDetail.setTradeTime(tradeTime);//2
+                voTradeDetail.setWaterCost(0d);//2
+                voTradeDetail.setCardCost(0d);//2
+                voTradeDetail.setGift(gift1);//2
+                voTradeDetail.setTradeAmount(0d);//2
+                voTradeDetail.setRefundAmount(refundAmount1);//2
+                voTradeDetail.setMoney(money);//寰�2
+                voTradeDetail.setPaymentName("璧犻��");//2
+                voTradeDetail.setOrderNumber(orderNumber);//2
+                voTradeDetail.setCardNum(cardNum);//2
+                voTradeDetail.setIdCard(idCard);//2
+                voTradeDetail.setCashierName(cashierName);//2
+                voTradeDetail.setCashierId(cashierId);//2
+                voTradeDetail.setCardState(cardState);//2
+                voTradeDetail.setVillageId(villageId);//2
 
                 list.add(voTradeDetail);
                 itemTotal = itemTotal + 1;
             }
         }
+        list.sort(Comparator.comparing(VoTradeDetails::getTradeTime));
         rsVo.obj = list;
         rsVo.calculateAndSet(itemTotal, params);
 

--
Gitblit v1.8.0