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