pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/softUpgrade/state/UpgradeRtu.java
@@ -14,6 +14,8 @@ public class UpgradeRtu { @JSONField(serialize = false) public static final int STATE_OPEN = -2 ;//-1-éå¼ï¼æ³µå¼ï¼ä¸è½å级 @JSONField(serialize = false) public static final int STATE_OFFLINE = -1 ;//-1-离线 @JSONField(serialize = false) public static final int STATE_UNSTART = 0 ;//0-æªå¼å§ @@ -28,10 +30,12 @@ @JSONField(serialize = false) public static final int STATE_FAILOFFLINE = 5 ;//4-å级失败ï¼ç¦»çº¿ï¼ @JSONField(serialize = false) public static final int STATE_FAILOPEN = 6 ;//4-å级失败ï¼éå¼ï¼ @JSONField(serialize = false) public static final int RAMADDRADD = 0x200 ;//ç¨åºåå¨å åå¨åå¢é public String rtuAddr ; public int state ;// -1-离线ï¼0-æªå¼å§ï¼1-å级ä¸ï¼2-å级æåï¼3-å级失败ï¼1å æ»ï¼ï¼4-å级失败ï¼é1å æ»ï¼ï¼5-å级失败ï¼ç¦»çº¿ï¼ public int state ;// -1-离线ï¼0-æªå¼å§ï¼1-å级ä¸ï¼2-å级æåï¼3-å级失败ï¼1å æ»ï¼ï¼4-å级失败ï¼é1å æ»ï¼ï¼5-å级失败ï¼ç¦»çº¿ï¼ï¼6-å级失败ï¼éå¼ï¼ public int totalPackage ;// æ»å æ° public int currentPackage ;// å½åä¸ååçº§å æ° public int currentRamAddr ;// å½åä¸åå级å RTUåå¨å°å @@ -55,6 +59,8 @@ public static String getStateName(int state){ switch (state) { case STATE_OPEN: return "éå¼"; case STATE_OFFLINE: return "离线"; case STATE_UNSTART: @@ -69,6 +75,8 @@ return "å¤å æ»"; case STATE_FAILOFFLINE: return "离线失败"; case STATE_FAILOPEN: return "éå¼å¤±è´¥"; default: return "æªç¥"; } pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/softUpgrade/state/UpgradeState.java
@@ -20,6 +20,7 @@ public int dieOneTotal;//ææä¸å æ» public int dieMultiTotal;//ææå¤å æ» public int failOffTotal ;//ææç¦»çº¿å¤±è´¥ public int failOpenTotal ;//ææéå¼å¤±è´¥ public Boolean allOver ;//ææé½ç»æï¼true:æ¯ï¼false:å¦ï¼ @@ -38,6 +39,7 @@ this.dieOneTotal = 0; this.dieMultiTotal = 0; this.failOffTotal = 0; this.failOpenTotal = 0; this.allOver = false ; } @@ -54,6 +56,7 @@ sb.append(" \nä¸å æ»å¤±è´¥æ»æ°ï¼" + dieOneTotal) ; sb.append(" \nå¤å æ»å¤±è´¥æ»æ°ï¼" + dieMultiTotal) ; sb.append(" \nç¦»çº¿å¤±è´¥æ»æ°ï¼" + failOffTotal) ; sb.append(" \néå¼å¤±è´¥æ»æ°ï¼" + failOpenTotal) ; sb.append(" \nå ¨ç»æï¼" + allOver) ; return sb.toString() ; } pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/Server.java
@@ -336,6 +336,9 @@ //RTUè¿ç¨å级模å UpgradeUnitConfigVo ugVo = new UpgradeUnitConfigVo(); ugVo.enable = conf.getSetAttrBoolean(doc, "config.upgrade", "enable", null, null) ; ugVo.openNoUpgrade = conf.getSetAttrBoolean(doc, "config.upgrade", "openNoUpgrade", null, null) ; ugVo.lastOpenMaxGoOn = conf.getSetAttrPlusInt(doc, "config.upgrade", "lastOpenMaxGoOn", null, 5, 360000, null); ugVo.lastOpenMaxGoOn = ugVo.lastOpenMaxGoOn * 1000 ;//åææ¯«ç§ ugVo.noOneRtuUpgradeMaxDuration = conf.getSetAttrPlusInt(doc, "config.upgrade", "noOneRtuUpgradeMaxDuration", null, 5, 360000, null); ugVo.noOneRtuUpgradeMaxDuration = ugVo.noOneRtuUpgradeMaxDuration * 1000 ;//åææ¯«ç§ ugVo.runningAndIdleDuration = conf.getSetAttrPlusInt(doc, "config.upgrade", "runningAndIdleDuration", null, 5, 360000, null); pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeManager.java
@@ -25,13 +25,15 @@ private static final UpgradeManager INSTANCE = new UpgradeManager(); private Boolean openNoUpgrade ;//éå¼ï¼æ³µå¼ï¼ä¸æ§è¡å级 private Integer lastOpenMaxGoOn ;//éå¼ï¼æ³µå¼ï¼ç¶æè®¾ç½®ä»¥æ¥æç»æé¿æ¶é´ï¼ç§éï¼ï¼è¶ è¿è¿ä¸ªæ¶é´è®¤ä¸ºç¶ææ æï¼è¿ä¸ªæ¶é¿åå³äºå·¥ä½æ¥é´éï¼ private Integer failTryTimes ;//å级失败åï¼éæ°å¿è¯å级次æ°ï¼0表示ä¸éæ°å¿è¯å级 private Integer ugMaxRtuSameTime ;//åæ¶å级RTUæå¤§ä¸ªæ° private Integer notifyTimesAfterOver; //åçº§ç»æåï¼ååwebæå¡ç³»ç»éç¥ç¶æçæ¬¡æ° private int nowNotifyTimesAfterOver; //åçº§ç»æåï¼ååwebæå¡ç³»ç»éç¥ç¶æçæ¬¡æ° private UpgradeTask task ;//åçº§ä»»å¡ private boolean monitorFirst = true ;//æ¯å¦æ¯ç¬¬ä¸æ¬¡çè§ private boolean monitorFirst ;//æ¯å¦æ¯ç¬¬ä¸æ¬¡çè§ private UpgradeManager(){ monitorFirst = true ; @@ -45,6 +47,8 @@ * åå§åé ç½®ä¿¡æ¯ */ public void initOption(UpgradeUnitConfigVo configVo) { this.openNoUpgrade = configVo.openNoUpgrade; this.lastOpenMaxGoOn = configVo.lastOpenMaxGoOn; this.failTryTimes = configVo.failTryTimes; this.ugMaxRtuSameTime = configVo.ugMaxRtuAtOnce; this.notifyTimesAfterOver = configVo.notifyTimesAfterOver; @@ -65,9 +69,10 @@ this.task.forceOver(); } this.task = new UpgradeTask(); this.task.initOption(this.failTryTimes, this.ugMaxRtuSameTime); this.task.initOption(this.lastOpenMaxGoOn, this.failTryTimes, this.ugMaxRtuSameTime); this.task.setTask(vo); this.nowNotifyTimesAfterOver = 0 ; this.monitorFirst = true ; log.info("======================================================") ; log.info("= =") ; log.info("=设置äºå级任å¡ï¼æ¶åRTU" + vo.rtuAddrList.size() + "å° =") ; @@ -195,6 +200,12 @@ this.stop() ; }else{ if(!this.task.taskIsOver){ if(this.openNoUpgrade != null && this.openNoUpgrade.booleanValue() && this.monitorFirst){ //ç¬¬ä¸æ¬¡è¿å ¥ï¼è¿è¡éå¼ä¸å级å¤ç this.task.openNoUpgrade() ; } this.nowNotifyTimesAfterOver = 0 ; //åçº§ä»»å¡æªå®æ //å·¥ä½1ï¼å¤ææ¯å¦æ ä»»ä½ä¸ä¸ªRTUè¿è¡è¿å级ï¼å¹¶ä¸è¾¾å°æ¶éï¼å认为å½åå级任å¡å®æ @@ -309,6 +320,7 @@ return true ; } /** * åçº§ç¶æéç¥ */ pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeTask.java
@@ -1,12 +1,14 @@ package com.dy.rtuMw.server.upgrade; import com.alibaba.fastjson2.annotation.JSONField; import com.dy.common.mw.protocol.rtuState.RtuStatus; import com.dy.common.softUpgrade.parse.HexFileParse; import com.dy.common.softUpgrade.state.UpgradeRtu; import com.dy.common.softUpgrade.state.UpgradeState; import com.dy.common.softUpgrade.state.UpgradeTaskVo; import com.dy.common.util.Callback; import com.dy.common.util.DateTime; import com.dy.rtuMw.server.forTcp.RtuStatusDealer; import lombok.Data; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -32,6 +34,8 @@ protected Integer failTryTimes ;//å级失败åï¼éæ°å¿è¯å级次æ°ï¼0表示ä¸éæ°å¿è¯å级 @JSONField(serialize = false) protected Integer ugMaxRtuSameTime ;//åæ¶å级RTUæå¤§ä¸ªæ° @JSONField(serialize = false) private Integer lastOpenMaxGoOn ;//éå¼ï¼æ³µå¼ï¼ç¶æè®¾ç½®ä»¥æ¥æç»æé¿æ¶é´ï¼ç§éï¼ï¼è¶ è¿è¿ä¸ªæ¶é´è®¤ä¸ºç¶ææ æï¼è¿ä¸ªæ¶é¿åå³äºå·¥ä½æ¥é´éï¼ public String setupDt ;//设置æ¶é´(yyyy-mm-dd HH:MM:SS) @JSONField(serialize = false) @@ -60,7 +64,8 @@ /** * åå§åé ç½®ä¿¡æ¯ */ public void initOption(Integer failTryTimes, Integer ugMaxRtuSameTime) { public void initOption(Integer lastOpenMaxGoOn, Integer failTryTimes, Integer ugMaxRtuSameTime) { this.lastOpenMaxGoOn = lastOpenMaxGoOn; this.failTryTimes = failTryTimes; this.ugMaxRtuSameTime = ugMaxRtuSameTime; } @@ -222,6 +227,9 @@ }else if(info.state == UpgradeRtu.STATE_FAILOFFLINE) { state.failTotal++; state.failOffTotal++; }else if(info.state == UpgradeRtu.STATE_FAILOPEN) { state.failTotal++; state.failOpenTotal++; } if(info.isOver){ state.overTotal++; @@ -282,6 +290,29 @@ /////////////////////////////////////////////////////////// /** * éå¼ï¼æ³µå¼ï¼ä¸å级å¤ç */ protected void openNoUpgrade(){ if(this.upgradeRtus != null && this.upgradeRtus.size() > 0){ Map<String, RtuStatus> rsAllMap = RtuStatusDealer.allStatus() ; Long now = System.currentTimeMillis() ; this.upgradeRtus.values().stream().forEach(a -> { RtuStatus rs = rsAllMap.get(a.rtuAddr) ; if(rs != null && rs.valveOpenTrueCloseFalse != null && rs.valveOpenTrueCloseFalse.booleanValue() == true && rs.valveStatusLastTimeStamp != null){ //æç¶æï¼å¹¶ä¸æ¯éå¼ï¼æ³µå¼ï¼ Long gap = now - rs.valveStatusLastTimeStamp ; if(gap < this.lastOpenMaxGoOn){ //è¿æ¶é纳é鍿å¼ç¶æä¸è½å级 a.isOver = true ; a.state = UpgradeRtu.STATE_FAILOPEN ; } } }); } } /** * 夿æ¯å¦æ²¡ç¨ä»»ä½ä¸ä¸ªRTUè¿è¡è¿å级ï¼èä¸è¶ è¿äºæ¶é * @return -1:æ ä¸RTUå级ä¸è¶ æ¶ï¼0ï¼æ RTUåçº§ä½æªè¶ æ¶çå¾ ï¼1æRTUå级æ£å¸¸æ§è¡ */ pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeUnitConfigVo.java
@@ -9,6 +9,8 @@ public Boolean showStartInfo ; public Boolean enable ;//æ¨¡åæ¯å¦å¯å¨ public Boolean openNoUpgrade ;//éå¼ï¼æ³µå¼ï¼ä¸æ§è¡å级 public Integer lastOpenMaxGoOn; //éå¼ï¼æ³µå¼ï¼ç¶æè®¾ç½®ä»¥æ¥æç»æé¿æ¶é´ï¼ç§éï¼ï¼è¶ è¿è¿ä¸ªæ¶é´è®¤ä¸ºç¶ææ æï¼è¿ä¸ªæ¶é¿åå³äºå·¥ä½æ¥é´éï¼ public Integer noOneRtuUpgradeMaxDuration ;//å级任å¡è®¾ç½®åï¼æ²¡æè®¾å¤å级æå¤§æ¶é¿ï¼æ¯«ç§ï¼ï¼è¶ è¿è¿ä¸ªæ¶é¿ï¼è®¤ä¸ºå级任å¡å®æï¼åå¼èå´æ¯5åé~60åé public Integer runningAndIdleDuration ;//rtuå级å¯å¨åè¿å ¥å级ä¸ç¶æï¼ä½æç§æ åµä¸RTUä¸åéä¿¡äºï¼ä¸ç´å¤äºçå¾ ç¶æï¼çå¾ è¾¾å°ä¸å®æ¶é¿ï¼ç§ï¼è®¤ä¸ºå级失败ï¼ä¸å æ»æå¤å æ»ï¼ï¼åå¼èå´æ¯5åé~60åé public Integer failTryTimes ;//å级失败åï¼éå¯¹çæ¯å¨çº¿è¿è¡äºå级ä¸åå½ä»¤ï¼ï¼éæ°å¿è¯å级次æ°ï¼0表示ä¸éæ°å¿è¯å级 @@ -19,6 +21,8 @@ public UpgradeUnitConfigVo(){ this.enable = false ; this.openNoUpgrade = true ; this.lastOpenMaxGoOn = 30 * 60 * 1000 ; this.noOneRtuUpgradeMaxDuration = 10 * 60 * 1000 ; this.runningAndIdleDuration = 10 * 60 * 1000 ; this.failTryTimes = 0 ; pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config(spɳÅÌ).xml
@@ -56,6 +56,8 @@ <!-- RTU 软件å级 enable: æ¨¡åæ¯å¦å¯å¨ openNoUpgrade: éå¼ï¼æ³µå¼ï¼ä¸æ§è¡å级 lastOpenMaxGoOn: éå¼ï¼æ³µå¼ï¼ç¶æè®¾ç½®ä»¥æ¥æç»æé¿æ¶é´ï¼ç§éï¼ï¼è¶ è¿è¿ä¸ªæ¶é´è®¤ä¸ºç¶ææ æï¼è¿ä¸ªæ¶é¿åå³äºå·¥ä½æ¥é´éï¼ noOneRtuUpgradeMaxDurationï¼å级任å¡è®¾ç½®åï¼æ ä¸è®¾å¤å级æå¤§æ¶é¿ï¼ç§ï¼ï¼è¶ è¿è¿ä¸ªæ¶é¿ï¼è®¤ä¸ºå级任å¡å®æï¼åå¼èå´æ¯5åé~60åé runningAndIdleDurationï¼rtuå级å¯å¨åè¿å ¥å级ä¸ç¶æï¼ä½æç§æ åµä¸RTUä¸åéä¿¡äºï¼ä¸ç´å¤äºçå¾ ç¶æï¼çå¾ è¾¾å°ä¸å®æ¶é¿ï¼ç§ï¼ä¸è¬ä¸noOneRtuUpgradeMaxDurationç¸çï¼è®¤ä¸ºå级失败ï¼ä¸å æ»æå¤å æ»ï¼ï¼åå¼èå´æ¯5åé~60åé failTryTimesï¼å级失败åï¼éå¯¹çæ¯å¨çº¿è¿è¡äºå级ä¸åå½ä»¤ï¼ï¼éæ°å¿è¯å级次æ°ï¼å½è®¾ç½®ä¸º0æ¶è¡¨ç¤ºä¸éæ°å¿è¯å级 @@ -65,6 +67,8 @@ notifyTimesAfterOver: åçº§ç»æåï¼ååwebæå¡ç³»ç»éç¥ç¶æçæ¬¡æ° --> <upgrade enable="true" openNoUpgrade="true" lastOpenMaxGoOn="1800" noOneRtuUpgradeMaxDuration="1200" runningAndIdleDuration="1200" failTryTimes="2" pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config(test²âÊÔ).xml
@@ -56,6 +56,8 @@ <!-- RTU 软件å级 enable: æ¨¡åæ¯å¦å¯å¨ openNoUpgrade: éå¼ï¼æ³µå¼ï¼ä¸æ§è¡å级 lastOpenMaxGoOn: éå¼ï¼æ³µå¼ï¼ç¶æè®¾ç½®ä»¥æ¥æç»æé¿æ¶é´ï¼ç§éï¼ï¼è¶ è¿è¿ä¸ªæ¶é´è®¤ä¸ºç¶ææ æï¼è¿ä¸ªæ¶é¿åå³äºå·¥ä½æ¥é´éï¼ noOneRtuUpgradeMaxDurationï¼å级任å¡è®¾ç½®åï¼æ ä¸è®¾å¤å级æå¤§æ¶é¿ï¼ç§ï¼ï¼è¶ è¿è¿ä¸ªæ¶é¿ï¼è®¤ä¸ºå级任å¡å®æï¼åå¼èå´æ¯5åé~60åé runningAndIdleDurationï¼rtuå级å¯å¨åè¿å ¥å级ä¸ç¶æï¼ä½æç§æ åµä¸RTUä¸åéä¿¡äºï¼ä¸ç´å¤äºçå¾ ç¶æï¼çå¾ è¾¾å°ä¸å®æ¶é¿ï¼ç§ï¼ä¸è¬ä¸noOneRtuUpgradeMaxDurationç¸çï¼è®¤ä¸ºå级失败ï¼ä¸å æ»æå¤å æ»ï¼ï¼åå¼èå´æ¯5åé~60åé failTryTimesï¼å级失败åï¼éå¯¹çæ¯å¨çº¿è¿è¡äºå级ä¸åå½ä»¤ï¼ï¼éæ°å¿è¯å级次æ°ï¼å½è®¾ç½®ä¸º0æ¶è¡¨ç¤ºä¸éæ°å¿è¯å级 @@ -65,6 +67,8 @@ notifyTimesAfterOver: åçº§ç»æåï¼ååwebæå¡ç³»ç»éç¥ç¶æçæ¬¡æ° --> <upgrade enable="true" openNoUpgrade="true" lastOpenMaxGoOn="1800" noOneRtuUpgradeMaxDuration="1200" runningAndIdleDuration="1200" failTryTimes="2" pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config(ymԪı).xml
@@ -56,6 +56,8 @@ <!-- RTU 软件å级 enable: æ¨¡åæ¯å¦å¯å¨ openNoUpgrade: éå¼ï¼æ³µå¼ï¼ä¸æ§è¡å级 lastOpenMaxGoOn: éå¼ï¼æ³µå¼ï¼ç¶æè®¾ç½®ä»¥æ¥æç»æé¿æ¶é´ï¼ç§éï¼ï¼è¶ è¿è¿ä¸ªæ¶é´è®¤ä¸ºç¶ææ æï¼è¿ä¸ªæ¶é¿åå³äºå·¥ä½æ¥é´éï¼ noOneRtuUpgradeMaxDurationï¼å级任å¡è®¾ç½®åï¼æ ä¸è®¾å¤å级æå¤§æ¶é¿ï¼ç§ï¼ï¼è¶ è¿è¿ä¸ªæ¶é¿ï¼è®¤ä¸ºå级任å¡å®æï¼åå¼èå´æ¯5åé~60åé runningAndIdleDurationï¼rtuå级å¯å¨åè¿å ¥å级ä¸ç¶æï¼ä½æç§æ åµä¸RTUä¸åéä¿¡äºï¼ä¸ç´å¤äºçå¾ ç¶æï¼çå¾ è¾¾å°ä¸å®æ¶é¿ï¼ç§ï¼ä¸è¬ä¸noOneRtuUpgradeMaxDurationç¸çï¼è®¤ä¸ºå级失败ï¼ä¸å æ»æå¤å æ»ï¼ï¼åå¼èå´æ¯5åé~60åé failTryTimesï¼å级失败åï¼éå¯¹çæ¯å¨çº¿è¿è¡äºå级ä¸åå½ä»¤ï¼ï¼éæ°å¿è¯å级次æ°ï¼å½è®¾ç½®ä¸º0æ¶è¡¨ç¤ºä¸éæ°å¿è¯å级 @@ -65,6 +67,8 @@ notifyTimesAfterOver: åçº§ç»æåï¼ååwebæå¡ç³»ç»éç¥ç¶æçæ¬¡æ° --> <upgrade enable="true" openNoUpgrade="true" lastOpenMaxGoOn="1800" noOneRtuUpgradeMaxDuration="1200" runningAndIdleDuration="1200" failTryTimes="2" pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml
@@ -56,6 +56,8 @@ <!-- RTU 软件å级 enable: æ¨¡åæ¯å¦å¯å¨ openNoUpgrade: éå¼ï¼æ³µå¼ï¼ä¸æ§è¡å级 lastOpenMaxGoOn: éå¼ï¼æ³µå¼ï¼ç¶æè®¾ç½®ä»¥æ¥æç»æé¿æ¶é´ï¼ç§éï¼ï¼è¶ è¿è¿ä¸ªæ¶é´è®¤ä¸ºç¶ææ æï¼è¿ä¸ªæ¶é¿åå³äºå·¥ä½æ¥é´éï¼ noOneRtuUpgradeMaxDurationï¼å级任å¡è®¾ç½®åï¼æ ä¸è®¾å¤å级æå¤§æ¶é¿ï¼ç§ï¼ï¼è¶ è¿è¿ä¸ªæ¶é¿ï¼è®¤ä¸ºå级任å¡å®æï¼åå¼èå´æ¯5åé~60åé runningAndIdleDurationï¼rtuå级å¯å¨åè¿å ¥å级ä¸ç¶æï¼ä½æç§æ åµä¸RTUä¸åéä¿¡äºï¼ä¸ç´å¤äºçå¾ ç¶æï¼çå¾ è¾¾å°ä¸å®æ¶é¿ï¼ç§ï¼ä¸è¬ä¸noOneRtuUpgradeMaxDurationç¸çï¼è®¤ä¸ºå级失败ï¼ä¸å æ»æå¤å æ»ï¼ï¼åå¼èå´æ¯5åé~60åé failTryTimesï¼å级失败åï¼éå¯¹çæ¯å¨çº¿è¿è¡äºå级ä¸åå½ä»¤ï¼ï¼éæ°å¿è¯å级次æ°ï¼å½è®¾ç½®ä¸º0æ¶è¡¨ç¤ºä¸éæ°å¿è¯å级 @@ -65,6 +67,8 @@ notifyTimesAfterOver: åçº§ç»æåï¼ååwebæå¡ç³»ç»éç¥ç¶æçæ¬¡æ° --> <upgrade enable="true" openNoUpgrade="true" lastOpenMaxGoOn="1800" noOneRtuUpgradeMaxDuration="1200" runningAndIdleDuration="1200" failTryTimes="2" @@ -73,6 +77,8 @@ notifyStateInterval="2" notifyTimesAfterOver="1" /> <!-- æ¯ææ¨¡å ç工使¶é¿çº¿ç¨æ± ï¼çº¿ç¨è´è´£ç¨æ¶è¾ççå·¥ä½ä»»å¡ pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/rtuUpgrage/RtuUpgradeResSv.java
@@ -87,7 +87,8 @@ ok = rtu.state == UpgradeRtu.STATE_OFFLINE || rtu.state == UpgradeRtu.STATE_FAILONE || rtu.state == UpgradeRtu.STATE_FAIL || rtu.state == UpgradeRtu.STATE_FAILOFFLINE; || rtu.state == UpgradeRtu.STATE_FAILOFFLINE || rtu.state == UpgradeRtu.STATE_FAILOPEN; } } if(qvoRtuAddr != null && !qvoRtuAddr.trim().equals("")){ @@ -117,6 +118,11 @@ vo.rtuAddr = rtu.rtuAddr ; vo.result = "离线" ; list.add(vo); }else if(rtu.state == UpgradeRtu.STATE_FAILOPEN){ VoUgRtuResult vo = new VoUgRtuResult() ; vo.rtuAddr = rtu.rtuAddr ; vo.result = "éå¼" ; list.add(vo); }else if(rtu.state == UpgradeRtu.STATE_FAILONE){ VoUgRtuResult vo = new VoUgRtuResult() ; vo.rtuAddr = rtu.rtuAddr ;