pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealAlarmStatusV202404.java
@@ -30,42 +30,75 @@
    @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) ;
        //前面任务已经判断cdObj不为null
        boolean toNext = false ;
        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) ;
                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 ;
                    }
                }
            }catch (Exception e){
                log.error("保存控制器报警和状态数据时发生异常", e);
            }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) ;
                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 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) ;
                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 DataCd84Vo){
                //设备终端刷卡开泵/阀上报
                DataCd84Vo cdData = (DataCd84Vo)(cdObj) ;
                this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.openDt, cdData, dV202404.dt) ;
                this.saveHistory(sv, controller, d.getRtuAddr(), cdData.openDt, cdData, dV202404.dt) ;
                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 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) ;
                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 ;
                    }
                }
            }
        }catch (Exception e){
            log.error("保存控制器报警和状态数据时发生异常", e);
        }
        if(toNext){
            this.toNextTasks(d);
        }
    }
    /**
@@ -83,7 +116,7 @@
                                  String rtuDt,
                                  AlarmVo alarmVo,
                                  String receiveDt) throws Exception {
        RmAlarmStateLast po = sv.getRmAlarmStateLast(rtuAddr) ;
        RmAlarmStateLast po = sv.getRmAlarmStateLast(controller.getIntakeId()) ;
        if(po == null){
            po = new RmAlarmStateLast(null,
                    controller==null?null:controller.getId(),
@@ -100,19 +133,20 @@
                    alarmVo==null?null:alarmVo.alarmWaterMeterBreak,
                    alarmVo==null?null:alarmVo.alarmEleMeterFault,
                    alarmVo==null?null:alarmVo.alarm0MoneyRemain,
                    alarmVo==null?null:alarmVo.alarmInnerDoor,
                    alarmVo==null?null:alarmVo.alarmOuterDoor,
                    alarmVo==null?null:alarmVo.alarmDoor,
                    alarmVo==null?null:alarmVo.alarmDoor,//2025-02-19机箱外门报警项改为电池电压了
                    alarmVo==null?null:alarmVo.alarmEleMiss,
                    alarmVo==null?null:alarmVo.alarmEleExceed,
                    alarmVo==null?null:alarmVo.alarmEleLowVolt,
                    alarmVo==null?null:alarmVo.stateIcEnable,
                    (byte)0,//电池电压(1:报警,0:正常)
                    (byte)0//阀门报警(1:报警,0:正常)
                    alarmVo==null?null:alarmVo.alarmBatteryVolt,//电池电压(1:报警,0:正常)
                    alarmVo==null?null:alarmVo.alarmBlockValve,//阀门堵转报警(1:报警,0:正常)
                    (byte)0,//供电方式(0: 220V,1:蓄电池)
                    System.currentTimeMillis()
            ) ;
            sv.saveRmAlarmStateLast(po) ;
        }else{
            po = this.update(po, controller, rtuDt, alarmVo, receiveDt) ;
            this.updateVirCardNoUseState(sv, controller, alarmVo) ;
            sv.updateRmAlarmStateLast(po);
        }
    }
@@ -147,14 +181,15 @@
                alarmVo==null?null:alarmVo.alarmWaterMeterBreak,
                alarmVo==null?null:alarmVo.alarmEleMeterFault,
                alarmVo==null?null:alarmVo.alarm0MoneyRemain,
                alarmVo==null?null:alarmVo.alarmInnerDoor,
                alarmVo==null?null:alarmVo.alarmOuterDoor,
                alarmVo==null?null:alarmVo.alarmDoor,
                alarmVo==null?null:alarmVo.alarmDoor,//2025-02-19机箱外门报警项改为电池电压了
                alarmVo==null?null:alarmVo.alarmEleMiss,
                alarmVo==null?null:alarmVo.alarmEleExceed,
                alarmVo==null?null:alarmVo.alarmEleLowVolt,
                alarmVo==null?null:alarmVo.stateIcEnable,
                (byte)0,//电池电压(1:报警,0:正常)
                (byte)0//阀门报警(1:报警,0:正常)
                alarmVo==null?null:alarmVo.alarmBatteryVolt,//电池电压(1:报警,0:正常)
                alarmVo==null?null:alarmVo.alarmBlockValve,//阀门堵转报警(1:报警,0:正常)
                (byte)0//供电方式(0: 220V,1:蓄电池)
        ) ;
        sv.saveRmAlarmStateHistory(po) ;
    }
@@ -188,31 +223,16 @@
            po.alarmWaterMeterBreak = alarmVo.alarmWaterMeterBreak ;
            po.alarmEleMeterFault = alarmVo.alarmEleMeterFault ;
            po.alarm0MoneyRemain = alarmVo.alarm0MoneyRemain ;
            po.alarmInnerDoor = alarmVo.alarmInnerDoor ;
            po.alarmOuterDoor = alarmVo.alarmOuterDoor ;
            po.alarmInnerDoor = alarmVo.alarmDoor;
            po.alarmOuterDoor = alarmVo.alarmDoor;
            po.alarmEleMiss = alarmVo.alarmEleMiss ;
            po.alarmEleExceed = alarmVo.alarmEleExceed ;
            po.alarmEleLowVolt = alarmVo.alarmEleLowVolt ;
            po.stateIcEnable = alarmVo.stateIcEnable ;
            po.alarmBatteryVolt = alarmVo.alarmBatteryVolt ;
            po.alarmValve = alarmVo.alarmBlockValve;
        }
        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());
                }
            }
        }
    }
}