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