From dc86d90bdd25025ad44fc777c9956cac2e219bec Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期三, 23 十月 2024 16:23:42 +0800 Subject: [PATCH] 通信中间件增加查询部分RTU在线情况内部命令 --- pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/CodeLocal.java | 6 ++- pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java | 19 +++++++++ pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/RtuOnLineDeal.java | 10 ++++ pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/CommandInnerDeaLer.java | 29 +++++++++++--- 4 files changed, 54 insertions(+), 10 deletions(-) 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 55869f8..fc34bbf 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 @@ -162,6 +162,25 @@ return map ; } } + + + /** + * 寰楀埌閮ㄥ垎鍦ㄧ嚎鎯呭喌 + * @return + */ + public static HashMap<String, Boolean> partOnLine(String[] rtuAddrArrGrp){ + synchronized (sessionTable){ + HashMap<String, Boolean> map = new HashMap<String, Boolean>(); + for(String rtuAddr : rtuAddrArrGrp){ + TcpSession tcpSe = sessionTable.get(rtuAddr) ; + if(tcpSe != null){ + map.put(rtuAddr, tcpSe.ioSession.isConnected()) ; + } + } + return map ; + } + } + /** * 寰楀埌鎵�鏈塕TU杩炴帴鐘舵�佹儏鍐� * @return 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 927c1b0..1b25086 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 @@ -21,8 +21,10 @@ String code = com.getCode() ; if(code.equals(CodeLocal.clock)){ return this.clock(com) ; - }else if(code.equals(CodeLocal.onLine)){ - return this.onLine(com) ; + }else if(code.equals(CodeLocal.onAllLine)){ + return this.onAllLine(com) ; + }else if(code.equals(CodeLocal.onPartLine)){ + return this.onPartLine(com) ; }else if(code.equals(CodeLocal.onLineStatistics)){ return this.onLineStateStatistics(com) ; }else if(code.equals(CodeLocal.allProtocols)){ @@ -50,9 +52,23 @@ * 鏌ヨ鎵�鏈塕TU鍦ㄧ嚎鎯呭喌 * @throws Exception */ - private Command onLine(Command command) throws Exception{ - RtuOnLineVo ol = new RtuOnLineDeal().deal() ; - return ReturnCommand.successed("鏌ヨ鎵�鏈夋祴绔欏湪绾挎儏鍐电粨鏋�", command.getId(), command.getCode(), ol) ; + private Command onAllLine(Command command) throws Exception{ + RtuOnLineVo ol = new RtuOnLineDeal().dealAll() ; + return ReturnCommand.successed("鏌ヨ鎵�鏈塕TU鍦ㄧ嚎鎯呭喌缁撴灉", command.getId(), command.getCode(), ol) ; + } + + /** + * 鏌ヨ閮ㄥ垎RTU鍦ㄧ嚎鎯呭喌 + * @throws Exception + */ + private Command onPartLine(Command command) throws Exception{ + if(command.param != null && command.param instanceof String && !command.param.equals("")){ + String[] rtuAddrGrp = ((String)command.param).split(","); + RtuOnLineVo ol = new RtuOnLineDeal().dealPart(rtuAddrGrp) ; + return ReturnCommand.successed("鏌ヨ閮ㄥ垎RTU鍦ㄧ嚎鎯呭喌缁撴灉", command.getId(), command.getCode(), ol) ; + }else{ + return ReturnCommand.errored("鍑洪敊锛屽懡浠ゅ弬鏁板簲璇ユ槸鎵�鏌ヨRTU鐨勫湴鍧�涓�", command.getId(), command.getCode()) ; + } } /** @@ -61,7 +77,7 @@ */ private Command onLineStateStatistics(Command command) throws Exception{ RtuOnLineStateStatisticsVo vo = new RtuOnLineStateStatisticsDeal().deal() ; - return ReturnCommand.successed("鏌ヨ鎵�鏈夋祴绔欏湪绾挎儏鍐电粨鏋�", command.getId(), command.getCode(), vo) ; + return ReturnCommand.successed("鏌ヨ鎵�鏈塕TU鍦ㄧ嚎鎯呭喌缁撴灉", command.getId(), command.getCode(), vo) ; } /** @@ -80,7 +96,6 @@ private Command stopTcpSv(Command command) throws Exception{ TcpUnit.getInstance().stop(new UnitCallbackInterface(){ public void call(Object obj) throws Exception { - } }); 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 8629628..479fa99 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 @@ -4,9 +4,11 @@ public static final String clock = "LCD0000" ;//鏌ヨ鐩戞帶涓棿浠舵椂閽� - public static final String onLine = "LCD0001" ;//鏌ヨ鎵�鏈塕TU鍦ㄧ嚎鎯呭喌 + public static final String onAllLine = "LCD0001" ;//鏌ヨ鎵�鏈塕TU鍦ㄧ嚎鎯呭喌 - public static final String onLineStatistics = "LCD0002" ;//鏌ヨ鎵�鏈塕TU鍦ㄧ嚎鎯呭喌 + public static final String onPartLine = "LCD0002" ;//鏌ヨ鎵�鏈塕TU鍦ㄧ嚎鎯呭喌 + + public static final String onLineStatistics = "LCD0003" ;//鏌ヨ鎵�鏈塕TU鐘舵�佹儏鍐� public static final String allProtocols = "LCD0100" ;//鏌ヨ鎵�鏈夊崗璁厤缃� diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/RtuOnLineDeal.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/RtuOnLineDeal.java index 15fe543..20c1317 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/RtuOnLineDeal.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/RtuOnLineDeal.java @@ -7,7 +7,15 @@ /** * 鏌ヨ鍦ㄧ嚎涓庝笉鍦ㄧ嚎鎯呭喌 */ - public RtuOnLineVo deal(){ + public RtuOnLineVo dealAll(){ return (new RtuOnLineVo()).setOnLine(TcpSessionCache.allOnLine()); } + + + /** + * 鏌ヨ鍦ㄧ嚎涓庝笉鍦ㄧ嚎鎯呭喌 + */ + public RtuOnLineVo dealPart(String[] rtuAddrGrp){ + return (new RtuOnLineVo()).setOnLine(TcpSessionCache.partOnLine(rtuAddrGrp)); + } } -- Gitblit v1.8.0