修改升级过程逻辑,RTU上报数据后触发升级过程中,首先判断是否因为阀门是开启状态而不能升级
2个文件已修改
29 ■■■■■ 已修改文件
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeManager.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeTask.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeManager.java
@@ -69,7 +69,7 @@
                    this.task.forceOver();
                }
                this.task = new UpgradeTask();
                this.task.initOption(this.lastOpenMaxGoOn, this.failTryTimes, this.ugMaxRtuSameTime);
                this.task.initOption(this.openNoUpgrade, this.lastOpenMaxGoOn, this.failTryTimes, this.ugMaxRtuSameTime);
                this.task.setTask(vo);
                this.nowNotifyTimesAfterOver = 0 ;
                this.monitorFirst = true ;
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/upgrade/UpgradeTask.java
@@ -35,6 +35,8 @@
    @JSONField(serialize = false)
    protected Integer ugMaxRtuSameTime ;//同时升级RTU最大个数
    @JSONField(serialize = false)
    private Boolean openNoUpgrade ;//阀开(泵开)不执行升级
    @JSONField(serialize = false)
    private Integer lastOpenMaxGoOn ;//阀开(泵开)状态设置以来持续最长时间(秒钟),超过这个时间认为状态无效(这个时长取决于工作报间隔)
    public String setupDt ;//设置时间(yyyy-mm-dd HH:MM:SS)
@@ -64,7 +66,11 @@
    /**
     *  初始化配置信息
     */
    public void initOption(Integer lastOpenMaxGoOn, Integer failTryTimes, Integer ugMaxRtuSameTime) {
    public void initOption(Boolean openNoUpgrade,
                           Integer lastOpenMaxGoOn,
                           Integer failTryTimes,
                           Integer ugMaxRtuSameTime) {
        this.openNoUpgrade = openNoUpgrade;
        this.lastOpenMaxGoOn = lastOpenMaxGoOn;
        this.failTryTimes = failTryTimes;
        this.ugMaxRtuSameTime = ugMaxRtuSameTime;
@@ -147,6 +153,25 @@
                    //当前RTU已经升级完成,无需再升级
                    return;
                }else{
                    if(this.openNoUpgrade){
                        //首先判断是否是阀门打开状态
                        RtuStatus rtuStatus = RtuStatusDealer.oneStatus(rtuAddr) ;
                        if(rtuStatus != null
                                && rtuStatus.valveOpenTrueCloseFalse != null
                                && rtuStatus.valveOpenTrueCloseFalse.booleanValue() == true
                                && rtuStatus.valveStatusLastTimeStamp != null){
                            //有状态,并且是阀开(泵开)
                            Long now = System.currentTimeMillis() ;
                            Long gap = now - rtuStatus.valveStatusLastTimeStamp ;
                            if(gap < this.lastOpenMaxGoOn){
                                //这时采纳阀门打开状态,进而不能升级
                                ugRtu.isOver = true ;
                                ugRtu.state = UpgradeRtu.STATE_FAILOPEN ;
                                return;
                            }
                        }
                    }
                    if(UpgradeUnit.confVo.ugMaxRtuAtOnce > 0){
                        //设置了同时升级的RTU最大数量的限制
                        if(ugRtu.state == UpgradeRtuDev.STATE_OFFLINE){