1、表阀一体协议,关阀失败数据解析修改;
2、RTU状态处理逻辑修改,每条81上报数据都要保存。
4个文件已修改
49 ■■■■■ 已修改文件
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlParse.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealAlarmStatus.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V2/TkDealAlarmStatusV2.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealAlarmStatusV202404.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlParse.java
@@ -328,14 +328,16 @@
        index += 8 ;
        cdData.orderNo = ByteUtil.BCD2String_BE(bs, index, index + 7) ;
        index += 8 ;
        cdData.startDt  = GlParse.parseRtuDt(bs, index) ;
        if(cdData.clResult == (byte)0x81){
            //2025-06-11 王江海安排
            //失败了,下面就没有数据了
            return ;
        }
        index += 8 ;
        cdData.startDt  = GlParse.parseRtuDt(bs, index) ;
        index += 6 ;
        cdData.endDt  = GlParse.parseRtuDt(bs, index) ;
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealAlarmStatus.java
@@ -63,13 +63,14 @@
                                    toNext = true ;
                                }
                            }
                            if(this.needSave2Db( d.getRtuAddr())){
                            //2025-06-11 因为81命令是RTU状态改变时即上报,所以可以及时体现状态变化,进而不受存储控制
                            //if(this.needSave2Db( d.getRtuAddr())){
                                //在一个小时内没有存储报警数据
                                this.toMsCenter(controller, d.getRtuAddr(), dV1, dataCd81Vo.alarmVo, dataCd81Vo.stateVo);
                                this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), dataCd81Vo.rtuDt, dV1, dataCd81Vo.alarmVo, dataCd81Vo.stateVo);
                                this.saveHistory(sv, controller, d.getRtuAddr(), dataCd81Vo.rtuDt, dV1, dataCd81Vo.alarmVo, dataCd81Vo.stateVo);
                                this.cacheSaveTime(d.getRtuAddr());
                            }
                                //this.cacheSaveTime(d.getRtuAddr());
                            //}
                        }
                    } else if (cdObj instanceof DataCd84Vo) {
                        //阀开工作报
@@ -78,7 +79,7 @@
                            Object[] objs = this.getTaskResults(TkPreGenObjs.taskId);
                            DbSv sv = (DbSv) objs[0];
                            PrController controller = (PrController) objs[1];
                            /** 阀开工作报,阀门状态一定是打开状态,所以不设置下面数据以备后续任务设置虚拟卡状态
                            /* 阀开工作报,阀门状态一定是打开状态,所以不设置下面数据以备后续任务设置虚拟卡状态
                             if(dataCd84Vo.stateVo != null && dataCd84Vo.stateVo.valveState != null && dataCd84Vo.stateVo.valveState.byteValue() == DataStateVo.ValveCloseState){
                                 if(controller != null && controller.getIntakeId() != null){
                                     this.taskResult = new Object[]{controller.getIntakeId(), DataStateVo.ValveCloseState} ;
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V2/TkDealAlarmStatusV2.java
@@ -76,7 +76,8 @@
                        //随机自报报
                        DataCd81Vo dataCd81Vo = (DataCd81Vo)cdObj ;
                        if (dataCd81Vo.alarmVo != null || dataCd81Vo.stateVo != null) {
                            if(this.needSave2Db( d.getRtuAddr())) {
                            //2025-06-11 因为81命令是RTU状态改变时即上报,所以可以及时体现状态变化,进而不受存储控制
                            //if(this.needSave2Db( d.getRtuAddr())) {
                                //在一个小时内没有存储报警数据
                                Object[] objs = this.getTaskResults(TkPreGenObjsV2.taskId);
                                DbSv sv = (DbSv) objs[0];
@@ -91,7 +92,7 @@
                                        toNext = true ;
                                    }
                                }
                            }
                            //}
                        }
                    } else if (cdObj instanceof DataCd84Vo) {
                        //阀开工作报
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealAlarmStatusV202404.java
@@ -48,18 +48,16 @@
            PrController controller = (PrController)objs[1] ;
            if(cdObj instanceof DataCd81Vo){
                //设备终端随机自报
                if(this.needSave2Db( d.getRtuAddr())) {
                    //在一个小时内没有存储报警数据
                    DataCd81Vo cdData = (DataCd81Vo)(cdObj) ;
                    this.toMsCenter(controller, d.getRtuAddr(), dV202404, cdData, dV202404.dt);
                    this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
                    this.saveHistory(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
                    this.cacheSaveTime(d.getRtuAddr());
                    if(cdData.statePump != null && cdData.statePump.byteValue() == AlarmVo.DevCloseState){
                        if(controller != null && controller.getIntakeId() != null){
                            this.taskResult = new Object[]{controller.getIntakeId(), AlarmVo.DevCloseState} ;
                            toNext = true ;
                        }
                //81功能码数据,不进行“在一个小时内没有存储报警数据”的控制
                DataCd81Vo cdData = (DataCd81Vo)(cdObj) ;
                this.toMsCenter(controller, d.getRtuAddr(), dV202404, cdData, dV202404.dt);
                this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
                this.saveHistory(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
                this.cacheSaveTime(d.getRtuAddr());
                if(cdData.statePump != null && cdData.statePump.byteValue() == AlarmVo.DevCloseState){
                    if(controller != null && controller.getIntakeId() != null){
                        this.taskResult = new Object[]{controller.getIntakeId(), AlarmVo.DevCloseState} ;
                        toNext = true ;
                    }
                }
            }else if(cdObj instanceof DataCd80_5BVo){
@@ -78,7 +76,9 @@
                        }
                    }
                }
            }else if(cdObj instanceof DataCd93_A3Vo){
            }
            /* 2025-06-11 王江海说:以下数据中的状态不准确,尤其阀门状态,所以不再采纳
            else if(cdObj instanceof DataCd93_A3Vo){
                //平台/APP远程关闭水泵/阀门   +  刷卡关泵/阀上报
                if(this.needSave2Db( d.getRtuAddr())) {
                    //在一个小时内没有存储报警数据
@@ -127,6 +127,7 @@
                    }
                }
            }
             */
        }catch (Exception e){
            log.error("保存控制器报警和状态数据时发生异常", e);
        }