wuzeyu
2024-06-17 5c1a8a48f73591002189a99db030440208f056b5
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealAlarmStatusV202404.java
@@ -30,42 +30,41 @@
    @Override
    public void execute(Object data) {
        Data d = (Data)data ;
        DataV202404 dV202404 = (DataV202404)d.getSubData()  ;//前面任务已经判断不为null
        DataV202404 dV202404 = (DataV202404)d.getSubData() ;
        Object cdObj = dV202404.subData ;
        if(cdObj != null){
            try{
                Object[] objs = this.getTaskResults(TkPreGenObjsV202404.taskId) ;
                DbSv sv = (DbSv)objs[0] ;
                PrController controller = (PrController)objs[1] ;
                if(cdObj instanceof DataCd81Vo){
                    //设备终端随机自报
                    DataCd81Vo cdData = (DataCd81Vo)(cdObj) ;
                    this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
                    this.saveHistory(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
                }else if(cdObj instanceof DataCd80_5BVo){
                    //设备终端工作上报 + 查询设备终端实时值
                    DataCd80_5BVo cdData = (DataCd80_5BVo)(cdObj) ;
                    this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
                    this.saveHistory(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
                }else if(cdObj instanceof DataCd93_A3Vo){
                    //平台/APP远程关闭水泵/阀门   +  刷卡关泵/阀上报
                    DataCd93_A3Vo cdData = (DataCd93_A3Vo)(cdObj) ;
                    this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.endDt, cdData, dV202404.dt) ;
                    this.saveHistory(sv, controller, d.getRtuAddr(), cdData.endDt, cdData, dV202404.dt) ;
                }else if(cdObj instanceof DataCd84Vo){
                    //设备终端随机自报
                    DataCd84Vo cdData = (DataCd84Vo)(cdObj) ;
                    this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.opDt, cdData, dV202404.dt) ;
                    this.saveHistory(sv, controller, d.getRtuAddr(), cdData.opDt, cdData, dV202404.dt) ;
                }else if(cdObj instanceof DataCdC2Vo){
                    //设备终端随机自报
                    DataCdC2Vo cdData = (DataCdC2Vo)(cdObj) ;
                    this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
                    this.saveHistory(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
                }
            }catch (Exception e){
                log.error("保存控制器报警和状态数据时发生异常", e);
        //前面任务已经判断cdObj不为null
        try{
            Object[] objs = this.getTaskResults(TkPreGenObjsV202404.taskId) ;
            DbSv sv = (DbSv)objs[0] ;
            PrController controller = (PrController)objs[1] ;
            if(cdObj instanceof DataCd81Vo){
                //设备终端随机自报
                DataCd81Vo cdData = (DataCd81Vo)(cdObj) ;
                this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
                this.saveHistory(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
            }else if(cdObj instanceof DataCd80_5BVo){
                //设备终端工作上报 + 查询设备终端实时值
                DataCd80_5BVo cdData = (DataCd80_5BVo)(cdObj) ;
                this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
                this.saveHistory(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
            }else if(cdObj instanceof DataCd93_A3Vo){
                //平台/APP远程关闭水泵/阀门   +  刷卡关泵/阀上报
                DataCd93_A3Vo cdData = (DataCd93_A3Vo)(cdObj) ;
                this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.endDt, cdData, dV202404.dt) ;
                this.saveHistory(sv, controller, d.getRtuAddr(), cdData.endDt, cdData, dV202404.dt) ;
            }else if(cdObj instanceof DataCd84Vo){
                //设备终端刷卡开泵/阀上报
                DataCd84Vo cdData = (DataCd84Vo)(cdObj) ;
                this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.opDt, cdData, dV202404.dt) ;
                this.saveHistory(sv, controller, d.getRtuAddr(), cdData.opDt, cdData, dV202404.dt) ;
            }else if(cdObj instanceof DataCdC2Vo){
                //设备终端开关水泵/阀门成功/失败上报
                DataCdC2Vo cdData = (DataCdC2Vo)(cdObj) ;
                this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
                this.saveHistory(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, dV202404.dt) ;
            }
        }catch (Exception e){
            log.error("保存控制器报警和状态数据时发生异常", e);
        }
    }
    /**
@@ -105,11 +104,14 @@
                    alarmVo==null?null:alarmVo.alarmEleMiss,
                    alarmVo==null?null:alarmVo.alarmEleExceed,
                    alarmVo==null?null:alarmVo.alarmEleLowVolt,
                    alarmVo==null?null:alarmVo.stateIcEnable
                    alarmVo==null?null:alarmVo.stateIcEnable,
                    (byte)0,//电池电压(1:报警,0:正常)
                    (byte)0//阀门报警(1:报警,0:正常)
            ) ;
            sv.saveRmAlarmStateLast(po) ;
        }else{
            po = this.update(po, controller, rtuDt, alarmVo, receiveDt) ;
            this.updateVirCardNoUseState(sv, controller, alarmVo) ;
            sv.updateRmAlarmStateLast(po);
        }
    }
@@ -149,7 +151,9 @@
                alarmVo==null?null:alarmVo.alarmEleMiss,
                alarmVo==null?null:alarmVo.alarmEleExceed,
                alarmVo==null?null:alarmVo.alarmEleLowVolt,
                alarmVo==null?null:alarmVo.stateIcEnable
                alarmVo==null?null:alarmVo.stateIcEnable,
                (byte)0,//电池电压(1:报警,0:正常)
                (byte)0//阀门报警(1:报警,0:正常)
        ) ;
        sv.saveRmAlarmStateHistory(po) ;
    }
@@ -192,4 +196,22 @@
        }
        return po ;
    }
    /**
     * 虚拟卡在取水中的占用状态改为非应用状态
     */
    private void updateVirCardNoUseState(DbSv sv,
                                PrController controller,
                                AlarmVo alarmVo){
        if(alarmVo != null){
            if(alarmVo.statePump != null && alarmVo.statePump.byteValue() == 0){
                //阀门关闭状态
                if(controller != null && controller.getIntakeId() != null){
                    //虚拟卡在取水中的占用状态改为非应用状态
                    sv.updateVirCardNoUseState(controller.getIntakeId());
                }
            }
        }
    }
}