liurunyu
2024-12-02 e2bb7b4cba7efe12803fed7b5838a074fa613256
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeManager.java
@@ -64,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 {
@@ -83,12 +88,19 @@
     * 因为强制结束升级任务,对一个未升级完成的RTU就会卡死,
     * 所以当强制结束升级任务,代码逻辑并没有强制结果RTU升级过程,如果升级过程也强制停止,那么RTU真会卡死
     */
    public void forceOverUpgradeTask() {
    public String forceOverUpgradeTask() {
        if(this.task != null){
            this.stop();
            this.task.forceOver();
            this.task.countRunningRtuCount();
            if(this.task.curUgRunningRtuTotal > 0){
                return "当前存在升级中的设备,不能结束升级任务" ;
            }else{
                this.stop();
                this.task.forceOver();
                return null ;
            }
        }else{
            return "当前没有升级任务" ;
        }
        this.task = null ;
    }
    /**
@@ -188,16 +200,43 @@
                    //当前没有RTU进行过升级,而且超时了,认为任务已经完成
                    this.task.taskIsOver = true ;
                    this.stop();
                    log.info("===========================================================") ;
                    log.info("=                                                         =") ;
                    log.info("=无RTU升级超时,因无一台RTU进行升级,并且等待超时,强制设置升级完成  =") ;
                    log.info("=                                                         =") ;
                    log.info("===========================================================") ;
                }else if(temp == 1){
                    //当前有RTU进行过升级
                    //工作2:统计当前正在升级的RTU数量,为同时升级数量限制做准备
                    this.task.countRunningRtuCount() ;
                    //工作3:统计需要升级但当前离线RTU的情况,超过时限的设备为升级完成
                    //this.task.countOffRtuAndSetIfOver() ;
                    //工作3:统计需要升级但当前离线RTU的情况,超过时限的设置为升级完成
                    int tmp = this.task.countOffRtuAndSetIfOver() ;
                    if(tmp >= 1){
                        //超时,强制设置一些RTU升级失败并且升级完成)
                        log.info("======================================================") ;
                        log.info("=                                                    =") ;
                        log.info("=因离线超时,强制设置" + tmp + "台RTU升级失败并且升级完成            =") ;
                        log.info("=                                                    =") ;
                        log.info("======================================================") ;
                    }else if(tmp == 0){
                        log.info("======================================================") ;
                        log.info("=                                                    =") ;
                        log.info("=离线超时,但无一台RTU因离线而被设置成升级失败并且升级完成     =") ;
                        log.info("=                                                    =") ;
                        log.info("======================================================") ;
                    }else{//tmp = -1
                        //无任务逻辑
                    }
                    //工作4:统计是否全部升级完成
                    //this.task.taskIsOver = this.task.countIsAllOver() ;
                    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){
                    //当前没有一个RTU进行过升级,也没有超时,不作为
                }