From ee6e575076ba17c1fc8f4ba33253b7ea0fba45f8 Mon Sep 17 00:00:00 2001
From: wuzeyu <1223318623@qq.com>
Date: 星期四, 30 十一月 2023 10:25:04 +0800
Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV

---
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/Code.java                  |    8 
 pipIrr-platform/pipIrr-web/pipIrr-web-sso/.gitignore                                                                |    1 
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/LocalCodecFactory.java     |    8 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/threadPool/ThreadPoolImp.java                             |   95 +-
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Data.java                                     |    4 
 pipIrr-platform/pipIrr-mw/pom.xml                                                                                   |   13 
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiClUnit.java             |   33 
 pipIrr-platform/文档/文件加入了 .gitignore,但还是被 git 跟踪.docx                                                                |    0 
 pipIrr-platform/pipIrr-web/.gitignore                                                                               |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/ServerProperties.java                |   22 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Command.java                                  |   11 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mybatis/envm/Deleted.java                                 |    8 
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/resources/log4j2.xml                                        |   39 +
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/LocalDecoder.java          |   31 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/fastjson/FastJsonConfig.java                              |    7 
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/MyThreadJob.java           |  130 +++
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpConnect.java            |   18 
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/MwConfigVo.java               |  103 +++
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/Server.java                          |  169 +++++
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/MwTestClientStatus.java       |   58 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mybatis/envm/Disabled.java                                |    8 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/p206V1_0_0/TkPreGenObjs.java |   82 ++
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/ServerProperties.java                |    8 
 pipIrr-platform/pipIrr-global/.gitignore                                                                            |    2 
 pipIrr-platform/pipIrr-mw/.gitignore                                                                                |   32 
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpClUnitConfigVo.java     |    2 
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/console/CommandConsole.java          |   91 ++
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/console/Command.java                 |  128 +++
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/LocalEncoder.java          |   22 
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/pom.xml                                                              |  119 +++
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/AdapterImp_TcpClUnit.java            |    0 
 pipIrr-platform/pipIrr-web/pom.xml                                                                                  |    6 
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/Manager.java                  |  192 +++++
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpHandler.java            |   77 ++
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/resources/Config.xml                                        |    8 
 /dev/null                                                                                                           |  154 ----
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/Server.java                          |   28 
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/ResConfigVo.java           |   42 
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/resources/Config.xml                                        |   35 +
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/Code.java                     |   16 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/DataDecoder.java                           |   14 
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiResponseVo.java         |   12 
 pipIrr-platform/pipIrr-common/pom.xml                                                                               |    6 
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpClUnit.java             |   55 +
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/resources/log4j2.xml                                        |   31 
 45 files changed, 1,603 insertions(+), 327 deletions(-)

diff --git a/pipIrr-platform/pipIrr-common/pom.xml b/pipIrr-platform/pipIrr-common/pom.xml
index dac97f0..2b86036 100644
--- a/pipIrr-platform/pipIrr-common/pom.xml
+++ b/pipIrr-platform/pipIrr-common/pom.xml
@@ -56,6 +56,12 @@
         <dependency>
             <groupId>com.fasterxml.jackson.dataformat</groupId>
             <artifactId>jackson-dataformat-yaml</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
 
         <!-- api鍦ㄧ嚎鏂囨。  https://springdoc.org/#modules-->
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/fastjson/FastJsonConfig.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/fastjson/FastJsonConfig.java
index 477f78a..e57c5dc 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/fastjson/FastJsonConfig.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/fastjson/FastJsonConfig.java
@@ -12,6 +12,9 @@
 import java.util.ArrayList;
 import java.util.List;
 
+/**
+ * 蹇呴』瀹炵幇WebMvcConfigurer鍚﹀垯涓嶅惎浣滅敤锛屽嵆Controller杞琷son鏃朵笉鐢╢astjson
+ */
 @Configuration
 public class FastJsonConfig implements WebMvcConfigurer {
     /**
@@ -29,12 +32,12 @@
                 JSONWriter.Feature.WriteMapNullValue,
                 //杈撳嚭null鐨刡oolean 涓� false
                 JSONWriter.Feature.WriteNullBooleanAsFalse,
-                //鎶奓ong鍨嬭緭鍑轰负String
+                //鎶奓ong鍨嬭緭鍑轰负String锛屽湪pojo鐨勫睘鎬т腑涓�ц缃�
                 //JSONWriter.Feature.WriteLongAsString,
                 //杈撳嚭null鐨刲ist 涓� []
                 JSONWriter.Feature.WriteNullListAsEmpty,
                 //杈撳嚭null鐨刵umber 涓� 0
-                JSONWriter.Feature.WriteNullNumberAsZero,
+                //JSONWriter.Feature.WriteNullNumberAsZero,
                 //杈撳嚭null瀛楃涓� 涓� ""
                 JSONWriter.Feature.WriteNullStringAsEmpty,
                 //瀵筸ap杩涜鎺掑簭
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/DataDecoder.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/DataDecoder.java
index 28720a5..b359815 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/DataDecoder.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/DataDecoder.java
@@ -28,15 +28,15 @@
 	 * 	org.apache.mina.filter.codec.ProtocolDecoderOutput)
 	 */
 	protected boolean doDecode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) {
-		String meterNo = (String)session.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrIdKey) ;
-		if(meterNo == null){
+		String rtuAddr = (String)session.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrIdKey) ;
+		if(rtuAddr == null){
 			//浼氳瘽鏈绠$悊
 			//浼氳瘽绠$悊鍣ㄤ腑涓嶅瓨鍦ㄦ浼氳瘽锛岃鏄庡垰寤虹珛缃戠粶杩炴帴锛�
 			return this.doDecode_onLineData(session, in, out) ;
 		}else{
 			//浼氳瘽宸茶绠$悊
 			//浼氳瘽绠$悊鍣ㄤ腑瀛樺湪姝や細璇濓紝璇存槑宸茬粡涓婄嚎浜嗭紝
-			return this.doDecode_data(session, in, out, meterNo) ;
+			return this.doDecode_data(session, in, out, rtuAddr) ;
 		}
 	}
 	
@@ -73,16 +73,16 @@
 	 * @param session IO浼氳瘽
 	 * @param in 杈撳叆Buffer
 	 * @param out 鍗忚杈撳嚭缂栫爜
-	 * @param meterNo 鎺у埗鍣ㄧ紪鍙�
+	 * @param rtuAddr 鎺у埗鍣ㄥ湴鍧�
 	 * @return 鏄惁姝eソ鎴栫矘鍖�
 	 */
 	@SuppressWarnings("unused")
-	private boolean doDecode_data(IoSession session, IoBuffer in, ProtocolDecoderOutput out, String meterNo) {
+	private boolean doDecode_data(IoSession session, IoBuffer in, ProtocolDecoderOutput out, String rtuAddr) {
 		//闈炰笂绾挎暟鎹紝鍙兘浼氬嚭鐜版柇鍖呮垨绮樺寘鐜拌薄
 		PrefixedDataAvailableStatus dataStatus = this.pdaHandle.forUpData(in) ;
 		if(dataStatus == null){
 			//涓嶅彲鑳藉彂鐢�
-			log.error("涓ラ噸閿欒锛孯tu (姘磋〃鍙蜂负" + meterNo + ")涓婅鏁版嵁瀹屾暣鎬ф鏌ユ椂锛岃繑鍥炵殑瀵硅薄涓虹┖銆�") ;
+			log.error("涓ラ噸閿欒锛孯tu (RTU" + rtuAddr + ")涓婅鏁版嵁瀹屾暣鎬ф鏌ユ椂锛岃繑鍥炵殑瀵硅薄涓虹┖銆�") ;
 			this.nextDeal(in, null, out) ;
 			return true;
 		}else{
@@ -94,7 +94,7 @@
 				this.nextDeal(in, dataStatus.getDataLen(), out) ;
 				if(dataStatus.isAdjoined()){
 					//璇存槑绮樺寘浜嗭紝杩樻湁鏁版嵁锛岄渶瑕佸杩欎簺鏁版嵁鍐嶆鎵цdoDecode_鏂规硶.
-					return this.doDecode_data(session, in, out, meterNo) ;//鍔犱笂閫掑綊
+					return this.doDecode_data(session, in, out, rtuAddr) ;//鍔犱笂閫掑綊
 				}else if(dataStatus.isCompleted()){
 					//鏁版嵁涓嶆柇涓嶇矘
 					return true;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Command.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Command.java
index 674046b..39bd450 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Command.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Command.java
@@ -177,17 +177,6 @@
 		
 		return this ;
 	}
-	/*
-	public static void main(String[] args){
-		String json = "{\"attachment\":null,\"code\":\"03\",\"deviceId\":\"d8c9601f214747d98d47a4736e5\",\"id\":\"999999999\",\"meterNo\":\"23040600377\",\"productId\":16873252,\"param\":\"0002\",\"protocol\":\"HAC_NBhV2_5\",\"rtuAddr\":\"863318060168996\",\"type\":\"outerCommand\"}" ;
-		try {
-			Command com = jsonToObject(json) ;
-			System.out.println(com.param);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-	 */
 
 	public String getId() {
 		return id;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Data.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Data.java
index cbc9b69..3df78c2 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Data.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Data.java
@@ -60,12 +60,10 @@
 		Data d = new Data() ;
 		d.code = "01" ;
 		d.rtuAddr = "123234" ;
-		d.meterNo = "1234567890123456" ;
 
 		DataV1_0_1 subD = new DataV1_0_1() ;
 		subD.rtuAddr = "2342345" ;
-		subD.meterNo = "1234567890123456" ;
-		
+
 		d.subData = subD ;
 		
 		
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mybatis/envm/Deleted.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mybatis/envm/Deleted.java
index 6e073f7..923f23e 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mybatis/envm/Deleted.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mybatis/envm/Deleted.java
@@ -16,6 +16,14 @@
         this.name = name ;
     }
 
+    /**
+     * 瀹為檯涓婅浆json锛岃Pojo鐨勫搴斿睘鎬�
+     * @return json
+     */
+//    public String toString(){
+//        return "{\"code\":" + this.code + "," + "\"name\":" + this.name + "}" ;
+//    }
+
     @Override
     public Byte getCode() {
         return this.code ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mybatis/envm/Disabled.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mybatis/envm/Disabled.java
index b16444b..830a561 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mybatis/envm/Disabled.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mybatis/envm/Disabled.java
@@ -16,6 +16,14 @@
         this.name = name ;
     }
 
+    /**
+     * 瀹為檯涓婅浆json锛岃Pojo鐨勫搴斿睘鎬�
+     * @return json
+     */
+    //public String toString(){
+    //    return "{\"code\":" + this.code + "," + "\"name\":" + this.name + "}" ;
+    //}
+
     @Override
     public Byte getCode() {
         return this.code ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/threadPool/ThreadPoolImp.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/threadPool/ThreadPoolImp.java
index 204d758..15cb864 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/threadPool/ThreadPoolImp.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/threadPool/ThreadPoolImp.java
@@ -73,38 +73,7 @@
 		/**
 		 * 鏃ュ織 
 		 */
-		private Logger log = LogManager.getLogger(MonitorThread.class.getName());
-		
-		/**
-		 * 寰楀埌榛樿鍞竴瀹炰緥
-		 * @return
-		 */
-//		public MyThreadPool getDefaultInstance(){
-//			if(myPool == null){
-//				myPool = new MyThreadPool(null, null, null, null, null) ;
-//			}
-//			return myPool ;
-//		}
-		/**
-		 * 寰楀埌鍞竴瀹炰緥
-		 * @param poolName
-		 * @param maxNum
-		 * @param minNum
-		 * @param freeTimeout
-		 * @param busyTimeout
-		 * @return
-		 */
-//		public MyThreadPool getInstance(
-//				String poolName , 
-//				Integer maxNum , 
-//				Integer minNum ,
-//				Long freeTimeout ,
-//				Long busyTimeout){
-//			if(myPool == null){
-//				myPool = new MyThreadPool(poolName, maxNum, minNum, freeTimeout, busyTimeout) ;
-//			}
-//			return myPool ;
-//		}
+		private static final Logger log = LogManager.getLogger(MonitorThread.class) ;
 
 		/**
 		 * 绾跨▼姹犳瀯閫犳柟娉�
@@ -125,8 +94,8 @@
 			}
 			this.poolName = poolName ;
 			
-			if(maxNum == null || maxNum.intValue() <= 0){
-				maxNum = -1 ;
+			if(maxNum == null || maxNum.intValue() < 0){
+				maxNum = 65535 ;
 			}
 			if(minNum == null || minNum.intValue() < 0){
 				minNum = 0 ;
@@ -148,20 +117,19 @@
 			}else{
 				this.busyTimeout = busyTimeout ;	
 			}
-
-			this.busiThreads = new ArrayList<MyThread>();
-			this.freeThreads = new ArrayList<MyThread>();
-
-			//鏈�灏忓寲绾跨▼姹�
-			for (int i = 0; i < this.minNum ; i++) {
-				MyThread t = new MyThread(this);
-				t.start();
-				this.freeThreads.add(t);
-				this.currNum++;
+			if(maxNum != 0){
+				this.busiThreads = new ArrayList<>();
+				this.freeThreads = new ArrayList<>();
+				//鏈�灏忓寲绾跨▼姹�
+				for (int i = 0; i < this.minNum ; i++) {
+					MyThread t = new MyThread(this);
+					t.start();
+					this.freeThreads.add(t);
+					this.currNum++;
+				}
+				this.monitorThread = new MonitorThread(this) ;
+				this.monitorThread.start() ;
 			}
-			
-			this.monitorThread = new MonitorThread(this) ;
-			this.monitorThread.start() ;
 		}
 
 		/**
@@ -171,6 +139,9 @@
 		 */
 		@Override
 		public void putJob(Job job) throws Exception {
+			if(this.busiThreads == null || this.freeThreads == null){
+				throw new Exception("绾跨▼姹犳湭鍚姩") ;
+			}
 			synchronized(this.synObj) {
 				//log.debug("宸ヤ綔浠诲姟鍒嗛厤鍒扮嚎绋嬫睜涓��") ;
 				MyThread t = null ;
@@ -215,7 +186,10 @@
 		/**
 		 * 绾跨▼宸ヤ綔瀹屾垚锛屼粠busiThreads鍥炲綊freeThreads
 		 */
-		protected void freeThread(MyThread t) {
+		protected void freeThread(MyThread t) throws Exception {
+			if(this.busiThreads == null || this.freeThreads == null){
+				throw new Exception("绾跨▼姹犳湭鍚姩") ;
+			}
 			synchronized (synObj) {
 				busiThreads.remove(t);
 				freeThreads.add(t);
@@ -236,7 +210,7 @@
 
 			/**
 			 * 
-			 * @param pool
+			 * @param pool 姹�
 			 */
 			public MonitorThread(MyThreadPool pool){
 				this.pool = pool ;
@@ -302,6 +276,7 @@
 							}
 						}//end synchronized (pool.synObj)
 					}catch(Exception e){
+						e.printStackTrace();
 					}finally{
 						continue ;
 					}
@@ -354,7 +329,7 @@
 		
 		/**
 		 * 璁剧疆绾跨▼宸ヤ綔瀵硅薄
-		 * @param job
+		 * @param job 宸ヤ綔
 		 */
 		protected void putJob(Job job) throws Exception {
 			if(job == null){
@@ -418,13 +393,19 @@
 		}
 		
 		public void free(){
-			//浣挎湰绾跨▼鍥炲綊绌洪棽绾跨▼姹�
-			pool.freeThread(this);
-			//绌洪棽寮�濮嬭鏃�
-			this.time = System.currentTimeMillis() ;
-			// 娌℃湁鍙仛鐨勪簡
-			this.canJob = false;
-			log.debug("绾跨▼姹�(" + this.pool.poolName + ")涓殑绾跨▼鍥炲綊绌洪棽闆嗗悎銆�");
+			try{
+				//浣挎湰绾跨▼鍥炲綊绌洪棽绾跨▼姹�
+				pool.freeThread(this);
+				//绌洪棽寮�濮嬭鏃�
+				this.time = System.currentTimeMillis() ;
+				// 娌℃湁鍙仛鐨勪簡
+				this.canJob = false;
+				log.debug("绾跨▼姹�(" + this.pool.poolName + ")涓殑绾跨▼鍥炲綊绌洪棽闆嗗悎銆�");
+			}catch (Exception e){
+				log.error("绾跨▼姹�(" + pool.poolName + ")鐨勫伐浣滅嚎绋嬮噴鏀惧洖褰掓椂鍙戠敓寮傚父:\n" + e.getMessage(), e);
+				e.printStackTrace();
+			}
+
 		}
 
 		/**
diff --git a/pipIrr-platform/pipIrr-global/.gitignore b/pipIrr-platform/pipIrr-global/.gitignore
index 586e5b4..bc1fdd3 100644
--- a/pipIrr-platform/pipIrr-global/.gitignore
+++ b/pipIrr-platform/pipIrr-global/.gitignore
@@ -1,2 +1,2 @@
 target/
-/pipIrr-global.iml
+/pipIrr-global.iml
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/pipIrr-global.iml b/pipIrr-platform/pipIrr-global/pipIrr-global.iml
deleted file mode 100644
index 016a445..0000000
--- a/pipIrr-platform/pipIrr-global/pipIrr-global.iml
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
-  <component name="FacetManager">
-    <facet type="web" name="Web">
-      <configuration>
-        <webroots />
-        <sourceRoots>
-          <root url="file://$MODULE_DIR$/src/main/java" />
-          <root url="file://$MODULE_DIR$/src/main/resources" />
-        </sourceRoots>
-      </configuration>
-    </facet>
-    <facet type="Spring" name="Spring">
-      <configuration />
-    </facet>
-  </component>
-  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_16">
-    <output url="file://$MODULE_DIR$/target/classes" />
-    <output-test url="file://$MODULE_DIR$/target/test-classes" />
-    <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
-      <excludeFolder url="file://$MODULE_DIR$/target" />
-    </content>
-    <orderEntry type="jdk" jdkName="20" jdkType="JavaSDK" />
-    <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="module" module-name="pipIrr-common" scope="PROVIDED" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-validation:3.1.3" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:3.1.3" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:3.1.3" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:3.1.3" level="project" />
-    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.4.11" level="project" />
-    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.4.11" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.20.0" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.20.0" level="project" />
-    <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:2.0.7" level="project" />
-    <orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:2.1.1" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-core:6.0.11" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-jcl:6.0.11" level="project" />
-    <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.33" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:10.1.12" level="project" />
-    <orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:8.0.1.Final" level="project" />
-    <orderEntry type="library" name="Maven: jakarta.validation:jakarta.validation-api:3.0.2" level="project" />
-    <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.5.3.Final" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml:classmate:1.5.1" level="project" />
-    <orderEntry type="library" name="Maven: org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0" level="project" />
-    <orderEntry type="library" name="Maven: org.webjars:swagger-ui:5.2.0" level="project" />
-    <orderEntry type="library" name="Maven: org.springdoc:springdoc-openapi-starter-webmvc-api:2.2.0" level="project" />
-    <orderEntry type="library" name="Maven: org.springdoc:springdoc-openapi-starter-common:2.2.0" level="project" />
-    <orderEntry type="library" name="Maven: io.swagger.core.v3:swagger-core-jakarta:2.2.15" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.12.0" level="project" />
-    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:2.0.7" level="project" />
-    <orderEntry type="library" name="Maven: io.swagger.core.v3:swagger-annotations-jakarta:2.2.15" level="project" />
-    <orderEntry type="library" name="Maven: io.swagger.core.v3:swagger-models-jakarta:2.2.15" level="project" />
-    <orderEntry type="library" name="Maven: jakarta.xml.bind:jakarta.xml.bind-api:4.0.0" level="project" />
-    <orderEntry type="library" name="Maven: jakarta.activation:jakarta.activation-api:2.1.2" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.15.2" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.15.2" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.15.2" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.15.2" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.15.2" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:6.0.11" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-aop:6.0.11" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-beans:6.0.11" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-context:6.0.11" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-expression:6.0.11" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-web:6.0.11" level="project" />
-    <orderEntry type="library" name="Maven: io.micrometer:micrometer-observation:1.11.2" level="project" />
-    <orderEntry type="library" name="Maven: io.micrometer:micrometer-commons:1.11.2" level="project" />
-    <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.28" level="project" />
-    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.5.3.2" level="project" />
-    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.5.3.2" level="project" />
-    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-extension:3.5.3.2" level="project" />
-    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:3.5.3.2" level="project" />
-    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.5.3.2" level="project" />
-    <orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:4.6" level="project" />
-    <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.13" level="project" />
-    <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.1.1" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:3.1.3" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:3.1.3" level="project" />
-    <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:5.0.1" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:6.0.11" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-tx:6.0.11" level="project" />
-    <orderEntry type="library" name="Maven: com.alibaba.fastjson2:fastjson2:2.0.40" level="project" />
-    <orderEntry type="library" name="Maven: com.alibaba.fastjson2:fastjson2-extension-spring6:2.0.40" level="project" />
-    <orderEntry type="library" name="Maven: com.alibaba.fastjson2:fastjson2-extension:2.0.40" level="project" />
-    <orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.5.5.Final" level="project" />
-    <orderEntry type="library" name="Maven: org.mapstruct:mapstruct-processor:1.5.5.Final" level="project" />
-  </component>
-</module>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-mw/.gitignore b/pipIrr-platform/pipIrr-mw/.gitignore
index a23b84b..95a2783 100644
--- a/pipIrr-platform/pipIrr-mw/.gitignore
+++ b/pipIrr-platform/pipIrr-mw/.gitignore
@@ -1,2 +1,34 @@
+HELP.md
 target/
 /pipIrr-mw.iml
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/p206V1_0_0/TkPreGenObjs.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/p206V1_0_0/TkPreGenObjs.java
new file mode 100644
index 0000000..8ef9515
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/p206V1_0_0/TkPreGenObjs.java
@@ -0,0 +1,82 @@
+package com.dy.aceMw.server.busi.deal.p206V1_0_0;
+
+import com.dy.aceMw.server.busi.deal.TaskSurpport;
+import com.dy.common.mw.protocol.Data;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+public class TkPreGenObjs extends TaskSurpport {
+	
+	private static final Logger log = LogManager.getLogger(TkPreGenObjs.class.getName()) ;
+
+	//绫籌D锛屼竴瀹氫笌Tree.xml閰嶇疆鏂囦欢涓厤缃竴鑷�
+	public static final String taskId = "TkPreGenObjs" ;
+
+	/**
+	 * 鎵ц鑺傜偣浠诲姟
+	 * @param data 闇�瑕佸鐞嗙殑鏁版嵁
+	 */
+	@Override
+	public void execute(Object data) {
+		Data d = (Data)data ;
+		String rtuAddr = d.getRtuAddr() ;
+		//寰楀埌鏈湴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) ;
+				if(rtuTramp == null){
+					rtuTramp = new SyRtuTramp(imei, rtuAddr) ; 
+				}
+				this.taskResult = new Object[]{baseBusi, orgBusi, nbRtu, rtuTramp, null} ;
+				this.toNextOneTask(data, TkDealRtuTramp.taskId);
+			}
+		}else{
+			log.error("涓ラ噸閿欒锛屾湭鑳藉緱鍒癇aseBusi瀵硅薄");
+		}
+		*/
+	}
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw.iml b/pipIrr-platform/pipIrr-mw/pipIrr-mw.iml
deleted file mode 100644
index 7054b2a..0000000
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw.iml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
-  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_16">
-    <output url="file://$MODULE_DIR$/target/classes" />
-    <output-test url="file://$MODULE_DIR$/target/test-classes" />
-    <content url="file://$MODULE_DIR$">
-      <excludeFolder url="file://$MODULE_DIR$/target" />
-    </content>
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="module" module-name="pipIrr-common" scope="PROVIDED" />
-    <orderEntry type="module" module-name="pipIrr-global" scope="PROVIDED" />
-    <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.28" level="project" />
-    <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.20" level="project" />
-    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:2.0.7" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-log4j2:3.1.3" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-slf4j2-impl:2.20.0" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.20.0" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-core:2.20.0" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-jul:2.20.0" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.15.2" level="project" />
-    <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.33" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.15.2" level="project" />
-    <orderEntry type="library" name="Maven: com.alibaba.fastjson2:fastjson2:2.0.40" level="project" />
-    <orderEntry type="library" name="Maven: com.alibaba.fastjson2:fastjson2-extension-spring6:2.0.40" level="project" />
-    <orderEntry type="library" name="Maven: com.alibaba.fastjson2:fastjson2-extension:2.0.40" level="project" />
-    <orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.5.5.Final" level="project" />
-    <orderEntry type="library" name="Maven: org.mapstruct:mapstruct-processor:1.5.5.Final" level="project" />
-    <orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.8.21" level="project" />
-    <orderEntry type="library" name="Maven: org.jdom:jdom2:2.0.6.1" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.13.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:2.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest:2.2" level="project" />
-  </component>
-</module>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/AdapterImp_HttpClUnit.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/AdapterImp_TcpClUnit.java
similarity index 100%
rename from pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/AdapterImp_HttpClUnit.java
rename to pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/AdapterImp_TcpClUnit.java
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/Server.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/Server.java
index 7aa1596..ef09342 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/Server.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/Server.java
@@ -68,20 +68,40 @@
             //鏀寔妯″潡锛� springHibernate鍜� 绾跨▼姹�
             SupportUnitConfigVo supVo = new SupportUnitConfigVo() ;
             //鐭伐浣滄椂闀跨嚎绋嬫睜锛岀嚎绋嬭礋璐g敤鏃惰緝鐭殑宸ヤ綔浠诲姟
-            supVo.short_maxThread = conf.getSetAttrPlusInt(doc, "config.support", "short_maxThread", null, 1, 1000, null) ;//姹犱腑鏈�澶х嚎绋嬫暟涓烘墍鏈塁PU鏍告暟+1
-            supVo.short_minThread = conf.getSetAttrPlusInt(doc, "config.support", "short_minThread", null, 1, 5, null) ;//姹犱腑鏈�灏忕嚎绋嬫暟
+            supVo.short_maxThread = conf.getSetAttrPlusInt(doc, "config.support", "short_maxThread", null, -1, 1000, null) ;//姹犱腑鏈�澶х嚎绋嬫暟涓烘墍鏈塁PU鏍告暟+1
+            if(supVo.short_maxThread < 0){
+                supVo.short_maxThread = -1 ;
+            }
+            supVo.short_minThread = conf.getSetAttrPlusInt(doc, "config.support", "short_minThread", null, -1, 100, null) ;//姹犱腑鏈�灏忕嚎绋嬫暟
+            if(supVo.short_minThread < 0){
+                supVo.short_minThread = -1 ;
+            }
             supVo.short_freeTimeout = conf.getSetAttrPlusInt(doc, "config.support", "short_freeTimeout", null, 1, 90, null) * 1000 ;//绾跨▼鏁扮┖闂叉椂闀匡紝鑻ユ睜涓嚎绋嬫暟閲忓ぇ浜巑inThread锛屼笖鏈夌殑绾跨▼绌洪棽鏃堕暱瓒呰繃freeTimeout锛屽垯娓呴櫎璇ョ嚎绋嬶紝涓轰簡涓嶆竻闄わ紝鎶妋inThread涓巑axThread璁剧疆鐩哥瓑
             supVo.short_busyTimeout = conf.getSetAttrPlusInt(doc, "config.support", "short_busyTimeout", null, 1, 10, null) * 1000 ;//绾跨▼涓嶉棿鏂伐浣滄椂闀匡紙鍗曚綅涓虹)瓒呮椂闄愶紝璁や负绾跨▼宸茬粡浜嗗穿婧冿紝灏嗗己鍒舵竻闄わ紝鐭伐浣滄椂闀胯缃负5绉�
+            if(supVo.short_maxThread == 0 || supVo.short_minThread == 0){
+                supVo.enableShortThreadPool = false ;
+            }else{
+                supVo.enableShortThreadPool = true ;
+            }
+
             //闀垮伐浣滄椂闀跨嚎绋嬫睜锛岀嚎绋嬭礋璐g敤鏃惰緝闀跨殑宸ヤ綔浠诲姟
             supVo.long_maxThread = conf.getSetAttrInt(doc, "config.support", "long_maxThread", null, -1, 1000, null)  ;//姹犱腑鏈�澶х嚎绋嬫暟,鑻ヤ负-1锛屼笉鍙楅檺鍒�
             if(supVo.long_maxThread < 0){
                 supVo.long_maxThread = -1 ;
             }
-            supVo.long_minThread = conf.getSetAttrPlusInt(doc, "config.support", "long_minThread", null, 0, 5, null) ;//姹犱腑鏈�灏忕嚎绋嬫暟
+            supVo.long_minThread = conf.getSetAttrPlusInt(doc, "config.support", "long_minThread", null, -1, 100, null) ;//姹犱腑鏈�灏忕嚎绋嬫暟
+            if(supVo.long_minThread < 0){
+                supVo.long_minThread = -1 ;
+            }
             supVo.long_freeTimeout = conf.getSetAttrPlusInt(doc, "config.support", "long_freeTimeout", null, 1, 90, null) * 1000 ;//绾跨▼鏁扮┖闂叉椂闀匡紝鑻ユ睜涓嚎绋嬫暟閲忓ぇ浜巑inThread锛屼笖鏈夌殑绾跨▼绌洪棽鏃堕暱瓒呰繃freeTimeout锛屽垯娓呴櫎璇ョ嚎绋�
             supVo.long_busyTimeout = conf.getSetAttrInt(doc, "config.support", "long_busyTimeout", null, -1, 10, null) ;//绾跨▼涓嶉棿鏂伐浣滄椂闀匡紙鍗曚綅涓虹)瓒呮椂闄愶紝鑻ヤ负-1锛屼笉鍙楅檺鍒�
             if(supVo.long_busyTimeout < 0){
                 supVo.long_busyTimeout = -1 ;
+            }
+            if(supVo.long_maxThread == 0 || supVo.long_minThread == 0){
+                supVo.enableLongThreadPool = false ;
+            }else{
+                supVo.enableLongThreadPool = true ;
             }
 
             supVo.showStartInfo = showStartInfo ;
@@ -113,8 +133,6 @@
             // Tcp Client 妯″潡
             TcpClUnitConfigVo tcpClVo = new TcpClUnitConfigVo();
             tcpClVo.enable = conf.getSetAttrBoolean(doc, "config.tcpCl", "enable", null, null) ;
-            tcpClVo.heartbeatTimes = conf.getSetAttrPlusInt(doc, "config.tcpCl", "heartbeatTimes", null, 1, 10, null) ;//杩炵画閰嶇疆娆℃暟蹇冭烦鍚庡彂閫佷竴娆℃暟鎹�
-            tcpClVo.sendInterval = conf.getSetAttrPlusInt(doc, "config.tcpCl", "sendInterval", null, 1, 60, null) ;//鍙戦�佸績璺虫垨鏁版嵁鐨勬椂闂撮棿闅�
             if(tcpClVo.enable){
                 AdapterImp_TcpClUnit httpClAdap = new AdapterImp_TcpClUnit();
                 httpClAdap.setConfig(tcpClVo);
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/ServerProperties.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/ServerProperties.java
index 7379686..a5f18cf 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/ServerProperties.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/ServerProperties.java
@@ -7,9 +7,13 @@
 	//RTU鎴鍦板潃
 	public static Long rtuAddrEnd = 0L ;
 	//鏈嶅姟绔疘P
-	public static String serverIp = "" ;
+	public static String tcpServerIp = "" ;
 	//鏈嶅姟绔笂涓嬫枃
-	public static Integer serverPort = 0 ;
+	public static Integer tcpServerPort = 0 ;
+	//鍙戦�佹暟鎹暟鎹棿闅�
+	public static Integer sendInterval = 0 ;//绉�
+	//姣忎竴杞鍙戦�佹暟鎹紝鍏朵腑鍖呮嫭蹇冭烦鏁版嵁鐨勬鏁�
+	public static Integer heartbeatTimes = 3 ;
 	//鍙戦�佹暟鎹鏁�
 	public static Integer sendTimes = 0 ;
 	
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/HttpClUnit.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/HttpClUnit.java
deleted file mode 100644
index 9851e91..0000000
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/HttpClUnit.java
+++ /dev/null
@@ -1,112 +0,0 @@
-package com.dy.testClient.httpCl;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import com.dy.testClient.rmiClient.RmiClUnit;
-import com.dy.testClient.ServerProperties;
-import com.dy.common.threadPool.ThreadPool;
-import com.dy.common.threadPool.TreadPoolFactory;
-import com.dy.common.mw.UnitAdapterInterface;
-import com.dy.common.mw.UnitInterface;
-import com.dy.common.mw.UnitStartedCallbackInterface;
-
-public class HttpClUnit implements UnitInterface {
-
-	private static Logger log = LogManager.getLogger(HttpClUnit.class) ;
-	
-	private static HttpClUnit instance = new HttpClUnit() ;
-	
-	public static HttpClUnitAdapter adapter ;
-	public static HttpClUnitConfigVo confVo ;
-	
-	private static ThreadPool.Pool pool ;
-	
-	private static Integer totalRunedClientCount = 0;
-	private static Integer totalOverClientCount = 0;
-	
-	private static Long startTime = 0L ;
-	
-	private HttpClUnit(){} ;
-	
-	public static HttpClUnit getInstance(){
-		return instance ;
-	}
-	
-	@Override
-	public void setAdapter(UnitAdapterInterface adapter) throws Exception {
-		if(adapter == null){
-			throw new Exception("Http Client妯″潡閫傞厤鍣ㄥ璞′笉鑳戒负绌猴紒") ;
-		}
-		HttpClUnit.adapter = (HttpClUnitAdapter)adapter ; 
-		HttpClUnit.confVo = HttpClUnit.adapter.getConfig() ;
-		if(HttpClUnit.confVo == null){
-			throw new Exception("Http Client妯″潡閰嶇疆瀵硅薄涓嶈兘涓虹┖锛�") ;
-		}
-	}
-
-	@Override
-	public void start(UnitStartedCallbackInterface callback) throws Exception {
-	    pool = TreadPoolFactory.getThreadPoolLong() ;
-		System.out.println("Http Client妯″潡鎴愬姛鍚姩");
-		this.doStart();
-	    callback.call(null) ;
-	}
-
-	@Override
-	public void stop(UnitStartedCallbackInterface callback) throws Exception {
-		callback.call(null);
-	}
-	
-	private void doStart(){
-		new Thread(new Runnable(){
-			@Override
-			public void run() {
-				try {
-					while(true){
-						if(!ServerProperties.startWork){
-							Thread.sleep(100L);
-						}else{
-							startTime = System.currentTimeMillis() ;
-							for(Long i = ServerProperties.rtuAddrStart ; i <= ServerProperties.rtuAddrEnd; i++){
-								totalRunedClientCount++ ;
-								startClient(i) ;
-							}
-							while(true){
-								if(totalOverClientCount.longValue() >= totalRunedClientCount.longValue()){
-									Long seconds = (System.currentTimeMillis() - startTime)/1000 ;
-									RmiClUnit.getInstance().reportHadReportOver(seconds) ;
-									System.out.println("鍏辩敤鏃�" + seconds + "绉�");
-									break ;
-								}else{
-									Thread.sleep(100L);
-								}
-							}
-							break;
-						}
-					}
-				} catch (Exception e) {
-					e.printStackTrace();
-				}
-			}
-		}).start();
-	}
-	
-	private void startClient(Long imei){
-		try {
-			pool.putJob(new MyThreadJob("" + imei));
-		} catch (Exception e) {
-			log.error("HttpClUnit.startClient() ", e);
-		}
-	}
-	
-
-	public static synchronized void clientOver(){
-		totalOverClientCount++;
-		if(totalOverClientCount % 100 == 0){
-			RmiClUnit.getInstance().reportHadReportCount(totalOverClientCount);
-			System.out.println("宸茬粡鍙戦��" + totalOverClientCount + "鏉℃暟鎹�");
-		}
-	}
-	
-}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/HttpClUnitAdapter.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/HttpClUnitAdapter.java
deleted file mode 100644
index 8f80484..0000000
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/HttpClUnitAdapter.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.dy.testClient.httpCl;
-
-import com.dy.common.mw.UnitAdapterInterface;
-
-public interface HttpClUnitAdapter extends UnitAdapterInterface {
-
-	public HttpClUnitConfigVo getConfig() ;
-	
-}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/HttpClUnitConfigVo.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/HttpClUnitConfigVo.java
deleted file mode 100644
index 7b3513d..0000000
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/HttpClUnitConfigVo.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package com.dy.testClient.httpCl;
-
-public class HttpClUnitConfigVo {
-	public boolean enable ;
-}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/HttpPost.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/HttpPost.java
deleted file mode 100644
index 3b8e37b..0000000
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/HttpPost.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.dy.testClient.httpCl;
-
-import com.dy.testClient.ServerProperties;
-import com.dy.common.util.HttpUtils;
-
-public class HttpPost {
-
-	public static synchronized void post(byte[] bytes) throws Exception{
-		//HttpUtils.doPost(ServerProperties.serverUrl, ServerProperties.serverContext, null, null, bytes) ;
-	}
-}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/MyThreadJob.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/MyThreadJob.java
deleted file mode 100644
index d3494c5..0000000
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/MyThreadJob.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package com.dy.testClient.httpCl;
-
-import java.util.Base64;
-
-import com.dy.common.threadPool.ThreadPool;
-
-public class MyThreadJob implements ThreadPool.Job {
-
-	public String imei ;
-	
-	public MyThreadJob(){
-	}
-	public MyThreadJob(String imei){
-		this.imei = imei ;
-	}
-
-	@Override
-	public void execute() throws Exception {
-		testMeterV1_0() ;
-		//testHAC_NBhV2_5() ;
-	}
-	
-	private void testMeterV1_0(){
-		try{
-			RtuData4MeterV1_0 rd = new RtuData4MeterV1_0() ;
-			byte[] bs = rd.create(imei) ;
-			bs = Base64.getEncoder().encode(bs) ;
-			
-			UpDataPayloadVo payloadVo = new UpDataPayloadVo() ;
-			payloadVo.APPdata = new String(bs, "UTF-8") ;
-			
-			UpDataVo vo = new UpDataVo(imei, "8086" + imei ) ;
-			vo.payload = payloadVo ;
-			String json = vo.toJson() ;
-			byte[] bytes = json.getBytes() ;
-			HttpPost.post(bytes);
-		}catch(Exception e){
-			e.printStackTrace();
-		}finally{
-			HttpClUnit.clientOver() ;
-		}
-	}
-	
-	@SuppressWarnings("unused")
-	private void testHAC_NBhV2_5(){
-		try{
-			RtuData4HAC_NBhV2_5 rd = new RtuData4HAC_NBhV2_5() ;
-			byte[] bs = rd.create(imei) ;
-			bs = Base64.getEncoder().encode(bs) ;
-			
-			UpDataPayloadVo payloadVo = new UpDataPayloadVo() ;
-			payloadVo.APPdata = new String(bs, "UTF-8") ;
-			
-			UpDataVo vo = new UpDataVo(imei, "8086" + imei ) ;
-			vo.payload = payloadVo ;
-			String json = vo.toJson() ;
-			byte[] bytes = json.getBytes() ;
-			HttpPost.post(bytes);
-		}catch(Exception e){
-			e.printStackTrace();
-		}finally{
-			HttpClUnit.clientOver() ;
-		}
-	}
-
-	@Override
-	public void destroy() {
-	}
-
-	@Override
-	public boolean isDestroy() {
-		return false;
-	}
-
-
-}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/RtuData4HAC_NBhV2_5.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/RtuData4HAC_NBhV2_5.java
deleted file mode 100644
index 52c839f..0000000
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/RtuData4HAC_NBhV2_5.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.dy.testClient.httpCl;
-
-import com.dy.common.util.ByteUtil;
-
-public class RtuData4HAC_NBhV2_5 {
-	public byte[] create(String imei) throws Exception{
-		/*
-		 * 0101
-		 * 00
-		 * 02
-		 * 4643
-		 * 3C
-		 * 00BE
-		 * FF
-		 * 86AB62626E642F332F30026A313233343536373839300D1A64B8FCE60E655554432B3801634E42680719016E110112655056332E30136C56332E30345F32323034323214001701A762626E652F38302F3001020600101A00000000171A00000000181A1A00000000181F00A462626E652F38312F30030101000201A462626E652F38322F30000001000200A262626E652F38342F30001A00015180A462626E652F39392F30016F3836333331383036303136393235390D3903010E390013
-		 * EA77
-		 * 
-		 */
-		String hex = "0101024570753C001AFFA30D1B000001898AB2E3160E655554432B3862626E642F332F303190" ;
-		//String hex = "0101000246433C00BEFF86AB62626E642F332F30026A313233343536373839300D1A64B8FCE60E655554432B3801634E42680719016E110112655056332E30136C56332E30345F32323034323214001701A762626E652F38302F3001020600101A00000000171A00000000181A1A00000000181F00A462626E652F38312F30030101000201A462626E652F38322F30000001000200A262626E652F38342F30001A00015180A462626E652F39392F30016F3836333331383036303136393235390D3903010E390013EA77" ;
-		return ByteUtil.hex2Bytes(hex) ;
-	}
-	/*
-	 * 
-86AB62626E642F332F30
-026A3132333435363738
-39300D1A64B8FCE60E65
-5554432B3801634E4268
-0719016E110112655056
-332E30136C56332E3034
-5F323230343232140017
-01A762626E652F38302F
-3001020600101A000000
-00171A00000000181A1A
-00000000181F00A46262
-6E652F38312F30030101
-000201A462626E652F38
-322F30000001000200A2
-62626E652F38342F3000
-1A00015180A462626E65
-2F39392F30016F383633
-33313830363031363932
-35390D3903010E390013
-	 */
-
-}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/RtuData4MeterV1_0.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/RtuData4MeterV1_0.java
deleted file mode 100644
index daf8340..0000000
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/RtuData4MeterV1_0.java
+++ /dev/null
@@ -1,165 +0,0 @@
-package com.dy.testClient.httpCl;
-
-import com.dy.common.mw.protocol.pMeterV1_0_1.ProtocolConstantV1_0_1;
-import com.dy.common.util.ByteUtil;
-import com.dy.common.util.ByteUtilUnsigned;
-import com.dy.common.util.CreateRadom;
-import com.dy.common.util.DateTime;
-
-public class RtuData4MeterV1_0 {
-	public byte[] create(String imei) throws Exception{
-		/*
-		 * 68
-		 * 0051
-		 * 01
-		 * 0300000000000001
-		 * 12233445566778
-		 * 01
-		 * 221128152107
-		 * 0001E240
-		 * 000004D2
-		 * 24
-		 * 0129
-		 * 11
-		 * 002D
-		 * 0035
-		 * 003D
-		 * 006E
-		 * 0038
-		 * 00C3
-		 * 00AC
-		 * 004C
-		 * 0028
-		 * 0081
-		 * 001B
-		 * 005E
-		 * 003D
-		 * 0063
-		 * 00AB
-		 * 0071
-		 * 00BB
-		 * 0046
-		 * 004A
-		 * 009B
-		 * 0087
-		 * 00BE
-		 * 0022
-		 * 00B0
-		 * DA
-		 * 16
-		 */
-		int len = 89 ;
-		byte[] bs = new byte[len] ;
-		bs[0] = ProtocolConstantV1_0_1.P_Head_Byte ;
-		ByteUtilUnsigned.short2Bytes_BE(bs, len, 1);//闀垮害
-		bs[3] = (byte)101 ;//鍗忚鐗堟湰鍙�
-		while(true){
-			if(imei.length() >= 16){
-				break ;
-			}else{
-				imei = "0" + imei ;
-			}
-		}
-		ByteUtil.string2BCD_BE(bs, imei, 4) ;//IMEI鍙�
-		
-		String meterNo = "" + (Long.valueOf(imei) + 1);
-		while(true){
-			if(meterNo.length() >= 16){
-				break ;
-			}else{
-				meterNo = "0" + meterNo ;
-			}
-		}
-		ByteUtil.string2BCD_BE(bs, meterNo, 12) ;//姘磋〃鍙�
-		
-		bs[20] = 1 ;//鍔熻兘鐮�
-		
-		ByteUtil.string2BCD_BE(bs, DateTime.yyMMddhhmmss(), 21) ;//鏃堕棿
-		
-		ByteUtilUnsigned.int2Bytes_BE(bs, 123456, 27);//瀹炴椂绱姘撮噺
-		
-		ByteUtilUnsigned.int2Bytes_BE(bs, 54321, 31);//鏃ョ疮璁℃按閲�
-		
-		bs[35] = (byte)36;//鐢垫睜鐢靛帇
-		
-		ByteUtilUnsigned.short2Bytes_BE(bs, 297, 36);//淇″彿寮哄害
-		
-		byte sta = 0 ;
-		int num = CreateRadom.radom_4() ;
-		if(num%2 == 0){
-			sta += 1 ;//闃�闂ㄧ姸鎬�
-		}
-		num = CreateRadom.radom_4() ;
-		if(num%2 == 0){
-			sta += 4 ;//闃�闂ㄦ晠闅�
-		}
-		num = CreateRadom.radom_4() ;
-		if(num%2 == 0){
-			sta += 8 ;//寮虹
-		}
-		num = CreateRadom.radom_4() ;
-		if(num%2 == 0){
-			sta += 16 ;//鐢垫睜娆犲帇
-		}
-		bs[38] = sta;//琛ㄧ姸鎬�
-		
-		num = CreateRadom.radom(200, 10) ;
-		ByteUtilUnsigned.short2Bytes_BE(bs, num, 39);//1鐐瑰皬鏃剁敤姘撮噺
-		num = CreateRadom.radom(200, 10) ;
-		ByteUtilUnsigned.short2Bytes_BE(bs, num, 41);//2鐐瑰皬鏃剁敤姘撮噺
-		num = CreateRadom.radom(200, 10) ;
-		ByteUtilUnsigned.short2Bytes_BE(bs, num, 43);//3
-		num = CreateRadom.radom(200, 10) ;
-		ByteUtilUnsigned.short2Bytes_BE(bs, num, 45);//4 
-		num = CreateRadom.radom(200, 10) ;
-		ByteUtilUnsigned.short2Bytes_BE(bs, num, 47);//5
-		num = CreateRadom.radom(200, 10) ;
-		ByteUtilUnsigned.short2Bytes_BE(bs, num, 49);//6
-		num = CreateRadom.radom(200, 10) ;
-		ByteUtilUnsigned.short2Bytes_BE(bs, num, 51);//7
-		num = CreateRadom.radom(200, 10) ;
-		ByteUtilUnsigned.short2Bytes_BE(bs, num, 53);//8
-		num = CreateRadom.radom(200, 10) ;
-		ByteUtilUnsigned.short2Bytes_BE(bs, num, 55);//9
-		num = CreateRadom.radom(200, 10) ;
-		ByteUtilUnsigned.short2Bytes_BE(bs, num, 57);//10
-		num = CreateRadom.radom(200, 10) ;
-		ByteUtilUnsigned.short2Bytes_BE(bs, num, 59);//11
-		num = CreateRadom.radom(200, 10) ;
-		ByteUtilUnsigned.short2Bytes_BE(bs, num, 61);//12
-		num = CreateRadom.radom(200, 10) ;
-		ByteUtilUnsigned.short2Bytes_BE(bs, num, 63);//13
-		num = CreateRadom.radom(200, 10) ;
-		ByteUtilUnsigned.short2Bytes_BE(bs, num, 65);//14
-		num = CreateRadom.radom(200, 10) ;
-		ByteUtilUnsigned.short2Bytes_BE(bs, num, 67);//15
-		num = CreateRadom.radom(200, 10) ;
-		ByteUtilUnsigned.short2Bytes_BE(bs, num, 69);//16
-		num = CreateRadom.radom(200, 10) ;
-		ByteUtilUnsigned.short2Bytes_BE(bs, num, 71);//17
-		num = CreateRadom.radom(200, 10) ;
-		ByteUtilUnsigned.short2Bytes_BE(bs, num, 73);//18
-		num = CreateRadom.radom(200, 10) ;
-		ByteUtilUnsigned.short2Bytes_BE(bs, num, 75);//19
-		num = CreateRadom.radom(200, 10) ;
-		ByteUtilUnsigned.short2Bytes_BE(bs, num, 77);//20
-		num = CreateRadom.radom(200, 10) ;
-		ByteUtilUnsigned.short2Bytes_BE(bs, num, 79);//21
-		num = CreateRadom.radom(200, 10) ;
-		ByteUtilUnsigned.short2Bytes_BE(bs, num, 81);//22
-		num = CreateRadom.radom(200, 10) ;
-		ByteUtilUnsigned.short2Bytes_BE(bs, num, 83);//23
-		num = CreateRadom.radom(200, 10) ;
-		ByteUtilUnsigned.short2Bytes_BE(bs, num, 85);//24
-		
-		byte he = 0 ;
-		for(byte i = 0 ; i <= 86; i++){
-			he = (byte)(he + bs[i]) ;
-		}
-		ByteUtilUnsigned.byte2Byte(bs, he, 87) ;
-		bs[88] = ProtocolConstantV1_0_1.P_Tail_Byte ;
-		
-		return bs ;
-	}
-
-}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/TestBase64.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/TestBase64.java
deleted file mode 100644
index 8bdda86..0000000
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/TestBase64.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.dy.testClient.httpCl;
-
-import java.io.UnsupportedEncodingException;
-import java.util.Base64;
-
-import com.dy.common.util.ByteUtil;
-
-public class TestBase64 {
-
-	public static void main(String[] args) throws UnsupportedEncodingException{
-		String hex1 = "6838363235393230353934333439373000002002303231310000000000000032003005002E000000000001000000000200000000032101010012330400300521010100123306016907016908000009FF0000FC16" ;
-		System.out.println(hex1);
-		byte[] bs = ByteUtil.hex2Bytes(hex1) ;
-		bs = Base64.getEncoder().encode(bs) ;
-		String base64 = new String(bs, "UTF-8") ;
-		System.out.println(base64);
-		
-		bs = Base64.getDecoder().decode(base64);
-		String hex2 = ByteUtil.bytes2Hex(bs, false) ;
-		System.out.println(hex2);
-
-	}
-}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/UpDataPayloadVo.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/UpDataPayloadVo.java
deleted file mode 100644
index 8e1e7ff..0000000
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/UpDataPayloadVo.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.dy.testClient.httpCl;
-
-public class UpDataPayloadVo {
-	
-	public String APPdata ;
-	
-	
-	public String getAPPdata() {
-		return APPdata;
-	}
-
-	public void setAPPdata(String aPPdata) {
-		APPdata = aPPdata;
-	}
-
-}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/UpDataVo.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/UpDataVo.java
deleted file mode 100644
index 88f1e19..0000000
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/httpCl/UpDataVo.java
+++ /dev/null
@@ -1,174 +0,0 @@
-package com.dy.testClient.httpCl;
-
-
-import com.alibaba.fastjson2.JSON;
-
-public class UpDataVo {
-	
-	public Integer upPacketSN; //:-1,
-	public Integer upDataSN; //:-1,
-	public String topic; //:"v1/up/ad",
-	public Long timestamp; //:1667302244541,
-	public String tenantId; //:"2000114347",
-	public String serviceId; //:"",
-	public String protocol; //:"lwm2m",
-	public String productId; //:"15410798",
-	public UpDataPayloadVo payload; //:{"APPdata":"pQAYWhAGFQEmECIgETMgIQEBACASARckZFoAAFeq"},
-	public String messageType; //:"dataReport",
-	public String deviceType; //:"",
-	public String deviceId; //:"59a4d90bf7a04aeea4d3523fe15d6f3f",
-	public String assocAssetId; //:"",
-	public String imsi; //:"undefined",
-	public String imei; //:"862592059434970"
-	
-	public UpDataVo(String imei, String deviceId){
-		this.upPacketSN = - 1 ;
-		this.upDataSN = - 1 ;
-		this.topic = "v1/up/ad" ;
-		this.timestamp = System.currentTimeMillis() ;
-		this.tenantId = "2000114347" ;
-		this.serviceId = "" ;
-		this.protocol = "lwm2m" ;
-		this.productId = "15410798" ;
-		this.messageType = "dataReport" ;
-		this.deviceType = "" ;
-		this.deviceId = deviceId ;
-		this.assocAssetId = "" ;
-		this.imsi = "" ;
-		this.imei = imei ;
-	}
-	
-	public String toString(){
-		StringBuffer sb = new StringBuffer() ;
-		sb.append("\nproductId锛�" + productId + "\n") ;
-		sb.append("deviceId锛�" + deviceId + "\n") ;
-		sb.append("imei锛�" + imei + "\n") ;
-		sb.append("payload锛�" + (payload==null?"":payload.APPdata) + "\n") ;
-		sb.append("timestamp锛�" + timestamp + "\n") ;
-		return sb.toString() ;
-	}
-	
-	/**
-	 * 瀵硅薄杞垚json
-	 * @return json
-	 * @throws Exception 寮傚父
-	 */
-	public String toJson()throws Exception{
-		try{
-			return JSON.toJSONString(this) ;
-			//return new JSONSerializer().exclude(new String[]{"class", "*.class"}).deepSerialize(this);
-		}catch(Exception e){
-			throw new Exception(e.getMessage() , e ) ;
-		}
-	}
-	/**
-	 * json杞垚瀵硅薄
-	 * @param json json
-	 * @return 瀵硅薄
-	 * @throws Exception 寮傚父
-	 */
-	public static UpDataVo jsonToObject(String json)throws Exception{
-		try{
-			return JSON.parseObject(json, UpDataVo.class) ;
-			//return new JSONDeserializer<UpDataVo>()
-			//		.use("payload", UpDataPayloadVo.class)
-			//		.deserialize(json, UpDataVo.class) ;
-		}catch(Exception e){
-			throw new Exception(e.getMessage() , e ) ;
-		}
-	}
-
-
-	public Integer getUpPacketSN() {
-		return upPacketSN;
-	}
-	public void setUpPacketSN(Integer upPacketSN) {
-		this.upPacketSN = upPacketSN;
-	}
-	public Integer getUpDataSN() {
-		return upDataSN;
-	}
-	public void setUpDataSN(Integer upDataSN) {
-		this.upDataSN = upDataSN;
-	}
-	public String getTopic() {
-		return topic;
-	}
-	public void setTopic(String topic) {
-		this.topic = topic;
-	}
-	public Long getTimestamp() {
-		return timestamp;
-	}
-	public void setTimestamp(Long timestamp) {
-		this.timestamp = timestamp;
-	}
-	public String getTenantId() {
-		return tenantId;
-	}
-	public void setTenantId(String tenantId) {
-		this.tenantId = tenantId;
-	}
-	public String getServiceId() {
-		return serviceId;
-	}
-	public void setServiceId(String serviceId) {
-		this.serviceId = serviceId;
-	}
-	public String getProtocol() {
-		return protocol;
-	}
-	public void setProtocol(String protocol) {
-		this.protocol = protocol;
-	}
-	public String getProductId() {
-		return productId;
-	}
-	public void setProductId(String productId) {
-		this.productId = productId;
-	}
-	public UpDataPayloadVo getPayload() {
-		return payload;
-	}
-	public void setPayload(UpDataPayloadVo payload) {
-		this.payload = payload;
-	}
-	public String getMessageType() {
-		return messageType;
-	}
-	public void setMessageType(String messageType) {
-		this.messageType = messageType;
-	}
-	public String getDeviceType() {
-		return deviceType;
-	}
-	public void setDeviceType(String deviceType) {
-		this.deviceType = deviceType;
-	}
-	public String getDeviceId() {
-		return deviceId;
-	}
-	public void setDeviceId(String deviceId) {
-		this.deviceId = deviceId;
-	}
-	public String getAssocAssetId() {
-		return assocAssetId;
-	}
-	public void setAssocAssetId(String assocAssetId) {
-		this.assocAssetId = assocAssetId;
-	}
-	public String getIMSI() {
-		return imsi;
-	}
-	public void setIMSI(String iMSI) {
-		imsi = iMSI;
-	}
-	public String getIMEI() {
-		return imei;
-	}
-	public void setIMEI(String iMEI) {
-		imei = iMEI;
-	}
-	
-	
-}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/Code.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/Code.java
index 4fcd76b..9dc631e 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/Code.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/Code.java
@@ -9,7 +9,9 @@
 	public static String cd3 = "003" ;//璇锋眰寮�濮嬪伐浣�
 	
 	public static String cd4 = "004" ;//鍚戞湇鍔$涓婃姤淇℃伅
-	
-	public static String cd5 = "005" ;//鍚戞湇鍔$涓婃姤  鏁版嵁涓婃姤宸ヤ綔宸茬粡瀹屾垚
-	
+
+	public static String cd5 = "005" ;//鍚戞湇鍔$涓婃姤  瀹屾垚浠诲姟鐨勬暟閲�
+
+	public static String cd6 = "006" ;//鍚戞湇鍔$涓婃姤  鍏ㄩ儴浠诲姟瀹屾垚
+
 }
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/ResConfigVo.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/ResConfigVo.java
index c3affa5..59df2ce 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/ResConfigVo.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/ResConfigVo.java
@@ -8,12 +8,16 @@
 	//妯℃嫙瀹㈡埛鐨処MEI鍙锋埅姝㈠彿
 	public Long rtuAddrEnd = 0L ;
 	//鏈嶅姟绔疘P
-	public String serverIp = "" ;
+	public String tcpServerIp = "" ;
 	//鏈嶅姟绔笂涓嬫枃
-	public Integer serverPort = 0 ;
+	public Integer tcpServerPort = 0 ;
+	//鍙戦�佹暟鎹棿闅�
+	public Integer sendInterval = 2 ;//绉�
+	//姣忎竴杞鍙戦�佹暟鎹紝鍏朵腑鍖呮嫭蹇冭烦鍙戦�佹鏁�
+	public Integer heartbeatTimes = 3 ;
 	//鍙戦�佹暟鎹鏁�
 	public Integer sendTimes = 0 ;
-	
+
 	/**
 	 * 瀵硅薄杞垚json
 	 * @return 瀵硅薄json
@@ -58,20 +62,36 @@
 		this.rtuAddrEnd = rtuAddrEnd;
 	}
 
-	public String getServerIp() {
-		return serverIp;
+	public String getTcpServerIp() {
+		return tcpServerIp;
 	}
 
-	public void setServerIp(String serverIp) {
-		this.serverIp = serverIp;
+	public void setTcpServerIp(String tcpServerIp) {
+		this.tcpServerIp = tcpServerIp;
 	}
 
-	public Integer getServerPort() {
-		return serverPort;
+	public Integer getTcpServerPort() {
+		return tcpServerPort;
 	}
 
-	public void setServerPort(Integer serverPort) {
-		this.serverPort = serverPort;
+	public void setTcpServerPort(Integer tcpServerPort) {
+		this.tcpServerPort = tcpServerPort;
+	}
+
+	public Integer getSendInterval() {
+		return sendInterval;
+	}
+
+	public void setSendInterval(Integer sendInterval) {
+		this.sendInterval = sendInterval;
+	}
+
+	public Integer getHeartbeatTimes() {
+		return heartbeatTimes;
+	}
+
+	public void setHeartbeatTimes(Integer heartbeatTimes) {
+		this.heartbeatTimes = heartbeatTimes;
 	}
 
 	public Integer getSendTimes() {
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiClUnit.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiClUnit.java
index 8d30bb8..008ed2a 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiClUnit.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiClUnit.java
@@ -94,13 +94,30 @@
 	}
 	
 	//鎶婃暟鎹笂鎶ュ畬鎴愭儏鍐�  涓婃姤缁檓wTestServer
-	public void reportHadReportOver(Long seconds){
+	public void reportHadReportOver(Integer count){
 		try {
 			Thread.sleep(100L);
 			RmiRequestVo rqVo = new RmiRequestVo() ;
 			rqVo.id = id ;
 			rqVo.token = token ;
 			rqVo.code = Code.cd5 ;
+			rqVo.count = count ;
+			String json = rqVo.toJson() ;
+			frmWork.syncRequest(json) ;
+		} catch (Exception e) {
+			log.error("鎶婃暟鎹笂鎶ュ畬鎴愭儏鍐�  涓婃姤缁檓wTestServer澶辫触" + e.getMessage());
+		}
+	}
+
+
+	//鎶婃暟鎹笂鎶ュ畬鎴愭儏鍐�  涓婃姤缁檓wTestServer
+	public void allOver(Long seconds){
+		try {
+			Thread.sleep(100L);
+			RmiRequestVo rqVo = new RmiRequestVo() ;
+			rqVo.id = id ;
+			rqVo.token = token ;
+			rqVo.code = Code.cd6 ;
 			rqVo.over = true ;
 			rqVo.seconds = seconds ;
 			String json = rqVo.toJson() ;
@@ -178,15 +195,19 @@
 								if(rVo != null){
 									ServerProperties.rtuAddrStart = rVo.rtuAddrStart;
 									ServerProperties.rtuAddrEnd = rVo.rtuAddrEnd;
-									ServerProperties.serverIp = rVo.serverIp;
-									ServerProperties.serverPort = rVo.serverPort;
+									ServerProperties.tcpServerIp = rVo.tcpServerIp;
+									ServerProperties.tcpServerPort = rVo.tcpServerPort;
+									ServerProperties.sendInterval = rVo.sendInterval ;
+									ServerProperties.heartbeatTimes = rVo.heartbeatTimes ;
 									ServerProperties.sendTimes = rVo.sendTimes ;
 									log.info("寰楀埌閰嶇疆鎴愬姛");
 									log.info("    寮�濮婻tuAddr=" + ServerProperties.rtuAddrStart);
 									log.info("    鎴RtuAddr=" + ServerProperties.rtuAddrEnd);
-									log.info("    mwAccept鏈嶅姟IP=" + ServerProperties.serverIp);
-									log.info("    mwAccept鏈嶅姟绔彛=" + ServerProperties.serverPort);
-									log.info("    姣廼mei涓婃姤鏁版嵁娆℃暟=" + ServerProperties.sendTimes);
+									log.info("    mwAccept鏈嶅姟IP=" + ServerProperties.tcpServerIp);
+									log.info("    mwAccept鏈嶅姟绔彛=" + ServerProperties.tcpServerPort);
+									log.info("    鍙戦�佹暟鎹棿闅�=" + ServerProperties.sendTimes);
+									log.info("    姣忚疆娆″彂閫佸績璺虫鏁�=" + ServerProperties.heartbeatTimes);
+									log.info("    姣廟TU涓婃姤鏁版嵁杞=" + ServerProperties.sendTimes);
 									break ;
 								}else{
 									log.error("rmi寰楀埌閰嶇疆澶辫触锛歫son杞琑esConfigVo涓簄ull");
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiResponseVo.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiResponseVo.java
index 658591a..8d952a7 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiResponseVo.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiResponseVo.java
@@ -1,6 +1,7 @@
 package com.dy.testClient.rmiClient;
 
 import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
 
 public class RmiResponseVo {
 
@@ -9,7 +10,7 @@
 	public String errorInfo ;
 	
 	public String code ;
-	
+
 	public Object obj ;
 	
 	/**
@@ -33,11 +34,10 @@
 	 */
 	public static RmiResponseVo jsonToObject(String json, Class<?> clazz)throws Exception{
 		try{
-			return JSON.parseObject(json, RmiResponseVo.class) ;
-			//JSONDeserializer<RmiResponseVo> jsonD = new JSONDeserializer<RmiResponseVo>() ;
-			//jsonD.use("obj", clazz) ;
-			//RmiResponseVo resp = jsonD.deserialize(json, RmiResponseVo.class) ;
-			//return resp ;
+			JSONObject jsonObject = JSON.parseObject(json);
+			RmiResponseVo vo = jsonObject.to(RmiResponseVo.class) ;
+			vo.obj = jsonObject.getObject("obj", clazz);
+			return vo ;
 		}catch(Exception e){
 			throw new Exception(e.getMessage() , e ) ;
 		}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpConnect/LocalCodecFactory.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/LocalCodecFactory.java
similarity index 95%
rename from pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpConnect/LocalCodecFactory.java
rename to pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/LocalCodecFactory.java
index 9f59b93..0251296 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpConnect/LocalCodecFactory.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/LocalCodecFactory.java
@@ -1,9 +1,9 @@
-package com.dy.testClient.tcpConnect;
+package com.dy.testClient.tcpClient;
 
-import org.apache.mina.filter.codec.ProtocolCodecFactory;
-import org.apache.mina.filter.codec.ProtocolEncoder;
-import org.apache.mina.filter.codec.ProtocolDecoder;
 import org.apache.mina.core.session.IoSession;
+import org.apache.mina.filter.codec.ProtocolCodecFactory;
+import org.apache.mina.filter.codec.ProtocolDecoder;
+import org.apache.mina.filter.codec.ProtocolEncoder;
 
 public class LocalCodecFactory implements ProtocolCodecFactory {
     private ProtocolEncoder encoder;
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/LocalDecoder.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/LocalDecoder.java
new file mode 100644
index 0000000..16ea1df
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/LocalDecoder.java
@@ -0,0 +1,31 @@
+package com.dy.testClient.tcpClient;
+
+import org.apache.mina.core.buffer.IoBuffer;
+import org.apache.mina.core.session.IoSession;
+import org.apache.mina.filter.codec.CumulativeProtocolDecoder;
+import org.apache.mina.filter.codec.ProtocolDecoderOutput;
+
+import java.io.IOException;
+
+public class LocalDecoder extends CumulativeProtocolDecoder {
+
+    private static final String DECODER_STATE_KEY = LocalDecoder.class.getName() + ".STATE";
+
+    public static final int MAX_SIZE = 2147483647 ;
+
+
+    /**
+     * 瀵圭綉缁滀紶杈撴潵鐨勬暟鎹繘琛岃В鐮�
+     */
+    protected boolean doDecode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws IOException, Exception{
+        int remain = in.remaining() ;
+        if(remain > 0){
+            byte[] preByte = new byte[remain];
+            in.get(preByte) ;
+            in.position(0) ;
+        }
+        return true;
+    }
+
+
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/LocalEncoder.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/LocalEncoder.java
new file mode 100644
index 0000000..fdf716e
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/LocalEncoder.java
@@ -0,0 +1,22 @@
+package com.dy.testClient.tcpClient;
+
+import org.apache.mina.core.buffer.IoBuffer;
+import org.apache.mina.core.session.IoSession;
+import org.apache.mina.filter.codec.ProtocolEncoderAdapter;
+import org.apache.mina.filter.codec.ProtocolEncoderOutput;
+
+import java.io.IOException;
+
+public class LocalEncoder extends ProtocolEncoderAdapter {
+
+    /**
+     * 瀵规暟鎹繘琛岀紪鐮侊紝浠ュ缃戠粶浼犺緭
+     */
+    public void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws IOException, Exception{
+        byte[] data = (byte[])message;
+        //log.info("涓嬭鏁版嵁锛�" + ByteUtil.bytes2Hex(data, true));
+
+        out.write(IoBuffer.allocate((data==null?0:data.length), false).put(data).flip());
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/MyThreadJob.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/MyThreadJob.java
index eee927c..0a07ff7 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/MyThreadJob.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/MyThreadJob.java
@@ -1,46 +1,126 @@
 package com.dy.testClient.tcpClient;
 
+import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_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.threadPool.ThreadPool;
-import com.dy.testClient.httpCl.*;
-
-import java.util.Base64;
+import com.dy.common.util.ByteUtil;
+import com.dy.testClient.ServerProperties;
+import org.apache.mina.core.future.CloseFuture;
+import org.apache.mina.core.session.IoSession;
 
 public class MyThreadJob  implements ThreadPool.Job {
 
     public String rtuAddr;
+    public String serverIp;
+    public Integer serverPort;
+
+    public IoSession session ;
+
+    public static final int connectTimeout = 3000 ;
+
+    public int sendTimes = 0 ;//鍙戦�佹暟鎹鏁�
+    public int heartbeatTimes = 0 ;//涓婃姤蹇冭烦娆℃暟
+
+    public boolean isOver = false ;
 
     public MyThreadJob(){
     }
-    public MyThreadJob(String rtuAddr){
+    public MyThreadJob(String rtuAddr, String serverIp, Integer serverPort){
         this.rtuAddr = rtuAddr ;
+        this.serverIp = serverIp ;
+        this.serverPort = serverPort ;
     }
 
     @Override
     public void execute() throws Exception {
-        testP206V1_0_0() ;
-    }
-
-    private void testP206V1_0_0(){
-        try{
-            RtuData4MeterV1_0 rd = new RtuData4MeterV1_0() ;
-            byte[] bs = rd.create(rtuAddr) ;
-            bs = Base64.getEncoder().encode(bs) ;
-
-            UpDataPayloadVo payloadVo = new UpDataPayloadVo() ;
-            payloadVo.APPdata = new String(bs, "UTF-8") ;
-
-            UpDataVo vo = new UpDataVo(rtuAddr, "8086" + rtuAddr) ;
-            vo.payload = payloadVo ;
-            String json = vo.toJson() ;
-            byte[] bytes = json.getBytes() ;
-            HttpPost.post(bytes);
-        }catch(Exception e){
-            e.printStackTrace();
-        }finally{
-            HttpClUnit.clientOver() ;
+        if(session == null){
+            IoSession se = new TcpConnect().createSession(this.rtuAddr, this, this.serverIp, this.serverPort, connectTimeout, new TcpHandler()) ;
+            if(se != null){
+                this.session = se ;
+            }
+        }else{
+            if(sendTimes <= ServerProperties.sendTimes){
+                sendDataOfP206V1_0_0() ;
+            }else{
+                this.jobOver() ;
+            }
         }
     }
 
+    private void sendDataOfP206V1_0_0(){
+        try{
+            if(heartbeatTimes >= ServerProperties.heartbeatTimes){
+                heartbeatTimes = 0 ;
+                this.sendReportData() ;
+                sendTimes++ ;
+            }else{
+                this.sendHeartbeat() ;
+                heartbeatTimes++ ;
+            }
+        }catch(Exception e){
+            e.printStackTrace();
+        }
+    }
+    private void sendHeartbeat(){
+        try{
+            byte[] bs = this.createHeartbeat() ;
+            this.session.write(bs) ;
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
+    private void sendReportData(){
+        TcpClUnit.clientSendData();
+    }
+
+    private void jobOver(){
+        CloseFuture closeFuture = session.closeOnFlush() ;
+        this.isOver = true ;
+        TcpClUnit.clientOver() ;
+    }
+
+    /**
+     * 鏋勯�犱笅琛屾暟鎹�
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
+     */
+    public byte[] createHeartbeat( ) 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) ;
+
+        index++ ;
+        GlCreate.createRtuAddr(this.rtuAddr, bsHead, index);
+        index += 5 ;
+
+        ByteUtil.hex2Bytes("02", bsHead, index) ;
+
+        byte[] bs = new byte[1] ;
+        bs[0] = (byte)0xF2 ;//鏁版嵁鍩燂細 1 涓瓧鑺傦紝F0 鐧诲綍锛� F1 閫�鍑虹櫥褰曪紝F2 鍦ㄧ嚎淇濇寔銆�
+
+        bytes = ByteUtil.bytesMerge(bsHead, bs) ;
+
+        GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
+        bytes = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
+
+        return bytes ;
+    }
+
+
 
     @Override
     public void destroy() {
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpClUnit.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpClUnit.java
index 1189f3b..167adde 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpClUnit.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpClUnit.java
@@ -10,6 +10,10 @@
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
 public class TcpClUnit  implements UnitInterface {
 
     private static final Logger log = LogManager.getLogger(TcpClUnit.class) ;
@@ -20,8 +24,10 @@
     public static TcpClUnitConfigVo confVo ;
 
     private static ThreadPool.Pool pool ;
+    private static Map<String, MyThreadJob> jobMap = new HashMap<>() ;
 
     private static Integer totalRunedClientCount = 0;
+    private static Integer totalSendDataCount = 0;
     private static Integer totalOverClientCount = 0;
 
     private static Long startTime = 0L ;
@@ -69,12 +75,13 @@
                             startTime = System.currentTimeMillis() ;
                             for(Long addr = ServerProperties.rtuAddrStart; addr <= ServerProperties.rtuAddrEnd; addr++){
                                 totalRunedClientCount++ ;
-                                startClient(addr) ;
+                                createImitate(addr) ;
                             }
+                            startJob() ;
                             while(true){
                                 if(totalOverClientCount.longValue() >= totalRunedClientCount.longValue()){
                                     Long seconds = (System.currentTimeMillis() - startTime)/1000 ;
-                                    RmiClUnit.getInstance().reportHadReportOver(seconds) ;
+                                    RmiClUnit.getInstance().allOver(seconds) ;
                                     System.out.println("鍏辩敤鏃�" + seconds + "绉�");
                                     break ;
                                 }else{
@@ -91,20 +98,48 @@
         }).start();
     }
 
-    private void startClient(Long rtuAddr){
-        try {
-            pool.putJob(new MyThreadJob("" + rtuAddr));
-        } catch (Exception e) {
-            log.error("TcpClUnit.startClient() ", e);
-        }
+    /**
+     * 鍒涘缓RTU妯℃嫙MyThreadJob
+     * @param rtuAddr rtu鍦板潃
+     */
+    private void createImitate(Long rtuAddr){
+        jobMap.put("" + rtuAddr, new MyThreadJob("" + rtuAddr, ServerProperties.tcpServerIp, ServerProperties.tcpServerPort)) ;
     }
 
+    private void startJob(){
+        new Thread(new Runnable(){
+            @Override
+            public void run() {
+                try {
+                    Thread.sleep(1000L);
+                    while(true){
+                        Collection<MyThreadJob> collection = jobMap.values() ;
+                        for(MyThreadJob job : collection){
+                            pool.putJob(job);
+                        }
+                        Thread.sleep(ServerProperties.sendInterval * 1000);
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }).start();
+    }
+
+
+    public static synchronized void clientSendData(){
+        totalSendDataCount++;
+        if(totalSendDataCount % 100 == 0){
+            RmiClUnit.getInstance().reportHadReportCount(totalSendDataCount);
+            System.out.println("宸茬粡鍙戦��" + totalSendDataCount + "鏉℃暟鎹�");
+        }
+    }
 
     public static synchronized void clientOver(){
         totalOverClientCount++;
         if(totalOverClientCount % 100 == 0){
-            RmiClUnit.getInstance().reportHadReportCount(totalOverClientCount);
-            System.out.println("宸茬粡鍙戦��" + totalOverClientCount + "鏉℃暟鎹�");
+            RmiClUnit.getInstance().reportHadReportOver(totalOverClientCount);
+            System.out.println("宸叉湁" + totalOverClientCount + "瀹屾垚浜嗕换鍔�");
         }
     }
 }
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpClUnitConfigVo.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpClUnitConfigVo.java
index 0cc19ba..972b18e 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpClUnitConfigVo.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpClUnitConfigVo.java
@@ -2,6 +2,4 @@
 
 public class TcpClUnitConfigVo {
     public boolean enable ;
-    public int heartbeatTimes ;
-    public int sendInterval ;
 }
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpConnect/MinaConnect.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpConnect.java
similarity index 69%
rename from pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpConnect/MinaConnect.java
rename to pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpConnect.java
index 2d85f19..cdf2c8e 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpConnect/MinaConnect.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpConnect.java
@@ -1,38 +1,44 @@
-package com.dy.testClient.tcpConnect;
+package com.dy.testClient.tcpClient;
 
 import org.apache.mina.core.future.ConnectFuture;
 import org.apache.mina.core.session.IoSession;
-
 import org.apache.mina.filter.codec.ProtocolCodecFilter;
 import org.apache.mina.transport.socket.SocketConnector;
 import org.apache.mina.transport.socket.nio.NioSocketConnector;
 
 import java.net.InetSocketAddress;
 
-public class MinaConnect {
+public class TcpConnect {
+
+    public static final String rtuAddrKey = "rtuAddr" ;
+    public static final String threadJobKey = "threadJob" ;
 
     /**
      * 鍒ゆ柇浼氳瘽鏄惁鏈夋晥
      * @param se 缃戠粶浼氳瘽
      * @return 鏄惁杩炴帴
      */
-    protected boolean isConnected(IoSession se) {
+    public boolean isConnected(IoSession se) {
         return (se != null && se.isConnected());
     }
 
     /**
      * 鍒涘缓鏂颁細璇�
+     * @param rtuAddr rtu鍦板潃
+     * @param job rtu宸ヤ綔绫�
      * @param host 鏈嶅姟鍣║RI
      * @param port 鏈嶅姟鍣ㄧ鍙�
      * @return 缃戠粶浼氳瘽
      */
-    protected IoSession createSession(String host , int port , int connectTimeout , MinaHandler handler) throws Exception{
+    public IoSession createSession(String rtuAddr, MyThreadJob job, String host , int port , int connectTimeout , TcpHandler handler) throws Exception{
         SocketConnector connector = new NioSocketConnector();
         connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(new LocalCodecFactory()));
         connector.setHandler(handler);
         ConnectFuture connectFuture = connector.connect(new InetSocketAddress(host, port));
         connectFuture.awaitUninterruptibly(connectTimeout);
         IoSession se = connectFuture.getSession();
+        se.setAttribute(rtuAddrKey, rtuAddr) ;
+        se.setAttribute(threadJobKey, job) ;
         return se ;
     }
 
@@ -42,7 +48,7 @@
      * @param se
      * @param connectTimeout
      */
-    protected void disconnect(IoSession se , int connectTimeout) {
+    public void disconnect(IoSession se , int connectTimeout) {
         if (se != null) {
             try{
                 se.closeNow().awaitUninterruptibly(connectTimeout);
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpHandler.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpHandler.java
new file mode 100644
index 0000000..fbd9ed7
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/TcpHandler.java
@@ -0,0 +1,77 @@
+package com.dy.testClient.tcpClient;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.mina.core.service.IoHandlerAdapter;
+import org.apache.mina.core.session.IdleStatus;
+import org.apache.mina.core.session.IoSession;
+import org.apache.mina.filter.FilterEvent;
+
+public class TcpHandler  extends IoHandlerAdapter {
+
+    private static Logger log = LogManager.getLogger(TcpHandler.class.getName()) ;
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void sessionCreated(IoSession session) throws Exception {
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void sessionOpened(IoSession session) throws Exception {
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void sessionClosed(IoSession session) throws Exception {
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void messageReceived(IoSession session, Object message) throws Exception {
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void messageSent(IoSession session, Object message) throws Exception {
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void inputClosed(IoSession session) throws Exception {
+        session.closeNow();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void event(IoSession session, FilterEvent event) throws Exception {
+    }
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpConnect/LocalDecoder.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpConnect/LocalDecoder.java
deleted file mode 100644
index 05aad53..0000000
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpConnect/LocalDecoder.java
+++ /dev/null
@@ -1,91 +0,0 @@
-package com.dy.testClient.tcpConnect;
-import java.io.*;
-
-import org.apache.mina.core.buffer.IoBuffer;
-import org.apache.mina.core.session.IoSession;
-import org.apache.mina.filter.codec.CumulativeProtocolDecoder;
-import org.apache.mina.filter.codec.ProtocolDecoderOutput;
-
-import com.am.cs12.command.*;
-
-public class LocalDecoder extends CumulativeProtocolDecoder {
-
-    private static final String DECODER_STATE_KEY = LocalDecoder.class.getName() + ".STATE";
-
-    public static final int MAX_SIZE = 2147483647 ;
-
-    private class DecoderState {
-        Command com;
-    }
-
-    /**
-     * 瀵圭綉缁滀紶杈撴潵鐨勬暟鎹繘琛岃В鐮�
-     */
-    protected boolean doDecode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws IOException, Exception{
-        //浠庝細璇濅腑寰楀埌宸茬粡瑙g爜鐨勬暟鎹�
-        DecoderState decoderState = (DecoderState) session.getAttribute(DECODER_STATE_KEY);
-        if (decoderState == null) {
-            decoderState = new DecoderState();
-            session.setAttribute(DECODER_STATE_KEY, decoderState);
-        }
-        if (decoderState.com == null) {
-            //璇曠潃璇诲彇鍛戒护鍖哄煙鏁版嵁
-            //MAX_IMAGE_SIZE 鐩殑鏄槻姝㈠ぇ鏁版嵁閲忔敾鍑�
-            if (in.prefixedDataAvailable(4, MAX_SIZE)) {
-                decoderState.com = readCommand(in);
-            } else {
-                //鍛戒护鍖哄煙鏃犺冻澶熺殑鏁版嵁
-                return false;
-            }
-        }
-        if (decoderState.com != null) {
-            //璇曠潃璇诲彇鏁版嵁(鏂囦欢)鍖哄煙鏁版嵁
-            //MAX_IMAGE_SIZE 鐩殑鏄槻姝㈠ぇ鏁版嵁閲忔敾鍑�
-            if (in.prefixedDataAvailable(4, MAX_SIZE)) {
-                byte[] bs = getDataBytes(in);
-                MinaData minaCom = new MinaData() ;
-                minaCom.setCom(decoderState.com) ;
-                minaCom.setAttachment(bs) ;
-                out.write(minaCom);
-
-                decoderState.com = null;
-                return true;
-            } else {
-                //鏁版嵁(鏂囦欢)鍖哄煙鏃犺冻澶熺殑鏁版嵁
-                return false;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * 璇诲彇Command鍛戒护
-     * @param in
-     * @return
-     * @throws IOException
-     */
-    private Command readCommand(IoBuffer iob) throws IOException , Exception{
-        int length = iob.getInt();
-        byte[] bytes = new byte[length];
-        iob.get(bytes);
-        Command	com = new Command().toObject(bytes);
-        return com;
-    }
-
-    /**
-     * 寰楀埌鏁版嵁鍩熸暟鎹殑瀛楄妭鏁扮粍
-     * @param in
-     * @return
-     * @throws IOException
-     */
-    private byte[] getDataBytes(IoBuffer iob) throws IOException {
-        int length = iob.getInt();
-        if(length == 0){
-            return null ;
-        }
-        byte[] bytes = new byte[length];
-        iob.get(bytes);
-        return bytes ;
-    }
-
-}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpConnect/LocalEncoder.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpConnect/LocalEncoder.java
deleted file mode 100644
index f895d68..0000000
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpConnect/LocalEncoder.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.dy.testClient.tcpConnect;
-
-import org.apache.mina.filter.codec.ProtocolEncoderOutput;
-import org.apache.mina.filter.codec.ProtocolEncoderAdapter;
-import org.apache.mina.core.buffer.IoBuffer;
-import org.apache.mina.core.session.IoSession;
-
-import java.io.*;
-
-public class LocalEncoder extends ProtocolEncoderAdapter {
-
-    /**
-     * 瀵规暟鎹繘琛岀紪鐮侊紝浠ュ缃戠粶浼犺緭
-     */
-    public void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws IOException, Exception{
-        MinaData minaData = null ;
-        if(message instanceof Command){
-            minaData = new MinaData() ;
-            minaData.setCom((Command)message) ;
-        }else{
-            minaData = (MinaData) message;
-        }
-        byte[] bytes1 = getCommandBytes(minaData.getCom());
-        byte[] bytes2 = minaData.getAttachment() ;
-        int capacity = (bytes1==null?0:bytes1.length) + (bytes2==null?0:bytes2.length) + 8;
-        IoBuffer buffer = IoBuffer.allocate(capacity, false);
-        buffer.putInt(bytes1.length);
-        buffer.put(bytes1);
-        if(bytes2 == null){
-            buffer.putInt(0);
-        }else{
-            buffer.putInt(bytes2.length);
-            buffer.put(bytes2);
-        }
-        buffer.flip();
-        out.write(buffer);
-    }
-
-    /**
-     * 灏嗗懡浠よ浆鎹㈡垚瀛楄妭鏁扮粍
-     * @param com
-     * @return
-     * @throws IOException
-     * @throws Exception
-     */
-    private byte[] getCommandBytes(Command com) throws IOException, Exception {
-        String xml = com.toXml() ;
-        byte[] bytes = xml.getBytes() ;
-        return bytes ;
-    }
-}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpConnect/MinaConnectPool.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpConnect/MinaConnectPool.java
deleted file mode 100644
index 0f3321f..0000000
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpConnect/MinaConnectPool.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package com.dy.testClient.tcpConnect;
-
-import java.util.*;
-import org.apache.mina.core.session.IoSession;
-
-
-public class MinaConnectPool {
-    /**
-     * 绌洪棽浼氳瘽鐨勬睜(Hashtable鏄嚎绋嬪畨鍏ㄧ殑)
-     */
-    private static Hashtable<String , Vector<IoSession>> freeSessions = new Hashtable<String ,Vector<IoSession>>();
-
-    /**
-     * 浠庝細璇濇睜涓緱鍒扮┖闂茬殑浼氳瘽锛屽鏋滄病鏈夌┖闂茬殑浼氳瘽锛屾湰鐫�蹇�熷弽搴旂殑鍘熷垯锛屾柊寤轰竴涓細璇濓紝涓嶅啀绛夊緟绻佸繖浼氳瘽鐨勯噴鏀�
-     * @param host
-     * @param port
-     * @return
-     * @throws Exception
-     */
-    public static IoSession getSession(String host , int port , int connectTimeout) throws Exception{
-        Vector<IoSession> vecter = freeSessions.get(getKey(host , port)) ;
-        if(vecter == null){
-            vecter = new Vector<IoSession>() ;
-            freeSessions.put(getKey(host , port), vecter) ;
-        }
-
-        MinaConnect con = new MinaConnect() ;
-
-        IoSession se = popSession(vecter , con) ;
-        if(se == null){
-            MinaHandler handler = new MinaHandler(connectTimeout) ;
-            se = createNewSession(host, port, connectTimeout, con, handler) ;
-        }
-        return se ;
-    }
-
-    /**
-     * 灏嗕細璇濇斁鍥炴睜涓�
-     * @param host
-     * @param port
-     * @param se
-     */
-    public static void freeSession(String host , int port , IoSession se){
-        if(se == null){
-            return ;
-        }
-        Vector<IoSession> vecter = freeSessions.get(getKey(host , port)) ;
-        if(vecter == null){
-            vecter = new Vector<IoSession>() ;
-            freeSessions.put(getKey(host , port), vecter) ;
-        }
-        putSession(vecter, se) ;
-    }
-
-    /**
-     * 浠庝細璇濇睜涓彇寰楃┖闂茬殑浼氳瘽
-     * @param vecter
-     * @return
-     */
-    private static IoSession popSession(Vector<IoSession> vecter , MinaConnect con){
-        IoSession se = null ;
-        while(se == null && !vecter.isEmpty()){
-            se = (IoSession)vecter.firstElement() ;
-            if(se != null){
-                vecter.removeElementAt(0) ;
-            }
-            if(!con.isConnected(se)){
-                se = null ;
-            }
-        }
-        return se ;
-    }
-
-    /**
-     * 鏀炬柊浼氳瘽
-     * @param vecter
-     * @param se
-     */
-    private static void putSession(Vector<IoSession> vecter , IoSession se){
-        vecter.addElement(se) ;
-    }
-
-    /**
-     * 鍒涘缓鏂颁細璇�
-     * @param host
-     * @param port
-     * @param connectTimeout
-     * @param con
-     * @return
-     * @throws Exception
-     */
-    private static IoSession createNewSession(String host , int port , int connectTimeout, MinaConnect con , MinaHandler handler) throws Exception{
-        return con.createSession(host, port, connectTimeout , handler) ;
-    }
-
-    /**
-     * 寰楀埌浼氳瘽姹犵殑key
-     * @param url
-     * @param port
-     * @return
-     */
-    private static String getKey(String host , int port){
-        return host + port ;
-    }
-
-}
-
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpConnect/MinaHandler.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpConnect/MinaHandler.java
deleted file mode 100644
index 8749cca..0000000
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpConnect/MinaHandler.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package com.dy.testClient.tcpConnect;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.mina.core.service.IoHandlerAdapter;
-import org.apache.mina.core.session.IdleStatus;
-import org.apache.mina.core.session.IoSession;
-
-public class MinaHandler extends IoHandlerAdapter {
-
-    private static Logger log = LogManager.getLogger(MinaHandler.class.getName()) ;
-
-    private Object synObj ;
-    private int connectTimeout ;
-    private MinaData minaData ;
-
-    public MinaHandler( int connectTimeout){
-        this.connectTimeout = connectTimeout ;
-        this.synObj = new Object() ;
-    }
-
-    /**
-     * 鍙戦�佸懡浠�
-     * @param session
-     * @param minaData
-     */
-    public void sendCommand(IoSession session, MinaData minaData){
-        session.write(minaData) ;
-    }
-
-    /**
-     * 鍙栧緱鍛戒护缁撴灉
-     * @param waitTimeout
-     */
-    public MinaData getAnswer(int waitTimeout){
-        synchronized (synObj) {
-            try {
-                synObj.wait(waitTimeout);
-            } catch (InterruptedException e) {
-                e.printStackTrace();
-            }
-        }
-        return this.minaData;
-    }
-
-
-
-    @Override
-    public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
-        new MinaConnect().disconnect(session, this.connectTimeout) ;
-        log.error(cause.getMessage()) ;
-    }
-
-    @Override
-    public void messageReceived(IoSession session, Object message) throws Exception {
-        this.minaData = (MinaData) message;
-        synchronized (synObj) {
-            if (synObj != null) {
-                synObj.notifyAll();
-            }
-        }
-    }
-
-    @Override
-    public void messageSent(IoSession session, Object message) throws Exception {
-        super.messageSent(session, message);
-        log.info("鍛戒护宸茬粡鍙戦�併��") ;
-    }
-
-    @Override
-    public void sessionClosed(IoSession session) throws Exception {
-        super.sessionClosed(session);
-        log.info("缃戠粶浼氳瘽宸茬粡鍏抽棴銆�") ;
-    }
-
-    @Override
-    public void sessionCreated(IoSession session) throws Exception {
-        super.sessionCreated(session);
-        log.info("缃戠粶浼氳瘽宸茬粡鍒涘缓銆�") ;
-    }
-
-    @Override
-    public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
-        super.sessionIdle(session, status);
-    }
-
-    @Override
-    public void sessionOpened(IoSession session) throws Exception {
-        super.sessionOpened(session);
-        log.info("缃戠粶浼氳瘽宸茬粡鎵撳紑銆�") ;
-    }
-
-
-}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/resources/Config.xml b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/resources/Config.xml
index aec0502..7ac7aec 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/resources/Config.xml
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/resources/Config.xml
@@ -32,17 +32,13 @@
 	 -->
 	<rmiCl
 		rmiSvUrl="127.0.0.1"
-		rmiSvContext="mwTestServer"
-		rmiSvPort="9898"
+		rmiSvContext="mwTestSv"
+		rmiSvPort="12345"
 	/>
 	<!--
 	enable:鏄惁鍚姩
-	heartbeatTimes:杩炵画閰嶇疆娆℃暟蹇冭烦鍚庡彂閫佷竴娆℃暟鎹�
-	sendInterval:鍙戦�佸績璺虫垨鏁版嵁鐨勬椂闂撮棿闅�
 	 -->
 	<tcpCl
 		enable="true"
-		heartbeatTimes="3"
-		sendInterval="3"
 	/>
 </config>		
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/resources/application.yml b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/resources/application.yml
deleted file mode 100644
index 8b13789..0000000
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/resources/application.yml
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/resources/log4j2.xml b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..104ed67
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/resources/log4j2.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="OFF">
+  <Appenders>
+    <Console name="Console" target="SYSTEM_OUT">
+      <PatternLayout charset="GBK" pattern="%d %-5p [%t] (%F:%L) - %m%n%throwable"/>
+    </Console>
+    <!-- 
+    	fileName="${sys:user.home}/logs/aepTest.log" filePattern="${sys:user.home}/logs/aepTest-%d{yyyy-MM}-%i.log.gz"
+    	fileName="/logs/testJgroups.log" filePattern="/logs/testJgroups-%d{yyyyMMdd}-%i.log.gz"
+    	fileName="logs/testJgroups.log" filePattern="logs/testJgroups-%d{yyyyMMdd}-%i.log.gz"
+    	sys:user.home褰撳墠鐢ㄦ埛鍦ㄦ搷浣滅郴缁熶腑鐨勬枃妗g洰褰� 
+    	/logs/testJgroups.log褰撳墠杞欢鎵�鍦ㄧ‖鐩樻牴鐩綍 
+    	logs/testJgroups.log褰撳墠杞欢鎵�鍦ㄧ洰褰� 
+     -->
+    <RollingFile name="File" fileName="logs/mwTestCl.log" filePattern="logs/aepTest-%d{yyyyMMdd}-%i.log">
+      <PatternLayout charset="UTF-8" pattern="%d %-5p [%t] (%class.%method:%L) - %m%n%throwable"/>
+      <Policies>
+        <TimeBasedTriggeringPolicy interval="7" />
+        <SizeBasedTriggeringPolicy size="10MB"/>
+      </Policies>
+      <DefaultRolloverStrategy max="50" />
+    </RollingFile>
+  </Appenders>
+  <Loggers>
+  	<!-- 
+  	<Logger name="com.zhzc.jgTest" level="debug">
+      <AppenderRef ref="Console"/>
+    </Logger>
+  	<Logger name="org.jgroups" level="info">
+      <AppenderRef ref="File"/>
+    </Logger>
+  	-->
+    <!-- Root涓庡悇涓狶ogger鍚屾椂璧蜂綔鐢� -->
+    <Root level="info">
+      <AppenderRef ref="Console"/>
+      <AppenderRef ref="File"/>
+    </Root>
+  </Loggers>
+</Configuration>
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/resources/log4j2.yml b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/resources/log4j2.yml
deleted file mode 100644
index 375972f..0000000
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/resources/log4j2.yml
+++ /dev/null
@@ -1,64 +0,0 @@
-Configuration:
-    #status锛岃繖涓敤浜庤缃甽og4j2鑷韩鍐呴儴鐨勪俊鎭緭鍑猴紝鍙互涓嶈缃紝褰撹缃垚trace鏃讹紝浣犱細鐪嬪埌log4j2鍐呴儴鍚勭璇︾粏杈撳嚭锛涘彲浠ヨ缃垚Off(鍏抽棴)鎴朎rror(鍙緭鍑洪敊璇俊鎭�)
-    status: Error
-
-    Properties: # 瀹氫箟鍏ㄥ眬鍙橀噺
-        Property:
-            #鏃ュ織鏂囦欢瀛樺偍鐨勭洰褰�
-            - name: log.path
-              value: ./logs
-            #鏃ュ織鏂囦欢瀛樺偍鍚嶇О
-            - name: project.name
-              value: mwTestClient
-
-    #瀹氫箟杈撳嚭鍣紝鍙互杈撳嚭鍒版帶鍒跺彴鍜屾枃浠�.
-    Appenders:
-        #杈撳嚭鍒版帶鍒跺彴
-        Console:
-            #Appender鍛藉悕
-            name: CONSOLE
-            target: SYSTEM_OUT
-            ThresholdFilter:
-                level: debug #杈撳嚭鏃ュ織绾у埆锛岃緭鍑烘棩蹇楁椂锛岄鍏堢敱Loggers.Root.level鎴朙oggers.Logger.level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢辨湰level鍒ゆ柇鏄惁杈撳嚭
-                onMatch: ACCEPT #onMatch=ACCEPT 澶т簬绛変簬 "level" 閰嶇疆鐨勭瓑绾у湴鏃ュ織杈撳嚭
-                onMismatch: DENY #onMismatch=DENY 灏忎簬 "level" 閰嶇疆鐨勭瓑绾у湴鏃ュ織涓嶈緭鍑�
-            #鏃ュ織鍐呭鏍峰紡
-            PatternLayout:
-                #%n-鎹㈣
-                #%m-鏃ュ織鍐呭锛岃緭鍑轰唬鐮佷腑鎸囧畾鐨勬棩蹇椾俊鎭�
-                #%p-杈撳嚭浼樺厛绾э紝鍗矰EBUG,INFO,WARN,ERROR,FATAL
-                #%r-绋嬪簭鍚姩鍒扮幇鍦ㄧ殑姣鏁�
-                #%%- 杈撳嚭涓�涓�"%" 瀛楃
-                #%t-褰撳墠绾跨▼鍚�
-                #%d-鏃ユ湡鍜屾椂闂�, 甯哥敤鐨勬牸寮忔湁%d{DATE},%d{ABSOLUTE},%d{HH:mm:ss,SSS},%d{ddMMyyyyHH:mm:ss,SSS}
-                #%l-鍚�%F%L%C%M
-                #%F-java婧愭枃浠跺悕
-                #%L-java婧愮爜琛屾暟
-                #%C-java绫诲悕,%C{1}杈撳嚭鏈�鍚庝竴涓厓绱�
-                #%M-java鏂规硶鍚�
-                pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%C.%M:%L) - %m%n"
-        # 杈撳嚭鍒版枃浠讹紝瓒呰繃10MB褰掓。
-        RollingFile:
-            - name: ROLLING_FILE
-              ignoreExceptions: false
-              fileName: ${log.path}/${project.name}.log
-              filePattern: "${log.path}/$${date:yyyy-MM}/${project.name}-%d{yyyy-MM-dd}-%i.log.gz"
-              ThresholdFilter:
-                  level: error #杈撳嚭鏃ュ織绾у埆锛岃緭鍑烘棩蹇楁椂锛岄鍏堢敱Loggers.Root.level鎴朙oggers.Logger.level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢辨湰level鍒ゆ柇鏄惁杈撳嚭
-                  onMatch: ACCEPT #onMatch=ACCEPT 澶т簬绛変簬 "level" 閰嶇疆鐨勭瓑绾у湴鏃ュ織杈撳嚭
-                  onMismatch: DENY #onMismatch=DENY 灏忎簬 "level" 閰嶇疆鐨勭瓑绾у湴鏃ュ織涓嶈緭鍑�
-              #鏃ュ織鍐呭鏍峰紡
-              PatternLayout:
-                  pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%C.%M:%L) - %m%n"
-              Policies:
-                  SizeBasedTriggeringPolicy:
-                      size: "10 MB"
-              DefaultRolloverStrategy:
-                  max: 1000
-
-    Loggers:
-        Root:
-            level: info #鏃ュ織杈撳嚭绾у埆锛屽叡鏈�8涓骇鍒紝鎸夌収浠庝綆鍒伴珮涓猴細all < trace < debug < info < warn < error < fatal < off
-            AppenderRef: #Root鐨勫瓙鑺傜偣锛岀敤鏉ユ寚瀹氳鏃ュ織杈撳嚭鍒板摢涓狝ppender.
-                - ref: CONSOLE #杈撳嚭鏃ュ織鏃讹紝棣栧厛鐢辨湰level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢变笂闈㈢殑Appenders.Console.ThresholdFilter.level鍒ゆ柇鏄惁杈撳嚭
-                - ref: ROLLING_FILE  #杈撳嚭鏃ュ織鏃讹紝棣栧厛鐢辨湰level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢变笂闈㈢殑Appenders.RollingFile.ThresholdFilter.level鍒ゆ柇鏄惁杈撳嚭
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/pom.xml b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/pom.xml
new file mode 100644
index 0000000..18bf9de
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/pom.xml
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <artifactId>pipIrr-mw</artifactId>
+        <groupId>com.dy</groupId>
+        <version>1.0.0</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <packaging>jar</packaging>
+    <artifactId>pipIrr-mwTest-server</artifactId>
+    <version>1.0.0</version>
+    <name>pipIrr-mwTest-server</name>
+    <description>涓烘ā鎷烺TU娴嬭瘯绔彁渚涙湇鍔�</description>
+
+    <dependencies>
+    </dependencies>
+
+    <build>
+        <resources>
+            <resource>
+                <directory>src/main/java</directory>
+                <includes>
+                    <include>**/*.xml</include>
+                </includes>
+            </resource>
+            <resource>
+                <directory>src/main/resources</directory>
+                <includes>
+                    <include>**/*.xml</include>
+                    <include>**/*.yml</include>
+                </includes>
+            </resource>
+        </resources>
+        <plugins>
+            <plugin>
+                <!-- 璇ユ彃浠朵笉浼氬皢椤圭洰涓紩鍏ョ殑渚濊禆鎵撹繘鏈�缁堢殑 Jar 鏂囦欢 -->
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <!-- 鐢熸垚鐨刯ar涓紝涓嶈鍖呭惈pom.xml鍜宲om.properties杩欎袱涓枃浠� -->
+                        <addMavenDescriptor>false</addMavenDescriptor>
+                        <!-- 杩欓儴鍒嗗彲鏈夊彲鏃�,鍔犱笂鐨勮瘽鍒欑洿鎺ョ敓鎴愬彲杩愯jar鍖� -->
+                        <manifest>
+                            <mainClass>com.dy.testServer.Server</mainClass>
+                            <useUniqueVersions>false</useUniqueVersions>
+                            <addClasspath>true</addClasspath>
+                            <classpathPrefix>lib/</classpathPrefix>
+                        </manifest>
+                        <!-- manifestEntries鐨勪綔鐢ㄦ槸鎸囧畾鏈湴锛堣嚜宸变笅杞界殑lib涓嬬殑锛塲ar鍖呮坊鍔犲埌MANIFEST.MF鏂囦欢涓幓
+                        <manifestEntries>
+                            <Class-Path>.lib/alipay-sdk.java.jar</Class-Path>
+                        </manifestEntries>
+                        -->
+                    </archive>
+                    <!-- 鎺掗櫎鏌愪釜鏂囦欢
+                    <excludes>
+                        <exclude>com/dy/App.class</exclude>
+                    </excludes>
+                    -->
+                    <!-- 鍙墽琛宩ar杩涜鍛藉悕銆傝繖鏍蜂細鎵撳寘鎴愪袱涓猨ar鍖咃紝涓嶄細瀵规櫘閫歫ar閲嶆柊鍛藉悕銆�
+                    <classifier>exec</classifier>
+                     -->
+                </configuration>
+            </plugin>
+            <plugin>
+                <!-- 褰撻」鐩腑渚濊禆姣旇緝澶氭椂锛屾垜浠彲浠ュ�熷姪 maven-dependency-plugin 鎻掍欢鑷姩甯垜浠笅杞戒緷璧栫殑 Jar 鏂囦欢锛屾帹鑽愬皢璇ユ彃浠剁粦瀹氬埌package鐢熷懡鍛ㄦ湡涓� -->
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <!-- 缁戝畾鐢熷懡鍛ㄦ湡 -->
+                        <phase>package</phase>
+                        <goals>
+                            <goal>copy-dependencies</goal>
+                        </goals>
+                        <!-- 璁剧疆渚濊禆鐨勫瓨鏀捐矾寰� -->
+                        <configuration>
+                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <!-- 璁剧疆java缂栬瘧鐗堟湰锛岃繍琛岀幆澧冪増鏈� -->
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <!-- source锛� 婧愪唬鐮佺紪璇戠増鏈紱target锛� 鐩爣骞冲彴缂栬瘧鐗堟湰锛沞ncoding锛� 瀛楃闆嗙紪鐮併�� -->
+                <configuration>
+                    <source>${java.version}</source>
+                    <target>${java.version}</target>
+                    <encoding>${encoding}</encoding>
+                </configuration>
+            </plugin>
+            <plugin>
+                <!-- 瑙e喅璧勬簮鏂囦欢鐨勭紪鐮侀棶棰� -->
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <configuration>
+                    <encoding>${encoding}</encoding>
+                </configuration>
+            </plugin>
+
+            <plugin>
+                <!-- maven閲屾墽琛屾祴璇曠敤渚嬬殑鎻掍欢 -->
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <skipTests>true</skipTests>
+                </configuration>
+            </plugin>
+
+        </plugins>
+    </build>
+</project>
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/Server.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/Server.java
new file mode 100644
index 0000000..6e08a2e
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/Server.java
@@ -0,0 +1,169 @@
+package com.dy.testServer;
+
+import java.io.Console;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.dy.testServer.console.CommandConsole;
+import com.dy.testServer.forRmi.Manager;
+import org.jdom2.Document;
+
+import com.dy.common.mw.UnitInterface;
+import com.dy.common.mw.UnitStartedCallbackInterface;
+import com.dy.common.mw.channel.rmi.RmiConfigVo;
+import com.dy.common.mw.channel.rmi.RmiUnit;
+import com.dy.common.util.ConfigXml;
+import com.dy.common.util.NumUtil;
+
+public class Server{
+
+	private ConfigXml conf = null ;
+	private Document doc = null ;
+	private boolean showStartInfo = false ;
+	
+	private String RmiSvUrl ;
+	
+	private final List<UnitInterface> units = new ArrayList<>() ;
+
+	/**
+	 * @param args 鍙傛暟
+	 */
+	public static void main(String[] args) {
+		new Server().startServer(args);
+	}
+
+	/**
+	 * 鍚姩鏈嶅姟
+	 */
+	public void startServer(String[] args){
+		Server sv = new Server();
+		long start = System.currentTimeMillis() ;
+		try {
+			sv.conf = new ConfigXml() ;
+			sv.doc = sv.conf.createDom(sv.getClass(), "config.xml") ;
+			////////////////
+			//鏈嶅姟 閰嶇疆
+			sv.showStartInfo = sv.conf.getSetAttrBoolean(sv.doc, "config.server", "showStartInfo", null, null) ;
+
+			sv.startUnits() ;
+			
+			String svName ;
+            try{
+            	svName = sv.conf.getSetAttrTxt(sv.doc, "config.server", "name", null, false, null) ;
+            }catch(Exception e){
+            	svName = "" ;
+            }
+            
+            System.out.println("OOOOOOOOOO           OOOOOOOO       OOOOOOOO") ;
+            System.out.println("@@@@@@@@@@@@@@@@#O    $@@@@@@@@&    @@@@@@@@#") ;       
+            System.out.println("@@@@@@@@@@@@@@@@@@@#    @@@@@@@@# $@@@@@@@@&") ;        
+            System.out.println("@@@@@@@@@@@@@@@@@@@@@#   #@@@@@@@@@@@@@@@@O") ;    
+            System.out.println("@@@@@@@@@@@@@@@@@@@@@@@   &@@@@@@@@@@@@@@") ;           
+            System.out.println("@@@@@@$      $@@@@@@@@@&   O@@@@@@@@@@@#") ;        
+            System.out.println("@@@@@@$        @@@@@@@@@     @@@@@@@@@&  " + svName + "mwTestSv " ) ;
+            System.out.println("@@@@@@$        @@@@@@@@@     &@@@@@@@@") ;
+            System.out.println("@@@@@@$       O@@@@@@@@@     &@@@@@@@@") ;              
+            if(sv.RmiSvUrl != null){
+                System.out.println("@@@@@@$      #@@@@@@@@@$     &@@@@@@@@   RmiSv " + sv.RmiSvUrl ) ;        
+            }else{
+                System.out.println("@@@@@@$      #@@@@@@@@@$     &@@@@@@@@" ) ;        
+            }
+            System.out.println("@@@@@@@@@@@@@@@@@@@@@@#      &@@@@@@@@   Runing in standalone mode" ) ;    
+            System.out.println("@@@@@@@@@@@@@@@@@@@@@&       &@@@@@@@@   Startup in " + (System.currentTimeMillis() - start) + " MS" ) ;              
+            System.out.println("@@@@@@@@@@@@@@@@@@@#         &@@@@@@@@") ;            
+            System.out.println("@@@@@@@@@@@@@@@@#O           &@@@@@@@@") ;              
+
+
+			
+			Console console = System.console();
+			if (console == null) {
+				throw new IllegalStateException("涓ラ噸閿欒锛屾湭鑳藉緱鍒版帶鍒跺彴瀵硅薄!");
+			}
+			CommandConsole mwConsole = new CommandConsole(console) ;
+			mwConsole.init(args);
+			boolean exit = mwConsole.clientConsole() ;
+			if(exit){
+				System.exit(-1);
+			}
+		}catch(Exception e){
+			e.printStackTrace();
+		}
+	}
+	
+	private void startUnits(){
+		try {
+			///////////////
+			//鍩烘湰閰嶇疆
+			String txt = conf.getSetAttrTxt(doc, "config.base", "rtuAddrStart", null, false, null) ;
+			if(txt == null || txt.trim().equals("")){
+				throw new Exception("鍏冪礌config.base鐨勫睘鎬tuAddrStart鐨勫�间负绌哄瓧绗︿覆!");
+			}
+			txt = txt.trim() ;
+			if(!NumUtil.isPlusIntNumber(txt)){
+				throw new Exception("鍏冪礌config.base鐨勫睘鎬tuAddrStart鐨勫�煎繀椤讳负鏁板��!");
+			}
+			if(txt.startsWith("0")){
+				throw new Exception("鍏冪礌config.base鐨勫睘鎬tuAddrStart鐨勬暟鍊间笉鑳戒互0寮�澶�!");
+			}
+			if(txt.length() != 10){
+				throw new Exception("鍏冪礌config.base鐨勫睘鎬tuAddrStart鐨勬暟鍊奸暱搴﹀繀椤讳负10浣�!");
+			}
+			ServerProperties.rtuAddrStart = Long.valueOf(txt) ;
+			
+			txt = conf.getSetAttrTxt(doc, "config.base", "rtuAddrEnd", null, false, null) ;
+			if(txt == null || txt.trim().equals("")){
+				throw new Exception("鍏冪礌config.base鐨勫睘鎬tuAddrEnd鐨勫�间负绌哄瓧绗︿覆!");
+			}
+			txt = txt.trim() ;
+			if(!NumUtil.isPlusIntNumber(txt)){
+				throw new Exception("鍏冪礌config.base鐨勫睘鎬tuAddrEnd鐨勫�煎繀椤讳负鏁板��!");
+			}
+			if(txt.startsWith("0")){
+				throw new Exception("鍏冪礌config.base鐨勫睘鎬tuAddrEnd鐨勬暟鍊间笉鑳戒互0寮�澶�!");
+			}
+			if(txt.length() != 10){
+				throw new Exception("鍏冪礌config.base鐨勫睘鎬tuAddrEnd鐨勬暟鍊奸暱搴﹀繀椤讳负10浣�!");
+			}
+			ServerProperties.rtuAddrEnd = Long.valueOf(txt) ;
+			if(ServerProperties.rtuAddrEnd <= ServerProperties.rtuAddrStart){
+				throw new Exception("鍏冪礌config.base鐨勫睘鎬tuAddrEnd鐨勬暟鍊煎繀椤诲ぇ浜巖tuAddrStart!");
+			}
+	
+			ServerProperties.rtuAddrPerMwTest = conf.getSetAttrPlusInt(doc, "config.base", "rtuAddrPerMwTest", null, 1, null, null) ;
+			if(ServerProperties.rtuAddrPerMwTest > ServerProperties.rtuAddrEnd - ServerProperties.rtuAddrStart){
+				throw new Exception("鍏冪礌config.base鐨勫睘鎬tuAddrPerMwTest鐨勬暟鍊奸厤缃笉姝g‘!");
+			}
+			ServerProperties.tcpServerIp = conf.getSetAttrTxt(doc, "config.base", "tcpServerIp", null, false, null) ;
+			ServerProperties.tcpServerPort = conf.getSetAttrPlusInt(doc, "config.base", "tcpServerPort", null, 1, 65535, null) ;
+			ServerProperties.sendInterval = conf.getSetAttrPlusInt(doc, "config.base", "sendInterval", null, 1, null, null) ;
+			ServerProperties.heartbeatTimes = conf.getSetAttrPlusInt(doc, "config.base", "heartbeatTimes", null, 1, null, null) ;
+			ServerProperties.sendTimes = conf.getSetAttrPlusInt(doc, "config.base", "sendTimes", null, 1, null, null) ;
+
+				
+			/////////////////
+			//RMI妯″潡
+			Manager.init();
+			RmiConfigVo rmiVo = new RmiConfigVo();
+			rmiVo.enable = conf.getSetAttrBoolean(doc, "config.rmi", "enable", null, null) ;
+			if(rmiVo.enable){
+				rmiVo.port = conf.getSetAttrPlusInt(doc, "config.rmi", "port", null, 100, 65535, null);
+				rmiVo.context = conf.getSetAttrTxt(doc, "config.rmi", "context", null, false, null);
+				rmiVo.showStartInfo = showStartInfo ;
+				AdapterImp_RmiUnit rmiAdap = new AdapterImp_RmiUnit();
+				rmiAdap.setConfig(rmiVo);
+				RmiUnit rmiUnit = RmiUnit.getInstance();
+				rmiUnit.setAdapter(rmiAdap);
+				rmiUnit.start(new UnitStartedCallbackInterface(){
+					@Override
+					public void call(Object obj) {
+					}
+				});
+				RmiSvUrl = "[ip]:" + rmiVo.port + "/" + rmiVo.context ;
+				units.add(rmiUnit) ;
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}		
+	}
+	
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/ServerProperties.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/ServerProperties.java
new file mode 100644
index 0000000..7bada8e
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/ServerProperties.java
@@ -0,0 +1,22 @@
+package com.dy.testServer;
+
+public class ServerProperties {
+	
+	//妯℃嫙瀹㈡埛鐨剅tuAddr璧峰鍙�
+	public static Long rtuAddrStart = 0L ;
+	//妯℃嫙瀹㈡埛鐨剅tuAddr鎴鍙�
+	public static Long rtuAddrEnd = 0L ;
+	//姣忎釜mwTest鍒嗛厤鐨剅tuAddr鏁�
+	public static Integer rtuAddrPerMwTest = 0 ;
+	//鏈嶅姟绔疷RL
+	public static String tcpServerIp = "" ;
+	//鏈嶅姟绔笂涓嬫枃
+	public static Integer tcpServerPort = 60000 ;
+	//鍙戦�佹暟鎹棿闅� 绉�
+	public static Integer sendInterval = 0 ;
+	//姣忎竴杞鍙戦�佹暟鎹紝鍏朵腑鍖呮嫭蹇冭烦鍙戦�佹鏁�
+	public static Integer heartbeatTimes = 0 ;
+	//鍙戦�佹暟鎹鏁�
+	public static Integer sendTimes = 0 ;
+
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/console/Command.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/console/Command.java
new file mode 100644
index 0000000..e002217
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/console/Command.java
@@ -0,0 +1,128 @@
+package com.dy.testServer.console;
+
+import java.io.PrintWriter;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+import com.dy.common.mw.channel.rmi.RmiConfigVo;
+import com.dy.common.mw.channel.rmi.RmiUnit;
+import com.dy.testServer.ServerProperties;
+import com.dy.testServer.forRmi.MwTestClientStatus;
+import com.dy.testServer.forRmi.Manager;
+
+public class Command {
+	
+	private static final String[] commands ;
+	static{
+		commands = new String[]{
+				"config 鏌ョ湅閰嶇疆淇℃伅",	
+				"show 鏄剧ずmwTest鎯呭喌",	
+				"start 鍚姩mwTest涓婃姤鏁版嵁",	
+				"exit 閫�鍑�",
+		};
+	}
+	
+	
+	public static boolean dealCommand(String command, PrintWriter prtWrt){
+		boolean exit = false ;
+		if (command.equals("help")) {
+			outCommand(prtWrt);
+		} else if (command.equals("config")) {
+			config(prtWrt);
+		} else if (command.equals("show")) {
+			show(prtWrt);
+		} else if (command.equals("start")) {
+			start(prtWrt);
+		} else if(command.equals("exit")){
+			exit = true ;
+		} else {
+			outError(prtWrt);
+		}
+		return exit ;
+	}
+	private static void outCommand(PrintWriter prtWrt){
+		prtWrt.println("");
+		prtWrt.println("鍛戒护");
+		for(String s : commands){
+			prtWrt.println("  " + s);
+		}
+		prtWrt.println("");
+	}
+	private static void outError(PrintWriter prtWrt){
+		prtWrt.println("");
+		prtWrt.println("鍛戒护涓嶅彲璇嗗埆锛�");
+		prtWrt.println("");
+	}
+	
+	private static void config(PrintWriter prtWrt){
+		prtWrt.println("");
+		prtWrt.println("鐩稿叧mwTest鐨勯厤缃�");
+		prtWrt.println("  妯℃嫙瀹㈡埛鐨凴tuAddr璧峰鍙凤細" + ServerProperties.rtuAddrStart);
+		prtWrt.println("  妯℃嫙瀹㈡埛鐨凴tuAddr鎴鍙凤細" + ServerProperties.rtuAddrEnd);
+		prtWrt.println("  姣忎釜mwTest鍒嗛厤鐨凴tuAddr鏁帮細" + ServerProperties.rtuAddrPerMwTest);
+		prtWrt.println("  閫氫俊涓棿浠禝P锛�" + ServerProperties.tcpServerIp);
+		prtWrt.println("  閫氫俊涓棿浠剁鍙o細" + ServerProperties.tcpServerPort);
+		prtWrt.println("  mwTest鍙戦�佹暟鎹棿闅旓紙绉掞級锛�" + ServerProperties.sendInterval);
+		prtWrt.println("  mwTest姣廟tuAddr鍙峰彂閫佹暟鎹鏁帮細" + ServerProperties.sendTimes);
+		prtWrt.println("  mwTest姣忎竴杞鍙戦�佹暟鎹紝鍏朵腑鍖呮嫭蹇冭烦鍙戦�佹鏁帮細" + ServerProperties.heartbeatTimes);
+		prtWrt.println("鏈湇鍔MI Server閰嶇疆");
+		String ip = null ;
+		try {
+			ip = InetAddress.getLocalHost().getHostAddress();
+		} catch (UnknownHostException e) {
+			e.printStackTrace();
+		}
+		RmiConfigVo confVo = RmiUnit.getInstance().getAdapter().getConfig() ;
+		if(ip != null){
+			prtWrt.println("  RMI Server锛�" + ip + ":" + confVo.port + "/" + confVo.context);
+		}else{
+			prtWrt.println("  RMI Server锛歔ip]:" + confVo.port + "/" + confVo.context);
+		}
+		prtWrt.println("");
+	}
+	
+	private static void show(PrintWriter prtWrt){
+		prtWrt.println("");
+		prtWrt.println("褰撳墠宸叉敞鍐宮wTest瀹㈡埛绔暟閲忥細" + Manager.id2TokenMap.size());
+		if(Manager.id2TokenMap.size() > 0){
+			prtWrt.println("mwTest瀹㈡埛绔強鍏跺伐浣滀俊鎭�");
+			Set<Map.Entry<String, MwTestClientStatus>> set = Manager.token2ClientMap.entrySet() ;
+			Iterator<Map.Entry<String, MwTestClientStatus>> it = set.iterator() ;
+			Map.Entry<String, MwTestClientStatus> ent ;
+			while(it.hasNext()){
+				ent = it.next() ;
+				prtWrt.println("  mwTest瀹㈡埛绔�(token=" + ent.getKey() + ")");
+				MwTestClientStatus sta = ent.getValue() ;
+				if(sta != null){
+					if(sta.confVo != null){
+						prtWrt.println("    rtuAddr鑼冨洿锛�" + sta.confVo.rtuAddrStart + "--" + sta.confVo.rtuAddrEnd);
+					}
+					if(sta.startVo != null){
+						prtWrt.println("    涓婃姤鏁版嵁锛�" + (sta.startVo.start?"宸茬粡寮�濮�":"鏈紑濮�"));
+					}else{
+						prtWrt.println("    涓婃姤鏁版嵁锛氭湭寮�濮�") ;
+					}
+					if(sta.count != null){
+						prtWrt.println("    宸茬粡涓婃姤鏁版嵁锛�" + sta.count + "鏉�");
+					}
+					if(sta.over != null && sta.over){
+						prtWrt.println("    涓婃姤鏁版嵁宸茬粡瀹屾垚锛屽叡鐢ㄦ椂锛�" + sta.seconds + "绉�");
+					}
+				}
+			}
+		}
+		prtWrt.println("");
+	}
+	
+	private static void start(PrintWriter prtWrt){
+		prtWrt.println("");
+		prtWrt.println("  宸茬粡鍏佽mwTest涓婃姤鏁版嵁浜�");
+		prtWrt.println("");
+		Manager.enablemwTestStart = true ;
+	}
+
+
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/console/CommandConsole.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/console/CommandConsole.java
new file mode 100644
index 0000000..1236153
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/console/CommandConsole.java
@@ -0,0 +1,91 @@
+package com.dy.testServer.console;
+
+import java.io.Console;
+import java.io.PrintWriter;
+
+public class CommandConsole {
+	
+	private Console console ;
+	private PrintWriter prtWrt ;
+	private static final String myPassword = "123456" ;
+	private static final String commandPrefix1 = ">>" ;
+	private static final String commandPrefix2 = "$: " ;
+	private static String commandPrefix = commandPrefix1 + commandPrefix2 ;
+
+	
+	public CommandConsole(Console console)throws Exception{
+		this.console = console ;	
+		if(this.console == null){
+			throw new Exception("涓ラ噸閿欒锛宩ava鎺у埗鍙板璞′负绌猴紒");
+		}
+		prtWrt = console.writer() ;
+	}
+
+	/**
+	 * 鍒濆锛屾鏌ュ苟杈撳嚭涓�浜涗俊鎭�
+	 * @param args 鍙傛暟
+	 * @throws Exception 寮傚父
+	 */
+	public void init(String[] args) throws Exception{
+		PrintWriter prtWrt = console.writer() ;
+		if(args != null && args.length > 0){
+			String str = "" ;
+			for(String s : args){
+				str += s ;
+			}
+			prtWrt.println("info锛氬惎鍔ㄥ弬鏁�" + str);
+		}
+
+		prtWrt.println("----------------------------------------");
+		prtWrt.println("--                                    --");
+		prtWrt.println("--    娆㈣繋浣跨敤mwTest 鏈嶅姟鎺у埗绔�       --");
+		prtWrt.println("--                                    --");
+		prtWrt.println("----------------------------------------");
+	}
+	
+	/**
+	 * 鎵ц鎺у埗鍙版帶鍒�
+	 * @return 杩斿洖
+	 */
+	public boolean clientConsole(){
+		boolean exit = false ;
+		try {
+			this.login() ;
+			exit = this.doConsole();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return exit ;
+	}
+	
+	private boolean login(){
+		while (true) {
+			//String username = console.readLine("Username: ");
+			char[] password = console.readPassword(">>Password: ");
+			String passwordStr = String.valueOf(password) ;
+			if (passwordStr.equals("help")) {
+				console.printf("瀵嗙爜鏄�%1$s.\n", "123456");
+				// 浣跨敤鍚庡簲绔嬪嵆灏嗘暟缁勬竻绌猴紝浠ュ噺灏戝叾鍦ㄥ唴瀛樹腑鍗犵敤鐨勬椂闂达紝澧炲己瀹夊叏鎬�
+				password = null;
+			} else if(passwordStr.equals(myPassword)){
+				return true;
+			}
+		}
+	}
+	
+	private boolean doConsole(){
+		boolean exit = false ;
+		while (!exit) {
+			String command = console.readLine(commandPrefix);
+			exit = Command.dealCommand(command, prtWrt) ;
+		}
+		return exit ;
+	}
+	
+	public static void changeCommandPrefix(String prefix){
+		commandPrefix = commandPrefix1 + prefix ;
+	}
+	public static void recoverCommandPrefix(){
+		commandPrefix = commandPrefix1 + commandPrefix2 ;
+	}
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/Code.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/Code.java
new file mode 100644
index 0000000..970c2f5
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/Code.java
@@ -0,0 +1,16 @@
+package com.dy.testServer.forRmi;
+
+public class Code {
+
+	public static String cd1 = "001" ;//娉ㄥ唽
+	
+	public static String cd2 = "002" ;//璇锋眰mwClient鐨勯厤缃�
+	
+	public static String cd3 = "003" ;//璇锋眰寮�濮嬪伐浣�
+	
+	public static String cd4 = "004" ;//鍚戞湇鍔$涓婃姤淇℃伅
+
+	public static String cd5 = "005" ;//鍚戞湇鍔$涓婃姤  瀹屾垚浠诲姟鐨勬暟閲�
+
+	public static String cd6 = "006" ;//鍚戞湇鍔$涓婃姤  鍏ㄩ儴浠诲姟瀹屾垚
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/Manager.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/Manager.java
new file mode 100644
index 0000000..ca88a20
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/Manager.java
@@ -0,0 +1,192 @@
+package com.dy.testServer.forRmi;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.dy.testServer.ServerProperties;
+
+public class Manager {
+	
+	public static boolean enablemwTestStart = false ;
+	
+	public static int clientId = 1 ;
+	
+	public static long maxClient = 0 ;
+	
+	public static Map<String, String> id2TokenMap = new HashMap<>() ;
+
+	public static Map<String, MwTestClientStatus> token2ClientMap = new HashMap<>() ;
+	
+	public static List<Object[]> rtuAddrList = new ArrayList<>() ;
+	
+	public static void init(){
+		maxClient = (ServerProperties.rtuAddrEnd - ServerProperties.rtuAddrStart)/ServerProperties.rtuAddrPerMwTest ;
+		if((ServerProperties.rtuAddrEnd - ServerProperties.rtuAddrStart)%ServerProperties.rtuAddrPerMwTest > 0 ){
+			maxClient = maxClient + 1 ;
+		}
+		int count = 0 ;
+		for(int i = 0; i < maxClient; i++){
+			long start = ServerProperties.rtuAddrStart + (i * ServerProperties.rtuAddrPerMwTest) ;
+			long end = ServerProperties.rtuAddrStart + ((i + 1) * ServerProperties.rtuAddrPerMwTest - 1) ;
+			if(end > ServerProperties.rtuAddrEnd){
+				end = ServerProperties.rtuAddrEnd ;
+			}
+			if(end < start){
+				break ;
+			}else{
+				rtuAddrList.add(count++, new Object[]{start, end});
+			}
+		}
+	}
+	
+	public synchronized static String dealRequest(Object obj) throws Exception{
+		RmiResponseVo resVo ;
+		if(obj == null){
+			resVo = new RmiResponseVo() ;
+			resVo.success = false ;
+			resVo.errorInfo = "鏀跺埌鐨勬暟鎹负null" ;
+		}else if(!(obj instanceof String)){
+			resVo = new RmiResponseVo() ;
+			resVo.success = false ;
+			resVo.errorInfo = "鏀跺埌鐨勬暟鎹笉鏄瓧绗︿覆绫诲瀷" ;
+		}else{
+			RmiRequestVo rqVo = RmiRequestVo.jsonToObject((String)obj) ;
+			resVo = doDeal(rqVo) ;
+		}
+		return resVo.toJson() ;
+	}
+	
+	private static RmiResponseVo doDeal(RmiRequestVo rqVo){
+		RmiResponseVo resVo = new RmiResponseVo() ;
+		resVo.code = rqVo.code ;
+		if(rqVo.code.equals(Code.cd1)){
+			if(rqVo.id == null || rqVo.id.trim().equals("")){
+				resVo.success = false ;
+				resVo.errorInfo = "娉ㄥ唽澶辫触锛屽繀椤绘彁渚涘鎴风ID " ;
+			}else{
+				ResRegisterVo vo = doDealRegister(rqVo) ;
+				if(vo != null){
+					resVo.obj = vo ;
+				}else{
+					resVo.success = false ;
+					resVo.errorInfo = "rtuAddr宸茬粡鍒嗛厤瀹屾垚锛屾敞鍐屽け璐�" ;
+				}
+			}
+		}else if(rqVo.code.equals(Code.cd2)){
+			resVo.obj = doDealGetConfig(rqVo) ;
+		}else if(rqVo.code.equals(Code.cd3)){
+			resVo.obj = doDealGetStart(rqVo) ;
+		}else if(rqVo.code.equals(Code.cd4)){
+			doDealReportCount(rqVo) ;
+		}else if(rqVo.code.equals(Code.cd5)){
+			doDealReportOver(rqVo) ;
+		}else if(rqVo.code.equals(Code.cd6)){
+			doDealAllOver(rqVo) ;
+		}
+		return resVo ;
+	}
+	
+	private static ResRegisterVo doDealRegister(RmiRequestVo rqVo){
+		ResRegisterVo resVo = null ;
+		String token = id2TokenMap.get(rqVo.id) ;
+		if(token == null){
+			if(clientId <= rtuAddrList.size()){
+				resVo =  new ResRegisterVo() ;
+				resVo.token = "" + clientId ;
+				id2TokenMap.put(rqVo.id, resVo.token) ;
+				clientId++ ;
+			}
+		}else{
+			resVo =  new ResRegisterVo() ;
+			resVo.token = token ;
+		}
+		return resVo ;
+	}
+	
+	private static MwConfigVo doDealGetConfig(RmiRequestVo rqVo){
+		MwConfigVo conVo ;
+		int token = Integer.parseInt(rqVo.token) ;
+		MwTestClientStatus sta = token2ClientMap.get("" + token);
+		if(sta == null){
+			Object[] rtuAddrs = rtuAddrList.get(token-1) ;
+			conVo = new MwConfigVo() ;
+			conVo.rtuAddrStart = (Long)rtuAddrs[0] ;
+			conVo.rtuAddrEnd = (Long)rtuAddrs[1] ;
+			conVo.tcpServerIp = ServerProperties.tcpServerIp ;
+			conVo.tcpServerPort = ServerProperties.tcpServerPort ;
+			conVo.sendInterval = ServerProperties.sendInterval ;
+			conVo.heartbeatTimes = ServerProperties.heartbeatTimes ;
+			conVo.sendTimes = ServerProperties.sendTimes ;
+			sta = new MwTestClientStatus() ;
+			sta.confVo = conVo ;
+			token2ClientMap.put("" + token, sta);
+		}else{
+			conVo = sta.confVo;
+		}
+		return conVo ;
+	}
+	private static ResStartVo doDealGetStart(RmiRequestVo rqVo){
+		ResStartVo rvo = new ResStartVo() ;
+		rvo.start = enablemwTestStart ;
+		int token = Integer.parseInt(rqVo.token) ;
+		MwTestClientStatus sta = token2ClientMap.get("" + token);
+		if(sta == null){
+			sta = new MwTestClientStatus() ;
+			sta.startVo = rvo ;
+			token2ClientMap.put("" + token, sta);
+		}else{
+			sta.startVo = rvo ;
+		}
+		return rvo ;
+	}
+	
+	
+	private static void doDealReportCount(RmiRequestVo rqVo){
+		int token = Integer.parseInt(rqVo.token) ;
+		MwTestClientStatus sta = token2ClientMap.get("" + token);
+		if(sta == null){
+			sta = new MwTestClientStatus() ;
+			sta.count = rqVo.count ;
+			token2ClientMap.put("" + token, sta);
+		}else{
+			sta.count = rqVo.count ;
+		}
+	}
+	
+	
+	private static void doDealReportOver(RmiRequestVo rqVo){
+		int token = Integer.parseInt(rqVo.token) ;
+		MwTestClientStatus sta = token2ClientMap.get("" + token);
+		if(sta == null){
+			sta = new MwTestClientStatus() ;
+			sta.overCount = rqVo.count ;
+			token2ClientMap.put("" + token, sta);
+		}else{
+			sta.count = rqVo.count ;
+		}
+	}
+
+
+	private static void doDealAllOver(RmiRequestVo rqVo){
+		int token = Integer.parseInt(rqVo.token) ;
+		MwTestClientStatus sta = token2ClientMap.get("" + token);
+		if(sta == null){
+			sta = new MwTestClientStatus() ;
+			if(rqVo.over != null && rqVo.over){
+				sta.over = true ;
+				sta.seconds = rqVo.seconds ;
+			}
+			token2ClientMap.put("" + token, sta);
+		}else{
+			if(rqVo.over != null && rqVo.over){
+				sta.over = true ;
+				sta.seconds = rqVo.seconds ;
+			}
+		}
+	}
+
+
+
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/MwConfigVo.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/MwConfigVo.java
new file mode 100644
index 0000000..1ee9d72
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/MwConfigVo.java
@@ -0,0 +1,103 @@
+package com.dy.testServer.forRmi;
+
+import com.alibaba.fastjson2.JSON;
+
+public class MwConfigVo {
+	//妯℃嫙瀹㈡埛鐨凴tuAddr璧峰鍙�
+	public Long rtuAddrStart = 0L ;
+	//妯℃嫙瀹㈡埛鐨凴tuAddr鎴鍙�
+	public Long rtuAddrEnd = 0L ;
+	//閫氫俊涓棿浠禝P
+	public String tcpServerIp = "" ;
+	//閫氫俊涓棿浠剁鍙�
+	public Integer tcpServerPort = 0 ;
+	//鍙戦�佹暟鎹暟鎹棿闅�
+	public Integer sendInterval = 2 ;//绉�
+	//姣忎竴杞鍙戦�佹暟鎹紝鍏朵腑鍖呮嫭蹇冭烦鍙戦�佹鏁�
+	public Integer heartbeatTimes = 3 ;
+	//鍙戦�佹暟鎹鏁�
+	public Integer sendTimes = 0 ;
+	/**
+	 * 瀵硅薄杞垚json
+	 * @return 杩斿洖 json
+	 * @throws Exception 寮傚父
+	 */
+	public String toJson()throws Exception{
+		try{
+			return JSON.toJSONString(this) ;
+			//return new JSONSerializer().exclude(new String[]{"class", "*.class"}).deepSerialize(this);
+		}catch(Exception e){
+			throw new Exception(e.getMessage() , e ) ;
+		}
+	}
+	/**
+	 * json杞垚瀵硅薄
+	 * @param json 鍙傛暟
+	 * @return 杩斿洖瀵硅薄
+	 * @throws Exception 寮傚父
+	 */
+	public static MwConfigVo jsonToObject(String json)throws Exception{
+		try{
+			return JSON.parseObject(json, MwConfigVo.class) ;
+			//return new JSONDeserializer<ResConfigVo>().deserialize(json, ResConfigVo.class) ;
+		}catch(Exception e){
+			throw new Exception(e.getMessage() , e ) ;
+		}
+	}
+
+	public Long getRtuAddrStart() {
+		return rtuAddrStart;
+	}
+
+	public void setRtuAddrStart(Long rtuAddrStart) {
+		this.rtuAddrStart = rtuAddrStart;
+	}
+
+	public Long getRtuAddrEnd() {
+		return rtuAddrEnd;
+	}
+
+	public void setRtuAddrEnd(Long rtuAddrEnd) {
+		this.rtuAddrEnd = rtuAddrEnd;
+	}
+
+	public String getTcpServerIp() {
+		return tcpServerIp;
+	}
+
+	public void setTcpServerIp(String tcpServerIp) {
+		this.tcpServerIp = tcpServerIp;
+	}
+
+	public Integer getTcpServerPort() {
+		return tcpServerPort;
+	}
+
+	public void setTcpServerPort(Integer tcpServerPort) {
+		this.tcpServerPort = tcpServerPort;
+	}
+
+	public Integer getSendInterval() {
+		return sendInterval;
+	}
+
+	public void setSendInterval(Integer sendInterval) {
+		this.sendInterval = sendInterval;
+	}
+
+	public Integer getHeartbeatTimes() {
+		return heartbeatTimes;
+	}
+
+	public void setHeartbeatTimes(Integer heartbeatTimes) {
+		this.heartbeatTimes = heartbeatTimes;
+	}
+
+	public Integer getSendTimes() {
+		return sendTimes;
+	}
+
+	public void setSendTimes(Integer sendTimes) {
+		this.sendTimes = sendTimes;
+	}
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/MwTestClientStatus.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/MwTestClientStatus.java
new file mode 100644
index 0000000..71af287
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/java/com/dy/testServer/forRmi/MwTestClientStatus.java
@@ -0,0 +1,58 @@
+package com.dy.testServer.forRmi;
+
+public class MwTestClientStatus {
+
+	public MwConfigVo confVo ;
+	
+	public ResStartVo startVo ;
+
+	public Integer count ;//mwTest涓婃姤鏁版嵁鏁伴噺
+
+	public Integer overCount ;//mwTest瀹屾垚鍏ㄩ儴涓婃姤鏁版嵁RTU鏁伴噺
+
+	public Boolean over ;//mwTest涓婃姤鏁版嵁缁撴潫
+	
+	public Long seconds ;//mwTest涓婃姤鏁版嵁鐢ㄦ椂(绉�)
+
+	public MwConfigVo getConfVo() {
+		return confVo;
+	}
+
+	public void setConfVo(MwConfigVo confVo) {
+		this.confVo = confVo;
+	}
+
+	public ResStartVo getStartVo() {
+		return startVo;
+	}
+
+	public void setStartVo(ResStartVo startVo) {
+		this.startVo = startVo;
+	}
+
+	public Integer getCount() {
+		return count;
+	}
+
+	public void setCount(Integer count) {
+		this.count = count;
+	}
+
+	public Boolean getOver() {
+		return over;
+	}
+
+	public void setOver(Boolean over) {
+		this.over = over;
+	}
+
+	public Long getSeconds() {
+		return seconds;
+	}
+
+	public void setSeconds(Long seconds) {
+		this.seconds = seconds;
+	}
+	
+	
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/resources/Config.xml b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/resources/Config.xml
new file mode 100644
index 0000000..9145942
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/resources/Config.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<config>
+		<server name="mwTest娴嬭瘯鎺у埗绔�" showStartInfo="true" company="http://www.dyjs.com"/>
+		<!-- 
+		鍩烘湰閰嶇疆
+		rtuAddrStart: 妯℃嫙瀹㈡埛鐨凴tuAddr璧峰鍙�
+		rtuAddrEnd: 妯℃嫙瀹㈡埛鐨凴tuAddr鎴鍙�
+		rtuAddrsPerMwTest: 姣忎釜mwTest鍒嗛厤鐨凴tuAddr鏁�
+		tcpServerIp: 閫氫俊涓棿浠禝P
+		tcpServerPort: 閫氫俊涓棿浠剁鍙�
+		sendInterval锛氬彂閫佹暟鎹棿闅� 绉�
+		heartbeatTimes锛氭瘡涓�杞鍙戦�佹暟鎹紝鍏朵腑鍖呮嫭蹇冭烦鍙戦�佹鏁�
+		sendTimes锛氬彂閫佹暟鎹鏁�
+		 -->
+		<base
+			rtuAddrStart="5323280000"
+			rtuAddrEnd="5323289999"
+			rtuAddrPerMwTest="1"
+			tcpServerIp="127.0.0.1"
+			tcpServerPort="60000"
+			sendInterval="2"
+			heartbeatTimes="3"
+			sendTimes="1"
+		/>
+			
+		<!-- 
+		port锛歳mi鏈嶅姟绔彛鍙�
+		context锛歳mi鏈嶅姟涓婁笅鏂�
+		 -->
+		<rmi enable="true"
+			port="12345"
+			context="mwTestSv"
+		/>		
+		
+</config>		
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/resources/log4j2.xml b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..6dae26f
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/resources/log4j2.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="OFF">
+  <Appenders>
+    <Console name="Console" target="SYSTEM_OUT">
+      <PatternLayout charset="GBK" pattern="%d %-5p [%t] (%F:%L) - %m%n%throwable"/>
+    </Console>
+    <!-- 
+    	fileName="${sys:user.home}/logs/aepTest.log" filePattern="${sys:user.home}/logs/aepTest-%d{yyyy-MM}-%i.log.gz"
+    	fileName="/logs/testJgroups.log" filePattern="/logs/testJgroups-%d{yyyyMMdd}-%i.log.gz"
+    	fileName="logs/testJgroups.log" filePattern="logs/testJgroups-%d{yyyyMMdd}-%i.log.gz"
+    	sys:user.home褰撳墠鐢ㄦ埛鍦ㄦ搷浣滅郴缁熶腑鐨勬枃妗g洰褰� 
+    	/logs/testJgroups.log褰撳墠杞欢鎵�鍦ㄧ‖鐩樻牴鐩綍 
+    	logs/testJgroups.log褰撳墠杞欢鎵�鍦ㄧ洰褰� 
+     -->
+    <RollingFile name="File" fileName="logs/mwTestSv.log" filePattern="logs/aepTest-%d{yyyyMMdd}-%i.log">
+      <PatternLayout charset="UTF-8" pattern="%d %-5p [%t] (%class.%method:%L) - %m%n%throwable"/>
+      <Policies>
+        <TimeBasedTriggeringPolicy interval="7" />
+        <SizeBasedTriggeringPolicy size="10MB"/>
+      </Policies>
+      <DefaultRolloverStrategy max="50" />
+    </RollingFile>
+  </Appenders>
+  <Loggers>
+    <!-- Root涓庡悇涓狶ogger鍚屾椂璧蜂綔鐢� -->
+    <Root level="info">
+      <AppenderRef ref="Console"/>
+      <AppenderRef ref="File"/>
+    </Root>
+  </Loggers>
+</Configuration>
diff --git a/pipIrr-platform/pipIrr-mw/pom.xml b/pipIrr-platform/pipIrr-mw/pom.xml
index 9ce1ec9..90a65d1 100644
--- a/pipIrr-platform/pipIrr-mw/pom.xml
+++ b/pipIrr-platform/pipIrr-mw/pom.xml
@@ -25,7 +25,11 @@
             <groupId>com.dy</groupId>
             <artifactId>pipIrr-common</artifactId>
             <version>1.0.0</version>
-            <scope>provided</scope>
+            <!--
+            scope涓嶈兘鐢╬rovided锛屽惁鍒橲erver.java鐨勮繍琛屼笉璧锋潵
+            scope涓嶈兘鐢╮untime锛屽惁鍒欎笉鑳界紪杈�
+            -->
+            <scope>compile</scope>
             <optional>true</optional>
             <exclusions>
                 <exclusion>
@@ -39,7 +43,7 @@
             <groupId>com.dy</groupId>
             <artifactId>pipIrr-global</artifactId>
             <version>1.0.0</version>
-            <scope>provided</scope>
+            <scope>compile</scope>
             <optional>true</optional>
             <exclusions>
                 <exclusion>
@@ -76,9 +80,8 @@
             <artifactId>jackson-dataformat-yaml</artifactId>
             <exclusions>
                 <exclusion>
-                    <!-- 鎺掗櫎鎺変緷璧� -->
-                    <groupId>com.fasterxml.jackson.core</groupId>
-                    <artifactId>jackson-databind</artifactId>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
                 </exclusion>
             </exclusions>
         </dependency>
diff --git a/pipIrr-platform/pipIrr-platform.iml b/pipIrr-platform/pipIrr-platform.iml
deleted file mode 100644
index 567993a..0000000
--- a/pipIrr-platform/pipIrr-platform.iml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
-  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_16">
-    <output url="file://$MODULE_DIR$/target/classes" />
-    <output-test url="file://$MODULE_DIR$/target/test-classes" />
-    <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
-      <excludeFolder url="file://$MODULE_DIR$/target" />
-    </content>
-    <orderEntry type="jdk" jdkName="20" jdkType="JavaSDK" />
-    <orderEntry type="sourceFolder" forTests="false" />
-  </component>
-</module>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/.gitignore b/pipIrr-platform/pipIrr-web/.gitignore
index aa4ab25..14569d5 100644
--- a/pipIrr-platform/pipIrr-web/.gitignore
+++ b/pipIrr-platform/pipIrr-web/.gitignore
@@ -1,2 +1,2 @@
 target/
-/pipIrr-web.iml
+pipIrr-web.iml
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/.gitignore b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/.gitignore
index c8fb6c3..b2b42bd 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sso/.gitignore
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sso/.gitignore
@@ -1,6 +1,7 @@
 HELP.md
 target/
 /pipIrr-web-sso.iml
+mvnw
 !.mvn/wrapper/maven-wrapper.jar
 !**/src/main/**/target/
 !**/src/test/**/target/
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web.iml b/pipIrr-platform/pipIrr-web/pipIrr-web.iml
deleted file mode 100644
index 6807133..0000000
--- a/pipIrr-platform/pipIrr-web/pipIrr-web.iml
+++ /dev/null
@@ -1,154 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
-  <component name="FacetManager">
-    <facet type="web" name="Web">
-      <configuration>
-        <webroots />
-        <sourceRoots>
-          <root url="file://$MODULE_DIR$/src/main/java" />
-          <root url="file://$MODULE_DIR$/src/main/resources" />
-        </sourceRoots>
-      </configuration>
-    </facet>
-    <facet type="Spring" name="Spring">
-      <configuration />
-    </facet>
-  </component>
-  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_16">
-    <output url="file://$MODULE_DIR$/target/classes" />
-    <output-test url="file://$MODULE_DIR$/target/test-classes" />
-    <content url="file://$MODULE_DIR$">
-      <excludeFolder url="file://$MODULE_DIR$/target" />
-    </content>
-    <orderEntry type="jdk" jdkName="20" jdkType="JavaSDK" />
-    <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="module" module-name="pipIrr-common" />
-    <orderEntry type="library" name="Maven: org.apache.mina:mina-core:2.2.2" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.9" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.16" level="project" />
-    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.15" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.poi:poi:3.14" level="project" />
-    <orderEntry type="library" name="Maven: org.quartz-scheduler:quartz:2.3.2" level="project" />
-    <orderEntry type="library" name="Maven: com.mchange:mchange-commons-java:0.2.15" level="project" />
-    <orderEntry type="module" module-name="pipIrr-global" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:3.1.3" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:3.1.3" level="project" />
-    <orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:2.1.1" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:3.1.3" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:10.1.12" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:10.1.12" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-web:6.0.11" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-beans:6.0.11" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:6.0.11" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-aop:6.0.11" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-context:6.0.11" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-expression:6.0.11" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-validation:3.1.3" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:10.1.12" level="project" />
-    <orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:8.0.1.Final" level="project" />
-    <orderEntry type="library" name="Maven: jakarta.validation:jakarta.validation-api:3.0.2" level="project" />
-    <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.5.3.Final" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml:classmate:1.5.1" level="project" />
-    <orderEntry type="library" scope="RUNTIME" name="Maven: org.springframework.boot:spring-boot-devtools:3.1.3" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:3.1.3" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:3.1.3" level="project" />
-    <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.28" level="project" />
-    <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.20" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-log4j2:3.1.3" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-slf4j2-impl:2.20.0" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.20.0" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-core:2.20.0" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-jul:2.20.0" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.15.2" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.15.2" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.15.2" level="project" />
-    <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.33" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.15.2" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-actuator:3.1.3" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-actuator-autoconfigure:3.1.3" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-actuator:3.1.3" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.15.2" level="project" />
-    <orderEntry type="library" name="Maven: io.micrometer:micrometer-observation:1.11.2" level="project" />
-    <orderEntry type="library" name="Maven: io.micrometer:micrometer-commons:1.11.2" level="project" />
-    <orderEntry type="library" name="Maven: io.micrometer:micrometer-core:1.11.2" level="project" />
-    <orderEntry type="library" scope="RUNTIME" name="Maven: org.hdrhistogram:HdrHistogram:2.1.12" level="project" />
-    <orderEntry type="library" scope="RUNTIME" name="Maven: org.latencyutils:LatencyUtils:2.0.3" level="project" />
-    <orderEntry type="library" name="Maven: org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0" level="project" />
-    <orderEntry type="library" name="Maven: org.webjars:swagger-ui:5.2.0" level="project" />
-    <orderEntry type="library" name="Maven: org.springdoc:springdoc-openapi-starter-webmvc-api:2.2.0" level="project" />
-    <orderEntry type="library" name="Maven: org.springdoc:springdoc-openapi-starter-common:2.2.0" level="project" />
-    <orderEntry type="library" name="Maven: io.swagger.core.v3:swagger-core-jakarta:2.2.15" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.12.0" level="project" />
-    <orderEntry type="library" name="Maven: io.swagger.core.v3:swagger-annotations-jakarta:2.2.15" level="project" />
-    <orderEntry type="library" name="Maven: io.swagger.core.v3:swagger-models-jakarta:2.2.15" level="project" />
-    <orderEntry type="library" name="Maven: org.springdoc:springdoc-openapi-security:1.7.0" level="project" />
-    <orderEntry type="library" name="Maven: org.springdoc:springdoc-openapi-common:1.7.0" level="project" />
-    <orderEntry type="library" name="Maven: io.swagger.core.v3:swagger-core:2.2.9" level="project" />
-    <orderEntry type="library" name="Maven: io.swagger.core.v3:swagger-annotations:2.2.9" level="project" />
-    <orderEntry type="library" name="Maven: io.swagger.core.v3:swagger-models:2.2.9" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.security:spring-security-core:6.1.2" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.security:spring-security-crypto:6.1.2" level="project" />
-    <orderEntry type="library" name="Maven: com.mysql:mysql-connector-j:8.0.33" level="project" />
-    <orderEntry type="library" name="Maven: com.alibaba:druid-spring-boot-starter:1.2.20" level="project" />
-    <orderEntry type="library" name="Maven: com.alibaba:druid:1.2.20" level="project" />
-    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:2.0.7" level="project" />
-    <orderEntry type="library" name="Maven: org.glassfish.jaxb:jaxb-runtime:4.0.3" level="project" />
-    <orderEntry type="library" name="Maven: org.glassfish.jaxb:jaxb-core:4.0.3" level="project" />
-    <orderEntry type="library" scope="RUNTIME" name="Maven: org.eclipse.angus:angus-activation:2.0.1" level="project" />
-    <orderEntry type="library" name="Maven: org.glassfish.jaxb:txw2:4.0.3" level="project" />
-    <orderEntry type="library" name="Maven: com.sun.istack:istack-commons-runtime:4.1.2" level="project" />
-    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.5.3.2" level="project" />
-    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.5.3.2" level="project" />
-    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-extension:3.5.3.2" level="project" />
-    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:3.5.3.2" level="project" />
-    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.5.3.2" level="project" />
-    <orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:4.6" level="project" />
-    <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.13" level="project" />
-    <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.1.1" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:3.1.3" level="project" />
-    <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:5.0.1" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:6.0.11" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-tx:6.0.11" level="project" />
-    <orderEntry type="library" name="Maven: cglib:cglib:3.3.0" level="project" />
-    <orderEntry type="library" name="Maven: org.ow2.asm:asm:7.1" level="project" />
-    <orderEntry type="library" name="Maven: com.alibaba.fastjson2:fastjson2:2.0.40" level="project" />
-    <orderEntry type="library" name="Maven: com.alibaba.fastjson2:fastjson2-extension-spring6:2.0.40" level="project" />
-    <orderEntry type="library" name="Maven: com.alibaba.fastjson2:fastjson2-extension:2.0.40" level="project" />
-    <orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.5.5.Final" level="project" />
-    <orderEntry type="library" name="Maven: org.mapstruct:mapstruct-processor:1.5.5.Final" level="project" />
-    <orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.8.21" level="project" />
-    <orderEntry type="library" name="Maven: org.jdom:jdom2:2.0.6.1" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.dubbo:dubbo:3.2.7" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:3.1.3" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:3.1.3" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:3.1.3" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.8.0" level="project" />
-    <orderEntry type="library" name="Maven: jakarta.xml.bind:jakarta.xml.bind-api:4.0.0" level="project" />
-    <orderEntry type="library" name="Maven: jakarta.activation:jakarta.activation-api:2.1.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.4.11" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:2.4.11" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:3.24.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy:1.14.6" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest:2.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter:5.9.3" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-api:5.9.3" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.opentest4j:opentest4j:1.2.0" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-commons:1.9.3" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.apiguardian:apiguardian-api:1.1.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-params:5.9.3" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-engine:5.9.3" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-engine:1.9.3" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:5.3.1" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy-agent:1.14.6" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:3.3" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-junit-jupiter:5.3.1" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.5.1" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-core:6.0.11" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-jcl:6.0.11" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:6.0.11" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.xmlunit:xmlunit-core:2.9.1" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.13.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:2.2" level="project" />
-  </component>
-</module>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pom.xml b/pipIrr-platform/pipIrr-web/pom.xml
index 568c48c..fb95ba5 100644
--- a/pipIrr-platform/pipIrr-web/pom.xml
+++ b/pipIrr-platform/pipIrr-web/pom.xml
@@ -80,6 +80,12 @@
         <dependency>
             <groupId>com.fasterxml.jackson.dataformat</groupId>
             <artifactId>jackson-dataformat-yaml</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
 
         <!-- 绯荤粺鐩戠 -->
diff --git "a/pipIrr-platform/\346\226\207\346\241\243/\346\226\207\344\273\266\345\212\240\345\205\245\344\272\206 .gitignore\357\274\214\344\275\206\350\277\230\346\230\257\350\242\253 git \350\267\237\350\270\252.docx" "b/pipIrr-platform/\346\226\207\346\241\243/\346\226\207\344\273\266\345\212\240\345\205\245\344\272\206 .gitignore\357\274\214\344\275\206\350\277\230\346\230\257\350\242\253 git \350\267\237\350\270\252.docx"
new file mode 100644
index 0000000..db32b6b
--- /dev/null
+++ "b/pipIrr-platform/\346\226\207\346\241\243/\346\226\207\344\273\266\345\212\240\345\205\245\344\272\206 .gitignore\357\274\214\344\275\206\350\277\230\346\230\257\350\242\253 git \350\267\237\350\270\252.docx"
Binary files differ

--
Gitblit v1.8.0