From db88628e7bb03f334fa65826bd655c27859a9973 Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期日, 03 十一月 2024 16:52:04 +0800 Subject: [PATCH] 1、协议版本号增加到协议解析与命令构造中; 2、增加RTU状态记录功能,为RTU远程升级做准备。 --- pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/RtuStatusDealer.java | 244 +++++++++++++++++++++++++----------------------- 1 files changed, 125 insertions(+), 119 deletions(-) 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 f60c73a..2ec4fb6 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 @@ -3,144 +3,150 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import com.dy.common.mw.protocol.rtuStatus.StCommandResult; -import com.dy.common.mw.protocol.rtuStatus.StDownData; -import com.dy.common.mw.protocol.rtuStatus.StOnOffLine; -import com.dy.common.mw.protocol.rtuStatus.StUpData; +import java.util.HashMap; +import java.util.Map; public class RtuStatusDealer { private static Logger log = LogManager.getLogger(RtuStatusDealer.class.getName()) ; - - - 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 ; - -// if(member == null){ -// log.error("鍑洪敊锛屾湭鑳藉緱鍒板鐞哛TU锛堝湴鍧�涓�" + sta.rtuAddr + "锛夌姸鎬佹暟鎹殑鏁版嵁涓棿浠讹紝鍙兘鏁版嵁涓棿浠舵湭鍚姩鎴栬劚绂荤殑闆嗙兢锛�"); -// }else{ -// log.info("閫氱煡鏁版嵁涓棿浠讹紙" + member.toString() + "锛夛紝RTU锛堝湴鍧�涓�" + sta.rtuAddr + "锛夊湪绾匡紒"); -// new JgIoHandler().sendP2P(member, st); -// } + + private static Map<String, RtuStatus> map = new HashMap<String, RtuStatus>() ; + + /** + * 寰楀埌鍏ㄩ儴鐘舵�� + * @return + */ + public static Map<String, RtuStatus> allStatus(){ + return map ; } - - 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 ; - -// Address member = JgUnit.getInstance().getJgMembers().getDataMwMemberByRtuAddr(rtuAddr) ; -// if(member == null){ -// log.error("鍑洪敊锛屾湭鑳藉緱鍒板鐞哛TU锛堝湴鍧�涓�" + rtuAddr + "锛夌姸鎬佹暟鎹殑鏁版嵁涓棿浠讹紝鍙兘鏁版嵁涓棿浠舵湭鍚姩鎴栬劚绂荤殑闆嗙兢锛�"); -// }else{ -// log.info("閫氱煡鏁版嵁涓棿浠讹紙" + member.toString() + "锛夛紝RTU锛堝湴鍧�涓�" + rtuAddr + "锛夊湪绾匡紒"); -// new JgIoHandler().sendP2P(member, st); -// } + /** + * 寰楀埌閮ㄥ垎鐘舵�� + * @return + */ + public static Map<String, RtuStatus> partStatus(String[] rtuAddrArrGrp){ + synchronized (map){ + Map<String, RtuStatus> map = new HashMap<>(); + for(String rtuAddr : rtuAddrArrGrp){ + RtuStatus status = map.get(rtuAddr) ; + if(status != null){ + map.put(rtuAddr, status) ; + } + } + return map ; + } + } + public static void onLine(String rtuAddr, String ip, Integer port, String protocolName, Short protocolVersion){ + RtuStatus vo = map.get(rtuAddr) ; + if(vo == null) { + vo = new RtuStatus(); + vo.onLine(rtuAddr, ip, port, protocolName, protocolVersion) ; + map.put(rtuAddr, vo); + }else { + vo.onLine(rtuAddr, ip, port, protocolName, protocolVersion) ; + } } public static void offLine(String rtuAddr){ -// StOnOffLine st = new StOnOffLine() ; -// st.rtuAddr = rtuAddr ; -// st.onOff_trueFalse = false ; - -// Address member = JgUnit.getInstance().getJgMembers().getDataMwMemberByRtuAddr(rtuAddr) ; -// if(member == null){ -// log.error("鍑洪敊锛屾湭鑳藉緱鍒板鐞哛TU锛堝湴鍧�涓�" + rtuAddr + "锛夌姸鎬佹暟鎹殑鏁版嵁涓棿浠讹紝鍙兘鏁版嵁涓棿浠舵湭鍚姩鎴栬劚绂荤殑闆嗙兢锛�"); -// }else{ -// log.info("閫氱煡鏁版嵁涓棿浠讹紙" + member.toString() + "锛夛紝RTU锛堝湴鍧�涓�" + rtuAddr + "锛夌绾匡紒"); -// new JgIoHandler().sendP2P(member, st); -// } + RtuStatus vo = map.get(rtuAddr) ; + if(vo == null) { + vo = new RtuStatus(); + vo.offLine(); + map.put(rtuAddr, vo); + }else { + vo.offLine(); + } } - public static void upData(String rtuAddr, Integer bufferLen){ -// StUpData st = new StUpData() ; -// st.rtuAddr = rtuAddr ; -// st.upBufferLen = bufferLen ; -// st.isReport = false ; - -// Address member = JgUnit.getInstance().getJgMembers().getDataMwMemberByRtuAddr(rtuAddr) ; -// if(member == null){ -// log.error("鍑洪敊锛屾湭鑳藉緱鍒板鐞哛TU锛堝湴鍧�涓�" + rtuAddr + "锛夌姸鎬佹暟鎹殑鏁版嵁涓棿浠讹紝鍙兘鏁版嵁涓棿浠舵湭鍚姩鎴栬劚绂荤殑闆嗙兢锛�"); -// }else{ -// log.info("閫氱煡鏁版嵁涓棿浠讹紙" + member.toString() + "锛夛紝RTU锛堝湴鍧�涓�" + rtuAddr + "锛変笂琛屾暟鎹紒"); -// new JgIoHandler().sendP2P(member, st); -// } + public static void upData(String rtuAddr, String code, String codeName, Integer bufferLen){ + RtuStatus vo = map.get(rtuAddr) ; + if(vo == null) { + vo = new RtuStatus(); + vo.upData(code, codeName, bufferLen); + map.put(rtuAddr, vo); + }else { + vo.upData(code, codeName, bufferLen); + } } - public static void upReport(String rtuAddr, Integer bufferLen){ -// StUpData st = new StUpData() ; -// st.rtuAddr = rtuAddr ; -// st.upBufferLen = bufferLen ; -// st.isReport = true ; - -// Address member = JgUnit.getInstance().getJgMembers().getDataMwMemberByRtuAddr(rtuAddr) ; -// if(member == null){ -// log.error("鍑洪敊锛屾湭鑳藉緱鍒板鐞哛TU锛堝湴鍧�涓�" + rtuAddr + "锛夌姸鎬佹暟鎹殑鏁版嵁涓棿浠讹紝鍙兘鏁版嵁涓棿浠舵湭鍚姩鎴栬劚绂荤殑闆嗙兢锛�"); -// }else{ -// log.info("閫氱煡鏁版嵁涓棿浠讹紙" + member.toString() + "锛夛紝RTU锛堝湴鍧�涓�" + rtuAddr + "锛変笂鎶ユ暟鎹紒"); -// new JgIoHandler().sendP2P(member, st); -// } + public static void upAutoReport(String rtuAddr, String code, String codeName, Integer bufferLen){ + RtuStatus vo = map.get(rtuAddr) ; + if(vo == null) { + vo = new RtuStatus(); + vo.upData(code, codeName, bufferLen); + map.put(rtuAddr, vo); + }else { + vo.upData(code, codeName, bufferLen); + } } - public static void downData(String rtuAddr, Integer bufferLen){ -// StDownData st = new StDownData() ; -// st.rtuAddr = rtuAddr ; -// st.downBufferLen = bufferLen ; - -// Address member = JgUnit.getInstance().getJgMembers().getDataMwMemberByRtuAddr(rtuAddr) ; -// if(member == null){ -// log.error("鍑洪敊锛屾湭鑳藉緱鍒板鐞哛TU锛堝湴鍧�涓�" + rtuAddr + "锛夌姸鎬佹暟鎹殑鏁版嵁涓棿浠讹紝鍙兘鏁版嵁涓棿浠舵湭鍚姩鎴栬劚绂荤殑闆嗙兢锛�"); -// }else{ -// log.info("閫氱煡鏁版嵁涓棿浠讹紙" + member.toString() + "锛夛紝RTU锛堝湴鍧�涓�" + rtuAddr + "锛変笅琛屾暟鎹紒"); -// new JgIoHandler().sendP2P(member, st); -// } + public static void downData(String rtuAddr, String code, String codeName, Integer bufferLen){ + RtuStatus vo = map.get(rtuAddr) ; + if(vo == null) { + vo = new RtuStatus(); + vo.downData(code, codeName, bufferLen); + map.put(rtuAddr, vo); + }else { + vo.downData(code, codeName, bufferLen); + } } - public static void commandSuccess(String rtuAddr){ -// StCommandResult st = new StCommandResult() ; -// st.rtuAddr = rtuAddr ; -// st.isSuccess = true ; - -// Address member = JgUnit.getInstance().getJgMembers().getDataMwMemberByRtuAddr(rtuAddr) ; -// if(member == null){ -// log.error("鍑洪敊锛屾湭鑳藉緱鍒板鐞哛TU锛堝湴鍧�涓�" + rtuAddr + "锛夌姸鎬佹暟鎹殑鏁版嵁涓棿浠讹紝鍙兘鏁版嵁涓棿浠舵湭鍚姩鎴栬劚绂荤殑闆嗙兢锛�"); -// }else{ -// log.info("閫氱煡鏁版嵁涓棿浠讹紙" + member.toString() + "锛夛紝RTU锛堝湴鍧�涓�" + rtuAddr + "锛夊懡浠ゆ垚鍔燂紒"); -// new JgIoHandler().sendP2P(member, st); -// } + public static void commandSuccess(String rtuAddr, String code, String codeName){ + RtuStatus vo = map.get(rtuAddr) ; + if(vo == null) { + vo = new RtuStatus(); + vo.commandSuccess(code, codeName); + map.put(rtuAddr, vo); + }else { + vo.commandSuccess(code, codeName); + } } - public static void commandFailure(String rtuAddr){ -// StCommandResult st = new StCommandResult() ; -// st.rtuAddr = rtuAddr ; -// st.isSuccess = false ; - -// Address member = JgUnit.getInstance().getJgMembers().getDataMwMemberByRtuAddr(rtuAddr) ; -// if(member == null){ -// log.error("鍑洪敊锛屾湭鑳藉緱鍒板鐞哛TU锛堝湴鍧�涓�" + rtuAddr + "锛夌姸鎬佹暟鎹殑鏁版嵁涓棿浠讹紝鍙兘鏁版嵁涓棿浠舵湭鍚姩鎴栬劚绂荤殑闆嗙兢锛�"); -// }else{ -// log.info("閫氱煡鏁版嵁涓棿浠讹紙" + member.toString() + "锛夛紝RTU锛堝湴鍧�涓�" + rtuAddr + "锛夊懡浠ゅけ璐ワ紒"); -// new JgIoHandler().sendP2P(member, st); -// } + public static void commandFailure(String rtuAddr, String code, String codeName){ + RtuStatus vo = map.get(rtuAddr) ; + if(vo == null) { + vo = new RtuStatus(); + vo.commandFailure(code, codeName); + map.put(rtuAddr, vo); + }else { + vo.commandFailure(code, codeName); + } } - + + /** + * 鍛戒护缁撴灉鏀跺埌浜嗭紝浣嗘湭鍦ㄧ紦瀛樺尮閰嶄笂涓嬭鐨勫懡浠わ紝璇存槑涓嬭缂撳瓨鍛戒护鍥犺秴鏃惰娓呴櫎锛岃繖璇存槑鏈変釜鍛戒护鐢卞け璐ュ彉鎴愬姛浜� + * @param rtuAddr + */ public static void commandFail2Success(String rtuAddr){ -// StCommandResult st = new StCommandResult() ; -// st.rtuAddr = rtuAddr ; -// st.fail2Success = true ; - -// Address member = JgUnit.getInstance().getJgMembers().getDataMwMemberByRtuAddr(rtuAddr) ; -// if(member == null){ -// log.error("鍑洪敊锛屾湭鑳藉緱鍒板鐞哛TU锛堝湴鍧�涓�" + rtuAddr + "锛夌姸鎬佹暟鎹殑鏁版嵁涓棿浠讹紝鍙兘鏁版嵁涓棿浠舵湭鍚姩鎴栬劚绂荤殑闆嗙兢锛�"); -// }else{ -// log.info("閫氱煡鏁版嵁涓棿浠讹紙" + member.toString() + "锛夛紝RTU锛堝湴鍧�涓�" + rtuAddr + "锛夊懡浠ょ敱澶辫触杞垚鍔燂紒"); -// new JgIoHandler().sendP2P(member, st); -// } + //鏆傛椂鏃犻�昏緫 + } + + /** + * 鏀跺埌浜嗘垚鍔熷紑闃�鎶ワ紙寮�闃�鑷姤锛屽紑闃�宸ヤ綔鎶ワ紝杩滅▼寮�闃�锛堟墽琛岋級搴旂瓟绛夛紝閮借涓洪榾闂ㄦ槸寮�鍚姸鎬侊紙杩欐椂涓婃姤鐨勬暟鎹腑闃�闂ㄧ姸鎬佸彲鑳芥槸鍏抽棴锛堝洜涓烘墦寮�闃�闂ㄩ渶瑕佹椂闂达級锛夛級 + * @param rtuAddr + */ + public static void valveOpen(String rtuAddr){ + RtuStatus vo = map.get(rtuAddr) ; + if(vo == null) { + vo = new RtuStatus(); + vo.valveOpen(); + map.put(rtuAddr, vo); + }else { + vo.valveOpen(); + } + } + + /** + * 鏀跺埌浜嗘垚鍔熷叧闃�鎶ワ紙鍏抽榾鑷姤锛岃繙绋嬪叧闃�锛堟墽琛岋級搴旂瓟绛夛紝閮借涓洪榾闂ㄦ槸鍏抽棴鐘舵�侊紙杩欐椂涓婃姤鐨勬暟鎹腑闃�闂ㄧ姸鎬佸彲鑳芥槸寮�鍚紙鍥犱负鍏抽棴闃�闂ㄩ渶瑕佹椂闂达級锛夛級 + * @param rtuAddr + */ + public static void valveClose(String rtuAddr){ + RtuStatus vo = map.get(rtuAddr) ; + if(vo == null) { + vo = new RtuStatus(); + vo.valveClose(); + map.put(rtuAddr, vo); + }else { + vo.valveClose(); + } } } -- Gitblit v1.8.0