pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealAlarmStatusV202404.java
@@ -3,7 +3,9 @@
import com.dy.common.mw.protocol.Data;
import com.dy.common.mw.protocol.p206V202404.DataV202404 ;
import com.dy.common.mw.protocol.p206V202404.upVos.*;
import com.dy.common.util.DateTime;
import com.dy.pipIrrGlobal.pojoPr.PrController;
import com.dy.pipIrrGlobal.pojoRm.RmAlarmStateHistory;
import com.dy.pipIrrGlobal.pojoRm.RmAlarmStateLast;
import com.dy.rtuMw.server.rtuData.TaskSurpport;
import com.dy.rtuMw.server.rtuData.dbSv.DbSv;
@@ -28,46 +30,41 @@
    @Override
    public void execute(Object data) {
        Data d = (Data)data ;
        Object protocolData = d.getSubData() ;
        if(protocolData != null){
            DataV202404 dV202404 = (DataV202404)protocolData ;
            if(dV202404 != null){
                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(), null, null, null, cdData, null, null) ;
                            this.saveHistory(sv, controller, d.getRtuAddr(), null, null, null, cdData, null, null) ;
                        }else if(cdObj instanceof DataCd80_5BVo){
                            //设备终端工作上报 + 查询设备终端实时值
                            DataCd80_5BVo cdData = (DataCd80_5BVo)(cdObj) ;
                            this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, null, null, null, null) ;
                            this.saveHistory(sv, controller, d.getRtuAddr(), cdData.rtuDt, cdData, null, null, null, null) ;
                        }else if(cdObj instanceof DataCd93_A3Vo){
                            //平台/APP远程关闭水泵/阀门   +  刷卡关泵/阀上报
                            DataCd93_A3Vo cdData = (DataCd93_A3Vo)(cdObj) ;
                            this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), cdData.endDt, null, cdData, null, null, null) ;
                            this.saveHistory(sv, controller, d.getRtuAddr(), cdData.endDt, null, cdData, null, null, null) ;
                        }else if(cdObj instanceof DataCd84Vo){
                            //设备终端随机自报
                            DataCd84Vo cdData = (DataCd84Vo)(cdObj) ;
                            this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), null, null, null, null, cdData, null) ;
                            this.saveHistory(sv, controller, d.getRtuAddr(), null, null, null, null, cdData, null) ;
                        }else if(cdObj instanceof DataCdC2Vo){
                            //设备终端随机自报
                            DataCdC2Vo cdData = (DataCdC2Vo)(cdObj) ;
                            this.saveOrUpdateLast(sv, controller, d.getRtuAddr(), null, null, null, null, null, cdData) ;
                            this.saveHistory(sv, controller, d.getRtuAddr(), null, null, null, null, null, cdData) ;
                        }
                    }catch (Exception e){
                        log.error("保存控制器报警和状态数据时发生异常", e);
                    }
        DataV202404 dV202404 = (DataV202404)d.getSubData()  ;//前面任务已经判断不为null
        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);
            }
        }
    }
@@ -77,32 +74,44 @@
     * @param controller 控制器对象
     * @param rtuAddr 控制器地址
     * @param rtuDt 控制器时钟
     * @param vo80_5B
     * @param vo93_A3_85
     * @param vo81
     * @param alarmVo  报警及状态数据
     * @param receiveDt 接收数据时本地时钟
     */
    private void saveOrUpdateLast(DbSv sv,
                                  PrController controller,
                                  String rtuAddr,
                                  String rtuDt,
                                  DataCd80_5BVo vo80_5B,
                                  DataCd93_A3Vo vo93_A3_85,
                                  DataCd81Vo vo81,
                                  DataCd84Vo vo84,
                                  DataCdC2Vo voC2) throws Exception {
//        RmAlarmStateLast po = sv.getRmAlarmStateLast(rtuAddr) ;
//        if(po == null){
//            po = new RmAlarmStateLast(null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(),
//                    rtuAddr,
//                    DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt),
//                    DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(rtuDt),
//                    alarmVo==null?null:alarmVo.batteryVolt, alarmVo==null?null:alarmVo.loss, alarmVo==null?null:alarmVo.meter, alarmVo==null?null:alarmVo.valve,
//                    stateVo==null?null:stateVo.icCard, stateVo==null?null:stateVo.working, stateVo==null?null:stateVo.valve) ;
//            sv.saveRmAlarmStateLast(po) ;
//        }else{
//            po = this.update(controller, po, rtuDt, dV1_0_1, alarmVo, stateVo) ;
//            sv.updateRmAlarmStateLast(po);
//        }
                                  AlarmVo alarmVo,
                                  String receiveDt) throws Exception {
        RmAlarmStateLast po = sv.getRmAlarmStateLast(rtuAddr) ;
        if(po == null){
            po = new RmAlarmStateLast(null,
                    controller==null?null:controller.getId(),
                    controller==null?null:controller.getIntakeId(),
                    rtuAddr,
                    DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(receiveDt),
                    DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(rtuDt),
                    alarmVo==null?null:alarmVo.statePump,
                    alarmVo==null?null:alarmVo.alarmWaterRemain,
                    alarmVo==null?null:alarmVo.alarm0WaterRemain,
                    alarmVo==null?null:alarmVo.alarmExceedYear,
                    alarmVo==null?null:alarmVo.alarmWaterMeterFault,
                    alarmVo==null?null:alarmVo.alarmSteal,
                    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.alarmEleMiss,
                    alarmVo==null?null:alarmVo.alarmEleExceed,
                    alarmVo==null?null:alarmVo.alarmEleLowVolt,
                    alarmVo==null?null:alarmVo.stateIcEnable
            ) ;
            sv.saveRmAlarmStateLast(po) ;
        }else{
            po = this.update(po, controller, rtuDt, alarmVo, receiveDt) ;
            sv.updateRmAlarmStateLast(po);
        }
    }
    /**
@@ -111,63 +120,76 @@
     * @param controller 控制器对象
     * @param rtuAddr 控制器地址
     * @param rtuDt 控制器时钟
     * @param vo80_5B
     * @param vo93_A3_85
     * @param vo81
     * @param alarmVo 报警及状态数据
     * @param receiveDt 接收数据时本地时钟
     */
    private void saveHistory(DbSv sv,
                             PrController controller,
                             String rtuAddr,
                             String rtuDt,
                             DataCd80_5BVo vo80_5B,
                             DataCd93_A3Vo vo93_A3_85,
                             DataCd81Vo vo81,
                             DataCd84Vo vo84,
                             DataCdC2Vo voC2) throws Exception {
//        RmAlarmStateHistory po = new RmAlarmStateHistory(null, controller==null?null:controller.getId(), controller==null?null:controller.getIntakeId(),
//                rtuAddr,
//                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt),
//                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(rtuDt),
//                alarmVo==null?null:alarmVo.batteryVolt, alarmVo==null?null:alarmVo.loss, alarmVo==null?null:alarmVo.meter, alarmVo==null?null:alarmVo.valve,
//                stateVo==null?null:stateVo.icCard, stateVo==null?null:stateVo.working, stateVo==null?null:stateVo.valve) ;
//        sv.saveRmAlarmStateHistory(po) ;
                             AlarmVo alarmVo,
                             String receiveDt) throws Exception {
        RmAlarmStateHistory po = new RmAlarmStateHistory(null,
                controller==null?null:controller.getId(),
                controller==null?null:controller.getIntakeId(),
                rtuAddr,
                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(receiveDt),
                DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(rtuDt),
                alarmVo==null?null:alarmVo.statePump,
                alarmVo==null?null:alarmVo.alarmWaterRemain,
                alarmVo==null?null:alarmVo.alarm0WaterRemain,
                alarmVo==null?null:alarmVo.alarmExceedYear,
                alarmVo==null?null:alarmVo.alarmWaterMeterFault,
                alarmVo==null?null:alarmVo.alarmSteal,
                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.alarmEleMiss,
                alarmVo==null?null:alarmVo.alarmEleExceed,
                alarmVo==null?null:alarmVo.alarmEleLowVolt,
                alarmVo==null?null:alarmVo.stateIcEnable
        ) ;
        sv.saveRmAlarmStateHistory(po) ;
    }
    private RmAlarmStateLast update(PrController controller,
                                    RmAlarmStateLast po,
    /**
     * 保存报警状态最新数据
     * @param po 实体对象
     * @param controller 控制器对象
     * @param rtuDt 控制器时钟
     * @param alarmVo  报警及状态数据
     * @param receiveDt 接收数据时本地时钟
     */
    private RmAlarmStateLast update(RmAlarmStateLast po,
                                    PrController controller,
                                    String rtuDt,
                                    DataCd80_5BVo vo80_5B,
                                    DataCd93_A3Vo vo93_A3_85,
                                    DataCd81Vo vo81,
                                    DataCd84Vo vo84,
                                    DataCdC2Vo voC2) throws Exception {
//        po.controllerid = controller==null?null:controller.getId() ;
//        po.intakeid = controller==null?null:controller.getIntakeId() ;
//
//        po.dt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1_0_1.dt) ;
//        po.rtudt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(rtuDt) ;
//        if(alarmVo != null){
//            po.bateryvolt = alarmVo.batteryVolt ;
//            po.loss = alarmVo.loss ;
//            po.meter = alarmVo.meter ;
//            po.valve = alarmVo.valve ;
//        }else{
//            po.bateryvolt = null ;
//            po.loss = null ;
//            po.meter = null ;
//            po.valve = null ;
//        }
//        if(stateVo != null){
//           po.iccard = stateVo.icCard ;
//           po.working = stateVo.working ;
//           po.valvestate = stateVo.valve ;
//        }else{
//            po.iccard = null ;
//            po.working = null ;
//            po.valvestate = null ;
//        }
//        return po ;
        return null ;
                                    AlarmVo alarmVo,
                                    String receiveDt) throws Exception {
        po.controllerId = controller==null?null:controller.getId() ;
        po.intakeId = controller==null?null:controller.getIntakeId() ;
        po.dt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(receiveDt) ;
        po.rtuDt = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(rtuDt) ;
        if(alarmVo != null){
            po.valveState = alarmVo.statePump ;
            po.alarmRemainWater = alarmVo.alarmWaterRemain ;
            po.alarm0WaterRemain = alarmVo.alarm0WaterRemain ;
            po.alarmExceedYear = alarmVo.alarmExceedYear ;
            po.alarmWaterMeterFault = alarmVo.alarmWaterMeterFault ;
            po.alarmLoss = alarmVo.alarmSteal ;
            po.alarmWaterMeterBreak = alarmVo.alarmWaterMeterBreak ;
            po.alarmEleMeterFault = alarmVo.alarmEleMeterFault ;
            po.alarm0MoneyRemain = alarmVo.alarm0MoneyRemain ;
            po.alarmInnerDoor = alarmVo.alarmInnerDoor ;
            po.alarmOuterDoor = alarmVo.alarmOuterDoor ;
            po.alarmEleMiss = alarmVo.alarmEleMiss ;
            po.alarmEleExceed = alarmVo.alarmEleExceed ;
            po.alarmEleLowVolt = alarmVo.alarmEleLowVolt ;
            po.stateIcEnable = alarmVo.stateIcEnable ;
        }
        return po ;
    }
}