From 7559ffe69fdbf3a0224c5abaa867af92d567fc51 Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期一, 02 十二月 2024 10:25:42 +0800 Subject: [PATCH] 1、完善代码; 2、补全RTU状态采集(阀门状态)。 --- pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/DriverV2.java | 2 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/RtuStatus.java | 1 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/DriverV1.java | 2 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/CodeLocal.java | 2 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/RtuStatusDealer.java | 17 ++++- pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java | 74 ------------------------ pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/RtuStatusDeal.java | 17 ++++- pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuStatus/RtuInfoNotify.java | 2 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/DriverV202404.java | 2 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/AdapterImp_ProtocolUnit.java | 2 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/CommandInnerDeaLer.java | 22 ++++++- 11 files changed, 54 insertions(+), 89 deletions(-) diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/DriverV1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/DriverV1.java index 789ee94..54279c3 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/DriverV1.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/DriverV1.java @@ -106,10 +106,10 @@ } @Override public void notify(NotifyInfo ...infos) { + notify.notify(rtuAddr, ProtocolConstantV206V1.protocolName, ProtocolConstantV206V1.protocolVer, infos); } }); } - } catch (Exception e) { isFail = true ; return new MidResult[]{(new MidResultError(ProtocolConstantV206V1.protocolName, rtuAddr, "涓ラ噸閿欒锛屽垎鏋怰tu鏁版嵁鍑洪敊锛佹暟鎹负锛�" + upHex + (e.getMessage() == null?"":("锛屽嚭閿欎俊鎭細" + e.getMessage())), e))} ; diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/DriverV2.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/DriverV2.java index 5dba5f7..3297dbb 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/DriverV2.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/DriverV2.java @@ -1,6 +1,7 @@ package com.dy.common.mw.protocol.p206V2; import com.dy.common.mw.protocol.*; +import com.dy.common.mw.protocol.p206V1.ProtocolConstantV206V1; import com.dy.common.util.DateTime; @AnnotationDriver(enable = true, @@ -107,6 +108,7 @@ } @Override public void notify(NotifyInfo ...infos) { + notify.notify(rtuAddr, ProtocolConstantV206V1.protocolName, ProtocolConstantV206V1.protocolVer, infos); } }); } diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/DriverV202404.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/DriverV202404.java index 0c2e775..c504d5c 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/DriverV202404.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/DriverV202404.java @@ -67,7 +67,6 @@ if(crcStr != null){ return new MidResult[]{(new MidResultError(ProtocolConstantV206V202404.protocolName, rtuAddr, "涓ラ噸閿欒锛屼笂琛屾暟鎹瓹RC妫�鏌ュけ璐ワ紝" + crcStr, null))} ; } - rtuAddr = cp.parseRtuAddr(upBuffer) ; upCode = cp.parseCode(upBuffer) ; if(upCode == null){ return new MidResult[]{(new MidResultError(ProtocolConstantV206V202404.protocolName, rtuAddr, "涓ラ噸閿欒锛屾湭鑳戒粠涓婅鏁版嵁涓В鏋愬嚭鍔熻兘鐮侊紒", null))} ; @@ -107,6 +106,7 @@ } @Override public void notify(NotifyInfo ...infos) { + notify.notify(rtuAddr, ProtocolConstantV206V1.protocolName, ProtocolConstantV206V1.protocolVer, infos); } }); } diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/AdapterImp_ProtocolUnit.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/AdapterImp_ProtocolUnit.java index 7b5c530..c86bb60 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/AdapterImp_ProtocolUnit.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/AdapterImp_ProtocolUnit.java @@ -7,7 +7,7 @@ import com.dy.rtuMw.server.forTcp.MidResultActionError; import com.dy.rtuMw.server.forTcp.MidResultActionFromRtu; import com.dy.rtuMw.server.forTcp.MidResultActionToRtu; -import com.dy.rtuMw.server.protocolDriver.RtuInfoNotify; +import com.dy.rtuMw.server.rtuStatus.RtuInfoNotify; public class AdapterImp_ProtocolUnit implements ProtocolUnitAdapter { diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/RtuStatus.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/RtuStatus.java index 7737987..aebbf41 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/RtuStatus.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/RtuStatus.java @@ -89,7 +89,6 @@ this.valveCloseLastDt = DateTime.yyyy_MM_dd_HH_mm_ss() ; this.valveStatusLastTimeStamp = System.currentTimeMillis() ; } - } } 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 2ec4fb6..9f8c204 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 @@ -22,18 +22,27 @@ * 寰楀埌閮ㄥ垎鐘舵�� * @return */ - public static Map<String, RtuStatus> partStatus(String[] rtuAddrArrGrp){ + public static Map<String, RtuStatus> someStatus(String[] rtuAddrArrGrp){ synchronized (map){ - Map<String, RtuStatus> map = new HashMap<>(); + Map<String, RtuStatus> rsMap = new HashMap<>(); for(String rtuAddr : rtuAddrArrGrp){ RtuStatus status = map.get(rtuAddr) ; if(status != null){ - map.put(rtuAddr, status) ; + rsMap.put(rtuAddr, status) ; } } - return map ; + return rsMap ; } } + /** + * 寰楀埌涓�涓猂TU鐨勭姸鎬� + * @return + */ + public static RtuStatus oneStatus(String rtuAddr){ + return map.get(rtuAddr) ; + } + + public static void onLine(String rtuAddr, String ip, Integer port, String protocolName, Short protocolVersion){ RtuStatus vo = map.get(rtuAddr) ; if(vo == 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 cc82cf0..d03d826 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 @@ -113,19 +113,6 @@ * 寰楀埌Tcp閫氫俊鍗忚鍚嶇О * @param rtuAddr * @return - public static String getTcpProtocolName(String rtuAddr){ - TcpSession tcpSe = sessionTable.get(rtuAddr) ; - if(tcpSe != null){ - return tcpSe.protocolName ; - }else{ - return null ; - } - } - */ - /** - * 寰楀埌Tcp閫氫俊鍗忚鍚嶇О - * @param rtuAddr - * @return * */ public static Object[] getTcpProtocolNameVersion(String rtuAddr){ TcpSession tcpSe = map.get(rtuAddr) ; @@ -194,50 +181,7 @@ return map ; } } -// -// /** -// * 寰楀埌鎵�鏈塕TU杩炴帴鐘舵�佹儏鍐� -// * @return -// */ -// public static List<RtuSessionStatus> allConnectStatus(){ -// synchronized (sessionTable){ -// List<RtuSessionStatus> list = new ArrayList<RtuSessionStatus>(); -// Iterator<Entry<String, TcpSession>> it = sessionTable.entrySet().iterator() ; -// Entry<String, TcpSession> entry = null ; -// while(it.hasNext()){ -// entry = it.next() ; -// RtuSessionStatus vo = new RtuSessionStatus() ; -// vo.rtuAddr = entry.getKey() ; -// IoSession se = entry.getValue().ioSession ; -// vo.onTrueOffLine = se.isConnected() ; -// InetSocketAddress sa = (InetSocketAddress)se.getRemoteAddress() ; -// if(sa != null){ -// InetAddress inetAddr = sa.getAddress() ; -// if(inetAddr != null){ -// vo.ip = inetAddr.getHostAddress() ; -// vo.port = sa.getPort() ; -// } -// } -// list.add(vo) ; -// } -// return list ; -// } -// } -// - - /** - * 寰楀埌IoSession - * @param rtuAddr - * @return - */ -// public IoSession getIoSession(String rtuAddr){ -// TcpSession tcpSe = sessionMap.get(rtuAddr) ; -// if(tcpSe != null){ -// return tcpSe.ioSession ; -// } -// return null ; -// } - + /** * 缃戠粶鏄惁杩炴帴 * @param rtuAddr @@ -312,21 +256,5 @@ } } } - -// public static void updateRtuStatus(Long now){ -// synchronized (sessionTable){ -// Iterator<TcpSession> it = sessionTable.values().iterator() ; -// TcpSession tcpSe ; -// while(it.hasNext()){ -// tcpSe = it.next() ; -// if(tcpSe.lastUpDataTime != null){ -// if(now - tcpSe.lastUpDataTime > ServerProperties.lastUpDataTimeLive){ -// tcpSe.lastUpDataTime = null ; -// } -// } -// } -// } -// } - } 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 3441197..c26ef26 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 @@ -34,7 +34,9 @@ }else if(code.equals(CodeLocal.allRtuStates)){ return this.allRtuStates(com) ; }else if(code.equals(CodeLocal.partRtuStates)){ - return this.partRtuStates(com) ; + return this.someRtuStates(com) ; + }else if(code.equals(CodeLocal.oneRtuStates)){ + return this.oneRtuStates(com) ; }else if(code.equals(CodeLocal.allProtocols)){ return this.allProtocols(com) ; }else if(code.equals(CodeLocal.stopTcpSv)){ @@ -101,10 +103,10 @@ * 鏌ヨ閮ㄥ垎RTU鐘舵�� * @throws Exception */ - private Command partRtuStates(Command command) throws Exception{ + private Command someRtuStates(Command command) throws Exception{ if(command.param != null && command.param instanceof String && !command.param.equals("")){ String[] rtuAddrGrp = ((String)command.param).split(","); - Map<String, RtuStatus> map = new RtuStatusDeal().dealPart(rtuAddrGrp) ; + Map<String, RtuStatus> map = new RtuStatusDeal().dealSome(rtuAddrGrp) ; return ReturnCommand.successed("鏌ヨ閮ㄥ垎RTU鐘舵�佺粨鏋�", command.getId(), command.getCode(), map) ; }else{ return ReturnCommand.errored("鍑洪敊锛屽懡浠ゅ弬鏁板簲璇ユ槸鎵�鏌ヨRTU鐨勫湴鍧�涓�", command.getId(), command.getCode()) ; @@ -112,6 +114,20 @@ } /** + * 鏌ヨ閮ㄥ垎RTU鐘舵�� + * @throws Exception + */ + private Command oneRtuStates(Command command) throws Exception{ + if(command.param != null && command.param instanceof String && !command.param.equals("")){ + String rtuAddr = (String)command.param; + RtuStatus rtuStatus = new RtuStatusDeal().dealOne(rtuAddr) ; + return ReturnCommand.successed("鏌ヨ閮ㄥ垎RTU鐘舵�佺粨鏋�", command.getId(), command.getCode(), rtuStatus) ; + }else{ + return ReturnCommand.errored("鍑洪敊锛屽懡浠ゅ弬鏁板簲璇ユ槸鎵�鏌ヨRTU鐨勫湴鍧�", command.getId(), command.getCode()) ; + } + } + + /** * 鏌ヨ鎵�鏈塕TU鍗忚閰嶇疆 * @throws Exception */ 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 02a1783..9337b04 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 @@ -14,6 +14,8 @@ public static final String partRtuStates = "LCD0011" ;//鏌ヨ閮ㄥ垎RTU鐘舵�� + public static final String oneRtuStates = "LCD0012" ;//鏌ヨ涓�涓猂TU鐘舵�� + public static final String allProtocols = "LCD0100" ;//鏌ヨ鎵�鏈夊崗璁厤缃� public static final String stopTcpSv = "LCD0110" ;//鍋滄TCP鏈嶅姟锛屼笉鍐嶆帴鍏ユ柊鐨凾CP杩炴帴锛屽凡缁廡CP杩炴帴鐨勫叏閮ㄦ柇杩炴帴 diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/RtuStatusDeal.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/RtuStatusDeal.java index 7103e28..d5c23c7 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/RtuStatusDeal.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/local/localProtocol/RtuStatusDeal.java @@ -12,7 +12,7 @@ public class RtuStatusDeal { /** - * 鏌ヨ鍦ㄧ嚎涓庝笉鍦ㄧ嚎鎯呭喌 + * 鏌ヨ鐘舵�� */ public Map<String, RtuStatus> dealAll(){ return RtuStatusDealer.allStatus(); @@ -20,9 +20,18 @@ /** - * 鏌ヨ鍦ㄧ嚎涓庝笉鍦ㄧ嚎鎯呭喌 + * 鏌ヨ鐘舵�� */ - public Map<String, RtuStatus> dealPart(String[] rtuAddrGrp){ - return RtuStatusDealer.partStatus(rtuAddrGrp) ; + public Map<String, RtuStatus> dealSome(String[] rtuAddrGrp){ + return RtuStatusDealer.someStatus(rtuAddrGrp) ; + } + + + + /** + * 鏌ヨ鐘舵�� + */ + public RtuStatus dealOne(String rtuAddr){ + return RtuStatusDealer.oneStatus(rtuAddr) ; } } diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/protocolDriver/RtuInfoNotify.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuStatus/RtuInfoNotify.java similarity index 96% rename from pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/protocolDriver/RtuInfoNotify.java rename to pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuStatus/RtuInfoNotify.java index b22a455..9edb6ee 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/protocolDriver/RtuInfoNotify.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuStatus/RtuInfoNotify.java @@ -1,4 +1,4 @@ -package com.dy.rtuMw.server.protocolDriver; +package com.dy.rtuMw.server.rtuStatus; import com.dy.common.mw.protocol.Notify; import com.dy.common.mw.protocol.NotifyInfo; -- Gitblit v1.8.0