From 7c94f000ca94776eb62e8296bf4f42473085f242 Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期六, 23 十一月 2024 13:59:22 +0800 Subject: [PATCH] 改一下 --- pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeManager.java | 190 +++++++++++++++++++++++++---------------------- 1 files changed, 102 insertions(+), 88 deletions(-) diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeManager.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeManager.java index 540e811..46c1b7f 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeManager.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeManager.java @@ -7,19 +7,19 @@ import com.dy.common.springUtil.SpringContextUtil; import com.dy.common.util.Callback; import com.dy.common.util.DateTime; -import com.dy.common.util.ThreadJob; +import com.dy.common.util.TimerTaskJob; import com.dy.rtuMw.web.webRequest.WebRequestDeal; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; - import java.util.List; /** - * @Author: liurunyu - * @Date: 2024/11/4 16:03 + * 鍗囩骇绠$悊绫� + * @Author liurunyu + * @Date 2024/11/4 16:03 * @Description */ -public class UpgradeManager extends ThreadJob implements Callback { +public class UpgradeManager extends TimerTaskJob implements Callback { private static final Logger log = LogManager.getLogger(UpgradeManager.class.getName()); @@ -29,8 +29,11 @@ private Integer ugMaxRtuSameTime ;//鍚屾椂鍗囩骇RTU鏈�澶т釜鏁� private UpgradeTask task ;//鍗囩骇浠诲姟 + private boolean monitorFirst = true ;//鏄惁鏄涓�娆$洃瑙� - private UpgradeManager(){} + private UpgradeManager(){ + monitorFirst = true ; + } public static UpgradeManager getInstance() { return UpgradeManager.INSTANCE; @@ -47,25 +50,40 @@ /** * 璁剧疆鍗囩骇浠诲姟 * @param vo UpgradeTaskVo 鍗囩骇浠诲姟瀵硅薄 - * @throws Exception + * @throws Exception 寮傚父 */ public void setUpgradeTask(UpgradeTaskVo vo) throws Exception { if(this.task != null && !this.task.taskIsOver){ throw new Exception("褰撳墠瀛樺湪鍗囩骇浠诲姟锛岃绛夊緟褰撳墠浠诲姟鎵ц瀹屾垨寮哄埗缁撴潫褰撳墠浠诲姟"); }else { - this.task.forceOver(); - this.task = new UpgradeTask(); - this.task.initOption(this.failTryTimes, this.ugMaxRtuSameTime); - this.task.setTask(vo); - this.start(this); + Exception ex = null ; + try{ + if(this.task != null){ + this.task.forceOver(); + } + this.task = new UpgradeTask(); + this.task.initOption(this.failTryTimes, this.ugMaxRtuSameTime); + this.task.setTask(vo); + }catch (Exception e){ + ex = e ; + }finally { + if(ex != null){ + this.task = null ; + throw ex ; + }else{ + this.start(1000L, (long) UpgradeUnit.confVo.notifyStateInterval, this); + } + } } } /** - * 缁撴潫褰撳墠鍗囩骇浠诲姟 - * @throws Exception + * 寮哄埗缁撴潫褰撳墠鍗囩骇浠诲姟锛� + * 姝ゅ姛鑳藉彲鑳戒笉浼氬紑鏀惧嚭鍘伙紝 + * 鍥犱负寮哄埗缁撴潫鍗囩骇浠诲姟锛屽涓�涓湭鍗囩骇瀹屾垚鐨凴TU灏变細鍗℃锛� + * 鎵�浠ュ綋寮哄埗缁撴潫鍗囩骇浠诲姟锛屼唬鐮侀�昏緫骞舵病鏈夊己鍒剁粨鏋淩TU鍗囩骇杩囩▼锛屽鏋滃崌绾ц繃绋嬩篃寮哄埗鍋滄锛岄偅涔圧TU鐪熶細鍗℃ */ - public void overUpgradeTask() throws Exception { + public void forceOverUpgradeTask() { if(this.task != null){ this.stop(); this.task.forceOver(); @@ -75,11 +93,11 @@ /** * RTU鏈変笂琛屾暟鎹簡锛岃Е鍙戜笅鍙戝崌绾ф暟鎹� - * @param rtuAddr - * @param code - * @param protocolName - * @param protocolVersion - * @param callbackCom + * @param rtuAddr 鎺у埗鍣≧TU鍦板潃 + * @param code 涓婅鏁版嵁鍔熻兘鐮� + * @param protocolName 涓婅鏁版嵁瀵瑰簲鐨勫崗璁悕绉� + * @param protocolVersion 涓婅鏁版嵁瀵瑰簲鐨勫崗璁増鏈彿 + * @param callbackCom 鍥炶皟鍑芥暟锛屽鐞嗕笅琛屽懡浠� */ public void trigger(String rtuAddr, String code, String protocolName, Short protocolVersion, Callback callbackCom){ if(task != null && !task.taskIsOver){ @@ -94,7 +112,7 @@ //////////////////////////////////////////////////// /** * 褰撳墠鍗囩骇鐘舵�� - * @return + * @return 褰撳墠鍗囩骇鐘舵�� */ public UpgradeState currentUpgradeState() { if(task != null){ @@ -106,9 +124,10 @@ /** * Rtu鍗囩骇淇℃伅 - * @param rtuAddr - * @return + * @param rtuAddr 鎺у埗鍣≧TU鍦板潃 + * @return 鎺у埗鍣≧TU鍗囩骇鐘舵�� */ + @SuppressWarnings("unused") public UpgradeRtu upgradeRtuInfo(String rtuAddr){ if(task != null){ return task.upgradeInfos(rtuAddr) ; @@ -119,9 +138,10 @@ /** * Rtu鍗囩骇淇℃伅 - * @param rtuAddrList - * @return + * @param rtuAddrList 鎺у埗鍣ㄥ湴鍧�鍒楄〃 + * @return 鎸囧畾鍒楄〃涓殑鎺у埗鍣≧TU鍗囩骇鐘舵�� */ + @SuppressWarnings("unused") public List<UpgradeRtu> upgradeRtuInfos(List<String> rtuAddrList){ if(task != null){ return task.upgradeInfos(rtuAddrList) ; @@ -132,8 +152,8 @@ /** - * Rtu鍗囩骇淇℃伅 - * @return + * 鎵�鏈塕tu鍗囩骇淇℃伅 + * @return 鎵�鏈塕tu鍗囩骇淇℃伅 */ public List<UpgradeRtu> upgradeRtuInfoAll(){ if(task != null){ @@ -150,70 +170,65 @@ // 缁熻鐘舵�� + 鐘舵�侀�氱煡 // //////////////////////////////////////////////////// - @Override - public Object execute() throws Exception { - boolean first = true ; - while (true){ - if(this.isStop()){ - break ; - } - if(first){ - try{ - //棣栨鍚姩锛屽仠1绉� - Thread.sleep(1000L); - }catch (Exception e){ - } - }else{ - try{ - //鍋淴姣 - Thread.sleep(UpgradeUnit.confVo.notifyStateInterval); - }catch (Exception e){ - } - } - if(this.task == null - || this.task.taskVo == null - || this.task.taskVo.rtuAddrList == null - || this.task.taskVo.rtuAddrList.size() == 0){ - //浠诲姟涓虹┖ - break ; - }else{ - if(!this.task.taskIsOver){ - //鍗囩骇浠诲姟鏈畬鎴� - //宸ヤ綔1锛氱粺璁″綋鍓嶆鍦ㄥ崌绾х殑RTU鏁伴噺锛屼负鍙楅檺鍚屾椂鍗囩骇鏁伴噺鍋氬噯澶� - this.task.statisticsRunningRtuCount() ; - - //宸ヤ綔2锛氱粺璁¢渶瑕佸崌绾т絾褰撳墠绂荤嚎RTU鐨勬儏鍐� - this.task.statisticsOffRtuCountAndSet() ; - - //宸ヤ綔3锛氱粺璁℃槸鍚﹀叏閮ㄥ崌绾у畬鎴� - this.task.taskIsOver = this.task.statisticsIsAllOver() ; - - if(this.task.taskIsOver){ - if(!this.task.taskOverType.equals(UpgradeTask.TaskOverType_Force)){ - //浠诲姟涓嶆槸寮哄埗缁撴潫鐨� - this.task.taskOverType = UpgradeTask.TaskOverType_Natural ;//浠诲姟瀹屾垚鏂瑰紡锛堣嚜鐒讹紝寮哄埗锛� - this.task.taskOverDt = DateTime.yyyy_MM_dd_HH_mm_ss() ;//浠诲姟瀹屾垚鏃堕棿(yyyy-mm-dd HH:MM:SS) - } - //浠诲姟瀹屾垚锛屾墽琛屾渶鍚庝竴娆″崌绾х姸鎬侀�氱煡 - //宸ヤ綔4锛氬崌绾х姸鎬侀�氱煡 - if(!first){ - this.notifyUpgradeStatus() ; - } - }else{ - //浠诲姟鏈畬鎴愶紝缁х画鎵ц鍗囩骇鐘舵�侀�氱煡 - //宸ヤ綔4锛� 鍗囩骇鐘舵�侀�氱煡 - if(!first){ - this.notifyUpgradeStatus() ; - } - } - }else{ + public Object execute() { + if(this.task == null + || this.task.taskVo == null + || this.task.taskVo.rtuAddrList == null + || this.task.taskVo.rtuAddrList.size() == 0){ + //浠诲姟涓虹┖ + this.stop() ; + }else{ + if(!this.task.taskIsOver){ + //鍗囩骇浠诲姟鏈畬鎴� + //宸ヤ綔1锛氬垽鏂槸鍚︽棤浠讳綍涓�涓猂TU杩涜杩囧崌绾э紝骞朵笖杈惧埌鏃堕檺锛屽垯璁や负褰撳墠鍗囩骇浠诲姟瀹屾垚 + //-1:鏃犱竴RTU鍗囩骇涓旇秴鏃讹紝0锛氭棤RTU鍗囩骇浣嗘湭瓒呮椂绛夊緟锛�1鏈塕TU鍗囩骇姝e父鎵ц + int temp = 1 ; + //int temp = this.task.countNoOneRtuUpgradeInDuration() ; + if(temp == -1){ + this.task.taskIsOver = true ; //浠诲姟宸茬粡瀹屾垚 this.stop(); + }else if(temp == 1){ + //宸ヤ綔2锛氱粺璁″綋鍓嶆鍦ㄥ崌绾х殑RTU鏁伴噺锛屼负鍚屾椂鍗囩骇鏁伴噺闄愬埗鍋氬噯澶� + this.task.countRunningRtuCount() ; + + //宸ヤ綔3锛氱粺璁¢渶瑕佸崌绾т絾褰撳墠绂荤嚎RTU鐨勬儏鍐碉紝瓒呰繃鏃堕檺鐨勮澶囦负鍗囩骇瀹屾垚 + //this.task.countOffRtuAndSetIfOver() ; + + //宸ヤ綔4锛氱粺璁℃槸鍚﹀叏閮ㄥ崌绾у畬鎴� + //this.task.taskIsOver = this.task.countIsAllOver() ; + }else if(temp == 0){ + //涓嶄綔涓� } + if(this.task.taskIsOver){ + if(!this.task.taskOverType.equals(UpgradeTask.TaskOverType_Force)){ + //浠诲姟涓嶆槸寮哄埗缁撴潫鐨� + this.task.taskOverType = UpgradeTask.TaskOverType_Natural ;//浠诲姟瀹屾垚鏂瑰紡锛堣嚜鐒讹紝寮哄埗锛� + this.task.taskOverDt = DateTime.yyyy_MM_dd_HH_mm_ss() ;//浠诲姟瀹屾垚鏃堕棿(yyyy-mm-dd HH:MM:SS) + } + //浠诲姟瀹屾垚锛屾墽琛屾渶鍚庝竴娆″崌绾х姸鎬侀�氱煡 + //宸ヤ綔5锛氬崌绾х姸鎬侀�氱煡 + //if(!first){ + // this.notifyUpgradeStatus() ; + //} + }else{ + //浠诲姟鏈畬鎴愶紝缁х画鎵ц鍗囩骇鐘舵�侀�氱煡 + //宸ヤ綔5锛� 鍗囩骇鐘舵�侀�氱煡 + //if(!first){ + // this.notifyUpgradeStatus() ; + //} + } + //宸ヤ綔5锛氬崌绾х姸鎬侀�氱煡 + if(!this.monitorFirst){ + this.notifyUpgradeStatus() ; + } + }else{ + //浠诲姟宸茬粡瀹屾垚 + this.stop(); } - if(first){ - first = false ; - } + } + if(this.monitorFirst){ + this.monitorFirst = false ; } return true ; } @@ -241,7 +256,6 @@ @Override public void call(Object obj) { //绾跨▼宸ヤ綔鎵ц瀹屼簡锛宱bj = Boolean(true) - this.thread = null ;//璧嬪�间负null锛屼娇绾跨▼瀵硅薄琚瀮鍦惧洖鏀跺櫒鍥炴敹 } @Override public void call(Object... objs) { -- Gitblit v1.8.0