From e7d48d79b04175165144f4c8b079f2da3fec63cb Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期一, 29 七月 2024 10:51:56 +0800
Subject: [PATCH] 1、通信中间件中,实现停止TCP服务和恢复TCP服务功能, 2、测试系统中增加本功能的测试项。

---
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/RtuStatusDealer.java                   |   66 +++++-----
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/DataCodecFactory.java                          |   18 ++
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java                   |   15 ++
 pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/common/CodeLocal.java                 |    3 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpIoHandler.java                              |   27 ++++
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpUnit.java                                   |   26 ++++
 pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V1_0_0/ComSupportP206V1_0_0.java  |   18 ++
 pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V1_0_0/CommandP206V1_0_0Ctrl.java |   62 ++++++----
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpUnitStopCallback.java               |   13 ++
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/CodeLocal.java            |    3 
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpUnitAdapter.java                            |    5 
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/AdapterImp_TcpUnit.java                       |   12 +
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpUnitStopCallback.java                       |   10 +
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/CommandInnerDeaLer.java                 |   30 +++++
 14 files changed, 238 insertions(+), 70 deletions(-)

diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/DataCodecFactory.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/DataCodecFactory.java
index 417bda2..284dcb6 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/DataCodecFactory.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/DataCodecFactory.java
@@ -8,16 +8,32 @@
 public class DataCodecFactory implements ProtocolCodecFactory {
 
 	private TcpUnitAdapter adapter ;
-	
+    private boolean stop = false ;//涓簍rue鏃讹紝鍋滄TCP鏈嶅姟锛屽苟鎶婂凡缁廡CP杩炴帴鏂繛鎺�
+
     public DataCodecFactory(TcpUnitAdapter adapter) {
     	this.adapter = adapter ;
     }
 
+    public void stop(){
+        stop = true ;
+    }
+
+    public void recover(){
+        this.stop = false ;
+    }
+
+
     public ProtocolEncoder getEncoder(IoSession ioSession) {
+        if(stop){
+            ioSession.closeNow() ;
+        }
         return new DataEncoder();
     }
 
     public ProtocolDecoder getDecoder(IoSession ioSession) {
+        if(stop){
+            ioSession.closeNow() ;
+        }
         return new DataDecoder(adapter.newPrefixedDataAvailableHandle());
     }
 }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpIoHandler.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpIoHandler.java
index 695ec8d..fe53fdb 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpIoHandler.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpIoHandler.java
@@ -8,9 +8,18 @@
 
 	private TcpUnitAdapter adapter ;
 
+	private boolean stop = false ;//涓簍rue鏃讹紝鍋滄TCP鏈嶅姟锛屽苟鎶婂凡缁廡CP杩炴帴鏂繛鎺�
 
 	public TcpIoHandler(TcpUnitAdapter adapter){
 		this.adapter = adapter ;
+	}
+
+	public void stop(){
+		stop = true ;
+	}
+
+	public void recover(){
+		this.stop = false ;
 	}
 
 	/**
@@ -18,14 +27,22 @@
 	 */
 	@Override
 	public void sessionCreated(IoSession session) throws Exception {
-		super.sessionCreated(session);
+		if(stop){
+			session.closeNow() ;
+		}else{
+			super.sessionCreated(session);
+		}
 	}
    
 	/**
      * 浼氳瘽open鏃跺洖璋冪殑鏂规硶 
      */
     public void sessionOpened(IoSession session) throws Exception {
-    	this.adapter.newSessionEventCallback().sessionOpened(session);
+		if(stop){
+			session.closeNow() ;
+		}else{
+			this.adapter.newSessionEventCallback().sessionOpened(session);
+		}
     }
     
 	/**
@@ -76,7 +93,11 @@
      */
 	@Override
     public void messageReceived(IoSession session, Object message) throws Exception {
-    	this.adapter.newSessionEventCallback().messageReceived(session, message);
+		if(stop){
+			session.closeNow() ;
+		}else{
+			this.adapter.newSessionEventCallback().messageReceived(session, message);
+		}
     }
 
 }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpUnit.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpUnit.java
index e0d83d6..2b8d31a 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpUnit.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpUnit.java
@@ -22,6 +22,8 @@
 	private static boolean started = false ;
 	
 	private TcpUnitAdapter adapter ;
+	private TcpIoHandler tcpIoHandler ;
+	private DataCodecFactory dataCodecFactory ;
 	
 	private TcpUnit(){} ;
 	
@@ -94,7 +96,8 @@
 			//寰楀埌缃戠粶 閫氫俊鏁版嵁杩囨护鍣ㄩ摼
 			DefaultIoFilterChainBuilder chain = acceptor.getFilterChain() ;
 			//缂栬В鐮佽繃婊ゅ櫒
-			chain.addLast("protocol", new ProtocolCodecFilter(new DataCodecFactory(this.adapter)));
+			dataCodecFactory = new DataCodecFactory(this.adapter) ;
+			chain.addLast("protocol", new ProtocolCodecFilter(dataCodecFactory));
 			
 			/*
 			 * 涓�鑸珽xecutorFilter 閮借鏀惧湪ProtocolCodecFilter 杩囨护鍣ㄧ殑鍚庨潰锛�
@@ -106,7 +109,8 @@
 			chain.addLast("exceutor", new ExecutorFilter());
 
 			//涓氬姟閫昏緫澶勭悊鍣紝璐熻矗澶勭悊缃戠粶浼氳瘽鍙婅緭鍏ヨ緭鍑烘暟鎹�
-			acceptor.setHandler(new TcpIoHandler(this.adapter));
+			tcpIoHandler = new TcpIoHandler(this.adapter) ;
+			acceptor.setHandler(tcpIoHandler) ;
 
 			boolean isException = false ;
 			try {
@@ -129,8 +133,26 @@
 		}
 	}
 
+	/**
+	 * 鍋滄妯″潡杩愯锛屽皢涓嶅啀鎺ュ叆TCP缃戠粶杩炴帴锛屽苟鎶婂凡缁弔cp杩炴帴鐨勫叏閮ㄦ柇杩炴帴
+	 * @param callback
+	 * @throws Exception
+	 */
 	@Override
 	public void stop(UnitStartedCallbackInterface callback) throws Exception {
+		this.tcpIoHandler.stop();
+		this.dataCodecFactory.stop();
+		this.adapter.newUnitStopCallback().callback();
+		callback.call(null);
+	}
+
+	/**
+	 * 瑙i櫎鍋滄锛屾仮澶峊CP鏈嶅姟杩愯
+	 * @throws Exception
+	 */
+	public void recover() throws Exception {
+		this.tcpIoHandler.recover();
+		this.dataCodecFactory.recover();
 	}
 	
 
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpUnitAdapter.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpUnitAdapter.java
index 50b4dac..bf194fa 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpUnitAdapter.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpUnitAdapter.java
@@ -22,5 +22,10 @@
 	 * @return
 	 */
 	TcpIoSessionEventCallback newSessionEventCallback() ;
+
+	/**
+	 * 妯″潡鍋滄鏃剁殑鍥炶皟
+	 */
+	TcpUnitStopCallback newUnitStopCallback() ;
 	
 }
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpUnitStopCallback.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpUnitStopCallback.java
new file mode 100644
index 0000000..71c80ff
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpUnitStopCallback.java
@@ -0,0 +1,10 @@
+package com.dy.common.mw.channel.tcp;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/29 9:25
+ * @Description
+ */
+public interface TcpUnitStopCallback {
+    void callback() ;
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/AdapterImp_TcpUnit.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/AdapterImp_TcpUnit.java
index 06a8ff4..5411286 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/AdapterImp_TcpUnit.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/AdapterImp_TcpUnit.java
@@ -1,9 +1,6 @@
 package com.dy.rtuMw.server;
 
-import com.dy.common.mw.channel.tcp.PrefixedDataAvailableHandle;
-import com.dy.common.mw.channel.tcp.TcpConfigVo;
-import com.dy.common.mw.channel.tcp.TcpIoSessionEventCallback;
-import com.dy.common.mw.channel.tcp.TcpUnitAdapter;
+import com.dy.common.mw.channel.tcp.*;
 import com.dy.common.mw.protocol.PrefixedDataAvailableHandleImp;
 import com.dy.rtuMw.server.forTcp.TcpIoSessionCallback;
 
@@ -30,4 +27,11 @@
 		return new TcpIoSessionCallback() ;
 	}
 
+	/**
+	 * 妯″潡鍋滄鏃剁殑鍥炶皟
+	 */
+	@Override
+	public TcpUnitStopCallback newUnitStopCallback() {
+		return new com.dy.rtuMw.server.forTcp.TcpUnitStopCallback() ;
+	}
 }
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/RtuStatusDealer.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/RtuStatusDealer.java
index 30d32b0..f60c73a 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/RtuStatusDealer.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/RtuStatusDealer.java
@@ -13,11 +13,11 @@
 	
 	
 	public static void onOffLine(RtuSessionStatus sta){
-		StOnOffLine st = new StOnOffLine() ;
-		st.rtuAddr = sta.rtuAddr ;
-		st.onOff_trueFalse = sta.onTrueOffLine ;
-		st.ip = sta.ip ;
-		st.port = sta.port ;
+//		StOnOffLine st = new StOnOffLine() ;
+//		st.rtuAddr = sta.rtuAddr ;
+//		st.onOff_trueFalse = sta.onTrueOffLine ;
+//		st.ip = sta.ip ;
+//		st.port = sta.port ;
 		
 //		if(member == null){
 //			log.error("鍑洪敊锛屾湭鑳藉緱鍒板鐞哛TU锛堝湴鍧�涓�" + sta.rtuAddr + "锛夌姸鎬佹暟鎹殑鏁版嵁涓棿浠讹紝鍙兘鏁版嵁涓棿浠舵湭鍚姩鎴栬劚绂荤殑闆嗙兢锛�");
@@ -28,11 +28,11 @@
 	}
 	
 	public static void onLine(String rtuAddr, String ip, Integer port){
-		StOnOffLine st = new StOnOffLine() ;
-		st.rtuAddr = rtuAddr ;
-		st.onOff_trueFalse = true ;
-		st.ip = ip ;
-		st.port = port ;
+//		StOnOffLine st = new StOnOffLine() ;
+//		st.rtuAddr = rtuAddr ;
+//		st.onOff_trueFalse = true ;
+//		st.ip = ip ;
+//		st.port = port ;
 		
 //		Address member = JgUnit.getInstance().getJgMembers().getDataMwMemberByRtuAddr(rtuAddr) ;
 //		if(member == null){
@@ -44,9 +44,9 @@
 	}
 	
 	public static void offLine(String rtuAddr){
-		StOnOffLine st = new StOnOffLine() ;
-		st.rtuAddr = rtuAddr ;
-		st.onOff_trueFalse = false ;
+//		StOnOffLine st = new StOnOffLine() ;
+//		st.rtuAddr = rtuAddr ;
+//		st.onOff_trueFalse = false ;
 		
 //		Address member = JgUnit.getInstance().getJgMembers().getDataMwMemberByRtuAddr(rtuAddr) ;
 //		if(member == null){
@@ -58,10 +58,10 @@
 	}
 	
 	public static void upData(String rtuAddr, Integer bufferLen){
-		StUpData st = new StUpData() ;
-		st.rtuAddr = rtuAddr ;
-		st.upBufferLen = bufferLen ;
-		st.isReport = false ;
+//		StUpData st = new StUpData() ;
+//		st.rtuAddr = rtuAddr ;
+//		st.upBufferLen = bufferLen ;
+//		st.isReport = false ;
 		
 //		Address member = JgUnit.getInstance().getJgMembers().getDataMwMemberByRtuAddr(rtuAddr) ;
 //		if(member == null){
@@ -73,10 +73,10 @@
 	}
 	
 	public static void upReport(String rtuAddr, Integer bufferLen){
-		StUpData st = new StUpData() ;
-		st.rtuAddr = rtuAddr ;
-		st.upBufferLen = bufferLen ;
-		st.isReport = true ;
+//		StUpData st = new StUpData() ;
+//		st.rtuAddr = rtuAddr ;
+//		st.upBufferLen = bufferLen ;
+//		st.isReport = true ;
 		
 //		Address member = JgUnit.getInstance().getJgMembers().getDataMwMemberByRtuAddr(rtuAddr) ;
 //		if(member == null){
@@ -88,9 +88,9 @@
 	}
 	
 	public static void downData(String rtuAddr, Integer bufferLen){
-		StDownData st = new StDownData() ;
-		st.rtuAddr = rtuAddr ;
-		st.downBufferLen = bufferLen ;
+//		StDownData st = new StDownData() ;
+//		st.rtuAddr = rtuAddr ;
+//		st.downBufferLen = bufferLen ;
 		
 //		Address member = JgUnit.getInstance().getJgMembers().getDataMwMemberByRtuAddr(rtuAddr) ;
 //		if(member == null){
@@ -102,9 +102,9 @@
 	}
 	
 	public static void commandSuccess(String rtuAddr){
-		StCommandResult st = new StCommandResult() ;
-		st.rtuAddr = rtuAddr ;
-		st.isSuccess = true ;
+//		StCommandResult st = new StCommandResult() ;
+//		st.rtuAddr = rtuAddr ;
+//		st.isSuccess = true ;
 		
 //		Address member = JgUnit.getInstance().getJgMembers().getDataMwMemberByRtuAddr(rtuAddr) ;
 //		if(member == null){
@@ -116,9 +116,9 @@
 	}
 	
 	public static void commandFailure(String rtuAddr){
-		StCommandResult st = new StCommandResult() ;
-		st.rtuAddr = rtuAddr ;
-		st.isSuccess = false ;
+//		StCommandResult st = new StCommandResult() ;
+//		st.rtuAddr = rtuAddr ;
+//		st.isSuccess = false ;
 		
 //		Address member = JgUnit.getInstance().getJgMembers().getDataMwMemberByRtuAddr(rtuAddr) ;
 //		if(member == null){
@@ -130,9 +130,9 @@
 	}
 	
 	public static void commandFail2Success(String rtuAddr){
-		StCommandResult st = new StCommandResult() ;
-		st.rtuAddr = rtuAddr ;
-		st.fail2Success = true ;
+//		StCommandResult st = new StCommandResult() ;
+//		st.rtuAddr = rtuAddr ;
+//		st.fail2Success = true ;
 		
 //		Address member = JgUnit.getInstance().getJgMembers().getDataMwMemberByRtuAddr(rtuAddr) ;
 //		if(member == null){
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java
index e821b47..bf28087 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java
@@ -23,7 +23,20 @@
 	 * 2023-12-19瀹炴祴锛屽彂鐜癏ashtable骞朵笉绾跨▼瀹夊叏锛屾墍浠ュ簲鐢ㄤ簡HashMap鍜宻ynchronized
 	 */
 	private static HashMap<String, TcpSession> sessionTable = new HashMap<String, TcpSession>() ;
-	
+
+	/**
+	 * 鍏抽棴鎵�鏈夌綉缁滆繛鎺�
+	 */
+	public static void closeAllSessions(){
+		synchronized (sessionTable){
+			Collection<TcpSession> col = sessionTable.values() ;
+			for(TcpSession se : col){
+				se.ioSession.closeNow() ;
+			}
+			sessionTable.clear();
+		}
+	}
+
 	/**
 	 * 鍔犲叆鏂扮殑IoSession
 	 * @param rtuAddr
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpUnitStopCallback.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpUnitStopCallback.java
new file mode 100644
index 0000000..fb39088
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpUnitStopCallback.java
@@ -0,0 +1,13 @@
+package com.dy.rtuMw.server.forTcp;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/7/29 9:26
+ * @Description
+ */
+public class TcpUnitStopCallback implements com.dy.common.mw.channel.tcp.TcpUnitStopCallback{
+    @Override
+    public void callback() {
+        TcpSessionCache.closeAllSessions();
+    }
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/CommandInnerDeaLer.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/CommandInnerDeaLer.java
index 0d783a9..9ae2f68 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/CommandInnerDeaLer.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/CommandInnerDeaLer.java
@@ -1,5 +1,7 @@
 package com.dy.rtuMw.server.local;
 
+import com.dy.common.mw.UnitStartedCallbackInterface;
+import com.dy.common.mw.channel.tcp.TcpUnit;
 import com.dy.common.mw.protocol.Command;
 import com.dy.rtuMw.server.local.localProtocol.*;
 
@@ -23,6 +25,10 @@
             return this.onLine(com) ;
         }else if(code.equals(CodeLocal.allProtocols)){
             return this.allProtocols(com) ;
+        }else if(code.equals(CodeLocal.stopTcpSv)){
+            return this.stopTcpSv(com) ;
+        }else if(code.equals(CodeLocal.recoverTcpSv)){
+            return this.recoverTcpSv(com) ;
         }
         return ReturnCommand.errored("鍑洪敊锛屾敹鍒板唴閮ㄥ懡浠ょ殑鍔熻兘鐮佷笉鑳借瘑鍒紒", com.getId(), com.getCode()) ;
     }
@@ -54,4 +60,28 @@
         return ReturnCommand.successed("鏌ヨ鎵�鏈夐�氫俊鍗忚閰嶇疆", command.getId(), command.getCode(), mc) ;
     }
 
+    /**
+     * 鍋滄TCP鏈嶅姟锛屼笉鍐嶆帴鍏ユ柊鐨凾CP杩炴帴锛屽凡缁廡CP杩炴帴鐨勫叏閮ㄦ柇杩炴帴
+     * @throws Exception
+     */
+    private Command stopTcpSv(Command command) throws Exception{
+        TcpUnit.getInstance().stop(new UnitStartedCallbackInterface(){
+            public void call(Object obj) throws Exception {
+
+            }
+        });
+        return ReturnCommand.successed("宸茬粡鍚姩鍋滄TCP鏈嶅姟", command.getId(), command.getCode(), null) ;
+    }
+
+    /**
+     * 鎭㈠TCP鏈嶅姟锛屾帴鍏ユ柊鐨凾CP杩炴帴
+     * @throws Exception
+     */
+    private Command recoverTcpSv(Command command) throws Exception{
+        TcpUnit.getInstance().recover();
+        return ReturnCommand.successed("宸茬粡鍚姩鎭㈠TCP鏈嶅姟", command.getId(), command.getCode(), null) ;
+    }
+
+
+
 }
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/CodeLocal.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/CodeLocal.java
index d3322bc..49aa69d 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/CodeLocal.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/CodeLocal.java
@@ -8,4 +8,7 @@
 	
 	public static final String allProtocols = "LCD0100" ;//鏌ヨ鎵�鏈夊崗璁厤缃�
 
+	public static final String stopTcpSv = "LCD0110" ;//鍋滄TCP鏈嶅姟锛屼笉鍐嶆帴鍏ユ柊鐨凾CP杩炴帴锛屽凡缁廡CP杩炴帴鐨勫叏閮ㄦ柇杩炴帴
+	public static final String recoverTcpSv = "LCD0112" ;//閲嶅惎TCP鏈嶅姟锛屾帴鍏ユ柊鐨凾CP杩炴帴
+
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/common/CodeLocal.java b/pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/common/CodeLocal.java
index b4135de..9b7edb2 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/common/CodeLocal.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/common/CodeLocal.java
@@ -8,4 +8,7 @@
 	
 	public static final String allProtocols = "LCD0100" ;//鏌ヨ鎵�鏈夊崗璁厤缃�
 
+	public static final String stopTcpSv = "LCD0110" ;//鍋滄TCP鏈嶅姟锛屼笉鍐嶆帴鍏ユ柊鐨凾CP杩炴帴锛屽凡缁廡CP杩炴帴鐨勫叏閮ㄦ柇杩炴帴
+	public static final String recoverTcpSv = "LCD0112" ;//鎭㈠TCP鏈嶅姟锛屾帴鍏ユ柊鐨凾CP杩炴帴
+
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V1_0_0/ComSupportP206V1_0_0.java b/pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V1_0_0/ComSupportP206V1_0_0.java
index 6b98168..ae511a8 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V1_0_0/ComSupportP206V1_0_0.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V1_0_0/ComSupportP206V1_0_0.java
@@ -34,7 +34,22 @@
     private RestTemplate restTemplate;
 
 
-    protected Command command(String code, Object param, String comId){
+    protected Command commandLocal(String code, Object param, String comId){
+        Command com = new Command() ;
+        com.id = comId==null?Command.defaultId:(comId.trim().equals("")?Command.defaultId:comId) ;//瀹為檯搴旂敤涓紝鏇挎崲鎴愭暟鎹簱璁板綍id
+        com.protocol = ProtocolConstantV206V1_0_0.protocolName ;
+        com.code = code ;
+        com.rtuAddr = rtuAddr ;
+        com.type = CommandType.innerCommand ;
+        com.rtuResultSendWebUrl = rtuResultSendWebUrl ;
+
+        com.param = param ;
+
+        return com ;
+    }
+
+
+    protected Command commandOuter(String code, Object param, String comId){
         Command com = new Command() ;
         com.id = comId==null?Command.defaultId:(comId.trim().equals("")?Command.defaultId:comId) ;//瀹為檯搴旂敤涓紝鏇挎崲鎴愭暟鎹簱璁板綍id
         com.protocol = ProtocolConstantV206V1_0_0.protocolName ;
@@ -48,6 +63,7 @@
         return com ;
     }
 
+
     /**
      * 杩炴帴閫氫俊涓棿浠舵祴璇�
      * @return
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V1_0_0/CommandP206V1_0_0Ctrl.java b/pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V1_0_0/CommandP206V1_0_0Ctrl.java
index d3ca03d..8a2bfa1 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V1_0_0/CommandP206V1_0_0Ctrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-mwTest-web/src/main/java/com/dy/pipIrrMwTestWeb/p206V1_0_0/CommandP206V1_0_0Ctrl.java
@@ -31,7 +31,11 @@
             rt = this.connect() ;//杩炴帴閫氫俊涓棿浠舵祴璇�
         }else{
             try{
-                if(com.equals("10")){
+                if(com.equals(CodeLocal.stopTcpSv)){
+                    rt = this.stopTcpSv() ;
+                }else if(com.equals(CodeLocal.recoverTcpSv)){
+                    rt = this.recoverTcpSv() ;
+                }else if(com.equals("10")){
                     rt = this.cd10() ;
                 }else if(com.equals("21")){
                     rt = this.cd21() ;
@@ -96,89 +100,97 @@
         return this.sendTest() ;
     }
 
+    private BaseResponse stopTcpSv(){
+        return this.sendCom2Mw(this.commandLocal(CodeLocal.stopTcpSv, null, null)) ;
+    }
+
+    private BaseResponse recoverTcpSv(){
+        return this.sendCom2Mw(this.commandLocal(CodeLocal.recoverTcpSv, null, null)) ;
+    }
+
     private BaseResponse cd10(){
         Com10Vo comVo = new Com10Vo() ;
         comVo.rtuAddr = "532328059995" ;//鍓�6浣嶆槸琛屾斂鍖哄垝鐮侊紝鍚�6浣嶆槸搴忓垪鍙锋渶澶ф槸065535
-        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_10, comVo, null)) ;
+        return this.sendCom2Mw(this.commandOuter(CodeV1_0_1.cd_10, comVo, null)) ;
     }
 
     private BaseResponse cd21(){
         Com21Vo comVo = new Com21Vo() ;
         comVo.ip = "8.140.180.59" ;//IP锛堜緥濡� 125.235.35.89锛�
         comVo.port = 6001 ;///绔彛鍙凤紙0~65536锛�
-        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_21, comVo, null)) ;
+        return this.sendCom2Mw(this.commandOuter(CodeV1_0_1.cd_21, comVo, null)) ;
     }
 
     private BaseResponse cd37(){
         Com37Vo comVo = new Com37Vo() ;
         comVo.seconds = 20 ;//鍗曚綅绉�
-        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_37, comVo, null)) ;
+        return this.sendCom2Mw(this.commandOuter(CodeV1_0_1.cd_37, comVo, null)) ;
     }
     private BaseResponse cd67(){
         Com37Vo comVo = new Com37Vo() ;
-        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_67, comVo, null)) ;
+        return this.sendCom2Mw(this.commandOuter(CodeV1_0_1.cd_67, comVo, null)) ;
     }
 
     private BaseResponse cd38(){
         Com38Vo comVo = new Com38Vo() ;
         comVo.remainMoneyAlarm = 10.0 ;//鐢ㄦ埛浣欓鎶ヨ鍊�(澶т簬1.0)
-        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_38, comVo, null)) ;
+        return this.sendCom2Mw(this.commandOuter(CodeV1_0_1.cd_38, comVo, null)) ;
     }
 
     private BaseResponse cd68(){
-        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_68, null, null)) ;
+        return this.sendCom2Mw(this.commandOuter(CodeV1_0_1.cd_68, null, null)) ;
     }
 
     private BaseResponse cd39(){
         Com39Vo comVo = new Com39Vo() ;
         comVo.batteryVoltAlarm = 7.0 ;//鐢垫睜鐢靛帇鎶ヨ鍊�(澶т簬0.1)
-        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_39, comVo, null)) ;
+        return this.sendCom2Mw(this.commandOuter(CodeV1_0_1.cd_39, comVo, null)) ;
     }
 
     private BaseResponse cd69(){
-        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_69, null, null)) ;
+        return this.sendCom2Mw(this.commandOuter(CodeV1_0_1.cd_69, null, null)) ;
     }
 
     private BaseResponse cd3A(){
         Com3AVo comVo = new Com3AVo() ;
         comVo.current = 1.0 ;//闃�闂ㄥ牭杞數娴�(澶т簬0)
-        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_3A, comVo, null)) ;
+        return this.sendCom2Mw(this.commandOuter(CodeV1_0_1.cd_3A, comVo, null)) ;
     }
 
     private BaseResponse cd6A(){
-        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_6A, null, null)) ;
+        return this.sendCom2Mw(this.commandOuter(CodeV1_0_1.cd_6A, null, null)) ;
     }
 
     private BaseResponse cd3B(){
         Com3BVo comVo = new Com3BVo() ;
         comVo.second = 120 ;//闃�闂ㄨ秴鏃舵椂闂�(绉�)(澶т簬1)
-        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_3B, comVo, null)) ;
+        return this.sendCom2Mw(this.commandOuter(CodeV1_0_1.cd_3B, comVo, null)) ;
     }
 
     private BaseResponse cd6B(){
-        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_6B, null, null)) ;
+        return this.sendCom2Mw(this.commandOuter(CodeV1_0_1.cd_6B, null, null)) ;
     }
 
     private BaseResponse cd3C(){
         Com3CVo comVo = new Com3CVo() ;
         comVo.minute = 5 ;
-        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_3C, comVo, null)) ;
+        return this.sendCom2Mw(this.commandOuter(CodeV1_0_1.cd_3C, comVo, null)) ;
     }
 
     private BaseResponse cd65(){
-        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_65, null, null)) ;
+        return this.sendCom2Mw(this.commandOuter(CodeV1_0_1.cd_65, null, null)) ;
     }
 
     private BaseResponse<String> cd91() {
-        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_91, null, null)) ;
+        return this.sendCom2Mw(this.commandOuter(CodeV1_0_1.cd_91, null, null)) ;
     }
 
     private BaseResponse cd92(){
-        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_92, null, null)) ;
+        return this.sendCom2Mw(this.commandOuter(CodeV1_0_1.cd_92, null, null)) ;
     }
 
     private BaseResponse cd93(){
-        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_93, null, null)) ;
+        return this.sendCom2Mw(this.commandOuter(CodeV1_0_1.cd_93, null, null)) ;
     }
 
     //APP杩滅▼寮�闃�
@@ -187,13 +199,13 @@
         comVo.icCardNo = CommandP206V1_0_0Ctrl.vsIcCardNo;
         comVo.moneyRemain = 234.56 ;
         comVo.waterPrice = 1.2 ;
-        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_97, comVo, null)) ;
+        return this.sendCom2Mw(this.commandOuter(CodeV1_0_1.cd_97, comVo, null)) ;
     }
     //APP杩滅▼鍏抽榾
     private BaseResponse cd98(){
         Com98Vo comVo = new Com98Vo() ;
         comVo.icCardNo = CommandP206V1_0_0Ctrl.vsIcCardNo;
-        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_98, comVo, null)) ;
+        return this.sendCom2Mw(this.commandOuter(CodeV1_0_1.cd_98, comVo, null)) ;
     }
 
     //瀹氭椂鍏抽榾寮�闃�
@@ -203,7 +215,7 @@
         comVo.moneyRemain = 234.56 ;
         comVo.waterPrice = 1.2 ;
         comVo.minutes = 3 ;
-        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_99, comVo, null)) ;
+        return this.sendCom2Mw(this.commandOuter(CodeV1_0_1.cd_99, comVo, null)) ;
     }
 
     //瀹氶噺鍏抽榾寮�闃�
@@ -213,7 +225,7 @@
         comVo.moneyRemain = 234.56 ;
         comVo.waterPrice = 1.2 ;
         comVo.waterAmount = 10 ;
-        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_A0, comVo, null)) ;
+        return this.sendCom2Mw(this.commandOuter(CodeV1_0_1.cd_A0, comVo, null)) ;
     }
 
 
@@ -231,7 +243,7 @@
         comVo.day = nextDt[2] ;
         comVo.hour = nextDt[3] ;
         comVo.minute = nextDt[4] ;
-        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_A1, comVo, null)) ;
+        return this.sendCom2Mw(this.commandOuter(CodeV1_0_1.cd_A1, comVo, null)) ;
     }
 
     //瀹氶噺鍏抽榾璁″垝寮�闃�
@@ -248,12 +260,12 @@
         comVo.day = nextDt[2] ;
         comVo.hour = nextDt[3] ;
         comVo.minute = nextDt[4] ;
-        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_A2, comVo, null)) ;
+        return this.sendCom2Mw(this.commandOuter(CodeV1_0_1.cd_A2, comVo, null)) ;
     }
 
 
     private BaseResponse cdB0(){
-        return this.sendCom2Mw(this.command(CodeV1_0_1.cd_B0, null, null)) ;
+        return this.sendCom2Mw(this.commandOuter(CodeV1_0_1.cd_B0, null, null)) ;
     }
 
     //鍦ㄧ嚎鎯呭喌

--
Gitblit v1.8.0