From e0c3d16c7ba1700be99b4739b883e4d01789cc62 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期三, 30 四月 2025 16:20:50 +0800
Subject: [PATCH] feat(pipIrr): 新增计划终止后限制发布新计划的功能

---
 pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiClUnit.java |  350 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 350 insertions(+), 0 deletions(-)

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
new file mode 100644
index 0000000..b534caf
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/rmiClient/RmiClUnit.java
@@ -0,0 +1,350 @@
+package com.dy.testClient.rmiClient;
+
+import com.dy.testClient.ServerProperties;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import com.dy.common.mw.UnitAdapterInterface;
+import com.dy.common.mw.UnitInterface;
+import com.dy.common.mw.UnitCallbackInterface;
+import com.dy.common.mw.channel.rmi.RmiFrameWork;
+
+public class RmiClUnit  implements UnitInterface {
+
+	private static final Logger log = LogManager.getLogger(RmiClUnit.class) ;
+	
+	private static final String id = "" + System.nanoTime() ;//鑷繁鐨刬d
+	
+	public static String token ;//鏈嶅姟绔彂鐨則oken
+	
+	private static final RmiClUnit instance = new RmiClUnit() ;
+	
+	private static RmiFrameWork frmWork = null ;
+	
+	public static RmiClUnitAdapter adapter ;
+	public static RmiClUnitConfigVo confVo ;
+	
+	private RmiClUnit(){}
+	
+	public static RmiClUnit getInstance(){
+		return instance ;
+	}
+	
+	@Override
+	public void setAdapter(UnitAdapterInterface adapter) throws Exception {
+		if(adapter == null){
+			throw new Exception("Rmi Client妯″潡閫傞厤鍣ㄥ璞′笉鑳戒负绌猴紒") ;
+		}
+		RmiClUnit.adapter = (RmiClUnitAdapter)adapter ; 
+		RmiClUnit.confVo = RmiClUnit.adapter.getConfig() ;
+		if(RmiClUnit.confVo == null){
+			throw new Exception("Rmi Client妯″潡閰嶇疆瀵硅薄涓嶈兘涓虹┖锛�") ;
+		}
+	}
+
+	@Override
+	public void start(UnitCallbackInterface callback) throws Exception {
+		System.out.println("Rmi Client妯″潡鎴愬姛鍚姩");
+		this.doStart();
+	    callback.call(null) ;
+	}
+
+	@Override
+	public void stop(UnitCallbackInterface callback) throws Exception {
+		callback.call(null);
+	}
+	
+	private void doStart(){
+		new Thread(() -> {
+			while(true){
+				try {
+					Thread.sleep(100L);
+					frmWork = getRmiFrameWork() ;
+					if(frmWork != null){
+						break ;
+					}
+				} catch (Exception e) {
+					log.error("寰楀埌rmiFramWork澶辫触" + e.getMessage());
+					continue ;
+				}
+			}
+			register(frmWork) ;
+		}).start();
+	}
+	
+	public RmiFrameWork getRmiFrameWork(){
+		System.setProperty("java.rmi.server.hostname", confVo.svUrl) ;
+		System.out.println("Rmi寤虹珛杩炴帴璇锋眰鏈嶅姟绔細" + confVo.svUrl + ":" + confVo.svPort + "/" + confVo.svContext);
+		RmiClient rmiCl = new RmiClient(confVo.svUrl, confVo.svPort, confVo.svContext) ;
+		return rmiCl.getRmiInterface() ;
+	}
+	
+	//鎶婁笂鎶ユ暟鎹殑鏁伴噺涓婃姤缁檓wTestServer
+	public void reportHadReportCount(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 reportHadReportOver(Integer count){
+		try {
+			Thread.sleep(100L);
+			RmiRequestVo rqVo = new RmiRequestVo() ;
+			rqVo.id = id ;
+			rqVo.token = token ;
+			rqVo.code = Code.cd6;
+			rqVo.overCount = 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.cd7;
+			rqVo.over = true ;
+			rqVo.seconds = seconds ;
+			String json = rqVo.toJson() ;
+			frmWork.syncRequest(json) ;
+		} catch (Exception e) {
+			log.error("鎶婃暟鎹笂鎶ュ畬鎴愭儏鍐�  涓婃姤缁檓wTestServer澶辫触" + e.getMessage());
+		}
+	}
+	
+	//鍚憁wTestServer娉ㄥ唽
+	private void register(RmiFrameWork frmWork){
+		boolean error = false ;
+		while(true){
+			try {
+				Thread.sleep(100L);
+				RmiRequestVo rqVo = new RmiRequestVo() ;
+				rqVo.id = id ;
+				rqVo.code = Code.cd1 ;
+				String json = rqVo.toJson() ;
+				Object rObj = frmWork.syncRequest(json) ;
+				if(rObj != null){
+					RmiResponseVo rspVo = RmiResponseVo.jsonToObject(String.valueOf(rObj), ResRegisterVo.class) ;
+					if(rspVo != null){
+						if(rspVo.success){
+							if(rspVo.obj != null && rspVo.obj instanceof ResRegisterVo){
+								ResRegisterVo rVo = (ResRegisterVo)rspVo.obj ;
+								token = rVo.token ;
+								log.info("娉ㄥ唽鎴愬姛锛屽緱鍒皌oken=" + token);
+								break ;
+							}else{
+								log.error("rmi娉ㄥ唽澶辫触锛氭湇鍔$杩斿洖ResRegisterVo涓簄ull");
+								error = true ;
+							}
+						}else{
+							log.error("rmi娉ㄥ唽澶辫触锛氭湇鍔$杩斿洖閿欒锛�" + rspVo.errorInfo);
+							error = true ;
+						}
+					}else{
+						log.error("rmi娉ㄥ唽澶辫触锛氭湇鍔$杩斿洖鐨凴miResponseVo涓簄ull");
+						error = true ;
+					}
+				}else{
+					log.error("rmi娉ㄥ唽澶辫触锛氭湇鍔$杩斿洖json涓簄ull");
+					error = true ;
+				}
+			} catch (Exception e) {
+				log.error("rmi娉ㄥ唽澶辫触" + e.getMessage());
+				error = true ;
+				continue ;
+			}
+		}
+		if(!error){
+			getConfig(frmWork) ;
+		}
+	}
+	
+	//浠巑wTestServer寰楀埌閰嶇疆
+	private void getConfig(RmiFrameWork frmWork){
+		boolean error = false ;
+		while(true){
+			try {
+				Thread.sleep(100L);
+				RmiRequestVo rqVo = new RmiRequestVo() ;
+				rqVo.id = id ;
+				rqVo.token = token ;
+				rqVo.code = Code.cd2 ;
+				String json = rqVo.toJson() ;
+				Object rObj = frmWork.syncRequest(json) ;
+				if(rObj != null){
+					RmiResponseVo rspVo = RmiResponseVo.jsonToObject(String.valueOf(rObj), ResConfigVo.class) ;
+					if(rspVo != null){
+						if(rspVo.success){
+							if(rspVo.obj != null && rspVo.obj instanceof ResConfigVo){
+								ResConfigVo rVo = (ResConfigVo)rspVo.obj ;
+								if(rVo != null){
+									ServerProperties.rtuAddrStart = rVo.rtuAddrStart;
+									ServerProperties.rtuAddrEnd = rVo.rtuAddrEnd;
+									ServerProperties.tcpServerIp = rVo.tcpServerIp;
+									ServerProperties.tcpServerPort = rVo.tcpServerPort;
+									ServerProperties.sendInterval = rVo.sendInterval ;
+									ServerProperties.heartbeatTimes = rVo.heartbeatTimes ;
+									ServerProperties.sendTimes = rVo.sendTimes ;
+									ServerProperties.sendOverThenCloseConnect = rVo.sendOverThenCloseConnect ;
+									log.info("寰楀埌閰嶇疆鎴愬姛");
+									log.info("    寮�濮婻tuAddr=" + ServerProperties.rtuAddrStart);
+									log.info("    鎴RtuAddr=" + ServerProperties.rtuAddrEnd);
+									log.info("    mwAccept鏈嶅姟IP=" + ServerProperties.tcpServerIp);
+									log.info("    mwAccept鏈嶅姟绔彛=" + ServerProperties.tcpServerPort);
+									log.info("    鍙戦�佹暟鎹棿闅�=" + ServerProperties.sendTimes);
+									log.info("    姣忚疆娆″彂閫佸績璺虫鏁�=" + ServerProperties.heartbeatTimes);
+									log.info("    姣廟TU涓婃姤鏁版嵁杞=" + ServerProperties.sendTimes);
+									log.info("    鍙戦�佸畬鏁版嵁鍚庯紝鏄惁鍏抽棴TCP杩炴帴(1鏄紝0鍚�)=" + ServerProperties.sendOverThenCloseConnect);
+									break ;
+								}else{
+									log.error("rmi寰楀埌閰嶇疆澶辫触锛歫son杞琑esConfigVo涓簄ull");
+									error = true ;
+								}
+							}else{
+								log.error("rmi寰楀埌閰嶇疆澶辫触锛氭湇鍔$杩斿洖ResConfigVo涓簄ull");
+								error = true ;
+							}
+						}else{
+							log.error("rmi寰楀埌閰嶇疆澶辫触锛氭湇鍔$杩斿洖閿欒锛�" + rspVo.errorInfo);
+							error = true ;
+						}
+					}else{
+						log.error("rmi寰楀埌閰嶇疆澶辫触锛氭湇鍔$杩斿洖鐨凴miResponseVo涓簄ull");
+						error = true ;
+					}
+				}else{
+					log.error("rmi寰楀埌閰嶇疆澶辫触锛氭湇鍔$杩斿洖json涓簄ull");
+					error = true ;
+				}
+			} catch (Exception e) {
+				log.error("rmi寰楀埌閰嶇疆澶辫触" + e.getMessage());
+				error = true ;
+				continue ;
+			}
+		}
+		if(!error){
+			getStartTcpConnect(frmWork) ;
+		}
+	}
+	
+	//浠巑wTestServer寰楀埌寮�濮婽CP杩炴帴鐨勮鍏佽
+	private void getStartTcpConnect(RmiFrameWork frmWork){
+		log.info("绛夊緟鏈嶅姟绔厑璁哥綉缁滆繛鎺�");
+		boolean error = false ;
+		while(true){
+			try {
+				Thread.sleep(100L);
+				RmiRequestVo rqVo = new RmiRequestVo() ;
+				rqVo.id = id ;
+				rqVo.token = token ;
+				rqVo.code = Code.cd3 ;
+				String json = rqVo.toJson() ;
+				Object rObj = frmWork.syncRequest(json) ;
+				if(rObj != null){
+					RmiResponseVo rspVo = RmiResponseVo.jsonToObject(String.valueOf(rObj), ResStartTcpConnectVo.class) ;
+					if(rspVo != null){
+						if(rspVo.success){
+							if(rspVo.obj != null && rspVo.obj instanceof ResStartTcpConnectVo){
+								ResStartTcpConnectVo rVo = (ResStartTcpConnectVo)rspVo.obj ;
+								if(rVo != null){
+									if(rVo.start){
+										ServerProperties.startTcpConnectWork = true ;
+										log.info("鍏佽TCP缃戠粶杩炴帴浜�( ^_^ )");
+										error = false ;
+										break ;
+									}
+								}else{
+									error = true ;
+									log.error("rmi璇锋眰TCP缃戠粶杩炴帴澶辫触锛歫son杞琑esStartTcpConnectVo涓簄ull");
+								}
+							}else{
+								error = true ;
+								log.error("rmi璇锋眰TCP缃戠粶杩炴帴澶辫触锛氭湇鍔$杩斿洖ResStartTcpConnectVo涓簄ull");
+							}
+						}else{
+							error = true ;
+							log.error("rmi璇锋眰TCP缃戠粶杩炴帴澶辫触锛氭湇鍔$杩斿洖閿欒锛�" + rspVo.errorInfo);
+						}
+					}else{
+						error = true ;
+						log.error("rmi璇锋眰TCP缃戠粶杩炴帴澶辫触锛氭湇鍔$杩斿洖鐨凴miResponseVo涓簄ull");
+					}
+				}else{
+					error = true ;
+					log.error("rmi璇锋眰TCP缃戠粶杩炴帴澶辫触锛氭湇鍔$杩斿洖json涓簄ull");
+				}
+			} catch (Exception e) {
+				error = true ;
+				log.error("rmi璇锋眰TCP缃戠粶杩炴帴澶辫触" + e.getMessage());
+				continue ;
+			}
+		}
+		if(!error){
+			getStartRtuReport(frmWork) ;
+		}
+	}
+
+	//浠巑wTestServer寰楀埌寮�濮婻TU涓婃姤鏁版嵁鐨勮鍏佽
+	private void getStartRtuReport(RmiFrameWork frmWork){
+		log.info("绛夊緟鏈嶅姟绔厑璁镐笂鎶ユ暟鎹�");
+		while(true){
+			try {
+				Thread.sleep(100L);
+				RmiRequestVo rqVo = new RmiRequestVo() ;
+				rqVo.id = id ;
+				rqVo.token = token ;
+				rqVo.code = Code.cd4 ;
+				String json = rqVo.toJson() ;
+				Object rObj = frmWork.syncRequest(json) ;
+				if(rObj != null){
+					RmiResponseVo rspVo = RmiResponseVo.jsonToObject(String.valueOf(rObj), ResStartRtuReportVo.class) ;
+					if(rspVo != null){
+						if(rspVo.success){
+							if(rspVo.obj != null && rspVo.obj instanceof ResStartRtuReportVo){
+								ResStartRtuReportVo rVo = (ResStartRtuReportVo)rspVo.obj ;
+								if(rVo != null){
+									if(rVo.report){
+										ServerProperties.startRtuReportWork = true ;
+										log.info("鍏佽RTU涓婃姤鏁版嵁宸ヤ綔浜�( ^_^ )");
+										break ;
+									}
+								}else{
+									log.error("rmi璇锋眰Rtu涓婃姤鏁版嵁澶辫触锛歫son杞琑esStartRtuReportVo涓簄ull");
+								}
+							}else{
+								log.error("rmi璇锋眰Rtu涓婃姤鏁版嵁澶辫触锛氭湇鍔$杩斿洖ResStartRtuReportVo涓簄ull");
+							}
+						}else{
+							log.error("rmi璇锋眰Rtu涓婃姤鏁版嵁澶辫触锛氭湇鍔$杩斿洖閿欒锛�" + rspVo.errorInfo);
+						}
+					}else{
+						log.error("rmi璇锋眰Rtu涓婃姤鏁版嵁澶辫触锛氭湇鍔$杩斿洖鐨凴miResponseVo涓簄ull");
+					}
+				}else{
+					log.error("rmi璇锋眰Rtu涓婃姤鏁版嵁澶辫触锛氭湇鍔$杩斿洖json涓簄ull");
+				}
+			} catch (Exception e) {
+				log.error("rmi璇锋眰Rtu涓婃姤鏁版嵁澶辫触" + e.getMessage());
+				continue ;
+			}
+		}
+	}
+
+}
\ No newline at end of file

--
Gitblit v1.8.0