From 664eb6bc8536b7498a6eb92b84d900e2cbbc4fb5 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期四, 28 十一月 2024 09:04:40 +0800
Subject: [PATCH] 修改一包死多包死与升级失败统计的逻辑bug

---
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeManager.java |  213 ++++++++++++++++++++++++++++------------------------
 1 files changed, 115 insertions(+), 98 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 c2e0801..cf4d386 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,7 +50,7 @@
     /**
      * 璁剧疆鍗囩骇浠诲姟
      * @param vo UpgradeTaskVo 鍗囩骇浠诲姟瀵硅薄
-     * @throws Exception
+     * @throws Exception 寮傚父
      */
     public void setUpgradeTask(UpgradeTaskVo vo) throws Exception {
         if(this.task != null && !this.task.taskIsOver){
@@ -61,6 +64,11 @@
                 this.task = new UpgradeTask();
                 this.task.initOption(this.failTryTimes, this.ugMaxRtuSameTime);
                 this.task.setTask(vo);
+                log.info("======================================================") ;
+                log.info("=                                                    =") ;
+                log.info("=璁剧疆浜嗗崌绾т换鍔★紝娑夊強RTU" + vo.rtuAddrList.size() + "鍙�                            =") ;
+                log.info("=                                                    =") ;
+                log.info("======================================================") ;
             }catch (Exception e){
                 ex = e ;
             }finally {
@@ -68,7 +76,7 @@
                     this.task = null ;
                     throw ex ;
                 }else{
-                    this.start(this);
+                    this.start(1000L, (long) UpgradeUnit.confVo.notifyStateInterval, this);
                 }
             }
         }
@@ -79,9 +87,8 @@
      * 姝ゅ姛鑳藉彲鑳戒笉浼氬紑鏀惧嚭鍘伙紝
      * 鍥犱负寮哄埗缁撴潫鍗囩骇浠诲姟锛屽涓�涓湭鍗囩骇瀹屾垚鐨凴TU灏变細鍗℃锛�
      * 鎵�浠ュ綋寮哄埗缁撴潫鍗囩骇浠诲姟锛屼唬鐮侀�昏緫骞舵病鏈夊己鍒剁粨鏋淩TU鍗囩骇杩囩▼锛屽鏋滃崌绾ц繃绋嬩篃寮哄埗鍋滄锛岄偅涔圧TU鐪熶細鍗℃
-     * @throws Exception
      */
-    public void forceOverUpgradeTask() throws Exception {
+    public void forceOverUpgradeTask() {
         if(this.task != null){
             this.stop();
             this.task.forceOver();
@@ -91,11 +98,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){
@@ -110,7 +117,7 @@
     ////////////////////////////////////////////////////
     /**
      * 褰撳墠鍗囩骇鐘舵��
-     * @return
+     * @return 褰撳墠鍗囩骇鐘舵��
      */
     public UpgradeState currentUpgradeState() {
         if(task != null){
@@ -122,9 +129,10 @@
 
     /**
      * Rtu鍗囩骇淇℃伅
-     * @param rtuAddr
-     * @return
+     * @param rtuAddr 鎺у埗鍣≧TU鍦板潃
+     * @return 鎺у埗鍣≧TU鍗囩骇鐘舵��
      */
+    @SuppressWarnings("unused")
     public UpgradeRtu upgradeRtuInfo(String rtuAddr){
         if(task != null){
             return task.upgradeInfos(rtuAddr) ;
@@ -135,9 +143,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) ;
@@ -148,8 +157,8 @@
 
 
     /**
-     * Rtu鍗囩骇淇℃伅
-     * @return
+     * 鎵�鏈塕tu鍗囩骇淇℃伅
+     * @return 鎵�鏈塕tu鍗囩骇淇℃伅
      */
     public List<UpgradeRtu> upgradeRtuInfoAll(){
         if(task != null){
@@ -166,84 +175,93 @@
     // 缁熻鐘舵�� + 鐘舵�侀�氱煡
     //
     ////////////////////////////////////////////////////
-    @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锛氬垽鏂槸鍚︽棤浠讳綍涓�涓猂TU杩涜杩囧崌绾э紝骞朵笖杈惧埌鏃堕檺锛屽垯璁や负褰撳墠鍗囩骇浠诲姟瀹屾垚
-                    //-1:鏃犱竴RTU鍗囩骇涓旇秴鏃讹紝0锛氭棤RTU鍗囩骇浣嗘湭瓒呮椂绛夊緟锛�1鏈塕TU鍗囩骇姝e父鎵ц
-                    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(!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){
+                    //褰撳墠娌℃湁RTU杩涜杩囧崌绾э紝鑰屼笖瓒呮椂浜嗭紝璁や负浠诲姟宸茬粡瀹屾垚
+                    this.task.taskIsOver = true ;
                     this.stop();
+                    log.info("===========================================================") ;
+                    log.info("=                                                         =") ;
+                    log.info("=鏃燫TU鍗囩骇瓒呮椂锛屽洜鏃犱竴鍙癛TU杩涜鍗囩骇锛屽苟涓旂瓑寰呰秴鏃讹紝寮哄埗璁剧疆鍗囩骇瀹屾垚  =") ;
+                    log.info("=                                                         =") ;
+                    log.info("===========================================================") ;
+                }else if(temp == 1){
+                    //褰撳墠鏈塕TU杩涜杩囧崌绾�
+                    //宸ヤ綔2锛氱粺璁″綋鍓嶆鍦ㄥ崌绾х殑RTU鏁伴噺锛屼负鍚屾椂鍗囩骇鏁伴噺闄愬埗鍋氬噯澶�
+                    this.task.countRunningRtuCount() ;
+
+                    //宸ヤ綔3锛氱粺璁¢渶瑕佸崌绾т絾褰撳墠绂荤嚎RTU鐨勬儏鍐碉紝瓒呰繃鏃堕檺鐨勮缃负鍗囩骇瀹屾垚
+                    int tmp = this.task.countOffRtuAndSetIfOver() ;
+                    if(tmp >= 1){
+                        //瓒呮椂锛屽己鍒惰缃竴浜汻TU鍗囩骇澶辫触骞朵笖鍗囩骇瀹屾垚锛�
+                        log.info("======================================================") ;
+                        log.info("=                                                    =") ;
+                        log.info("=鍥犵绾胯秴鏃讹紝寮哄埗璁剧疆" + tmp + "鍙癛TU鍗囩骇澶辫触骞朵笖鍗囩骇瀹屾垚            =") ;
+                        log.info("=                                                    =") ;
+                        log.info("======================================================") ;
+                    }else if(tmp == 0){
+                        log.info("======================================================") ;
+                        log.info("=                                                    =") ;
+                        log.info("=绂荤嚎瓒呮椂锛屼絾鏃犱竴鍙癛TU鍥犵绾胯�岃璁剧疆鎴愬崌绾уけ璐ュ苟涓斿崌绾у畬鎴�     =") ;
+                        log.info("=                                                    =") ;
+                        log.info("======================================================") ;
+                    }else{//tmp = -1
+                        //鏃犱换鍔¢�昏緫
+                    }
+                    //宸ヤ綔4锛氱粺璁℃槸鍚﹀叏閮ㄥ崌绾у畬鎴�
+                    this.task.taskIsOver = this.task.countIsAllOver() ;
+                    if(this.task.taskIsOver){
+                        log.info("==================================================") ;
+                        log.info("=                                                =") ;
+                        log.info("= 鍗囩骇鍏ㄩ儴缁撴潫锛岃缃崌绾т换鍔″畬鎴愶紝娑夊強RTU" + this.task.taskVo.rtuAddrList.size() + "鍙�          =") ;
+                        log.info("=                                                =") ;
+                        log.info("==================================================") ;
+                    }
+                }else if(temp == 0){
+                    //褰撳墠娌℃湁涓�涓猂TU杩涜杩囧崌绾э紝涔熸病鏈夎秴鏃讹紝涓嶄綔涓�
                 }
+                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 ;
     }
@@ -271,7 +289,6 @@
     @Override
     public void call(Object obj) {
         //绾跨▼宸ヤ綔鎵ц瀹屼簡锛宱bj = Boolean(true)
-        this.thread = null ;//璧嬪�间负null锛屼娇绾跨▼瀵硅薄琚瀮鍦惧洖鏀跺櫒鍥炴敹
     }
     @Override
     public void call(Object... objs) {

--
Gitblit v1.8.0