| | |
| | | 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; |
| | |
| | | @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); |
| | | } |
| | | } |
| | | } |
| | |
| | | * @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); |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | * @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 ; |
| | | } |
| | | } |