|  |  |  | 
|---|
|  |  |  | import org.apache.logging.log4j.LogManager; | 
|---|
|  |  |  | import org.apache.logging.log4j.Logger; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.util.Date; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * @Author liurunyu | 
|---|
|  |  |  | * @Date 2024/5/8 14:18 | 
|---|
|  |  |  | 
|---|
|  |  |  | @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.openDt, cdData, dV202404.dt) ; | 
|---|
|  |  |  | this.saveHistory(sv, controller, d.getRtuAddr(), cdData.openDt, 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | 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(), | 
|---|
|  |  |  | 
|---|
|  |  |  | 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:正常) | 
|---|
|  |  |  | (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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | 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:正常) | 
|---|
|  |  |  | (byte)0//供电方式(0: 220V,1:蓄电池) | 
|---|
|  |  |  | ) ; | 
|---|
|  |  |  | sv.saveRmAlarmStateHistory(po) ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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){ | 
|---|
|  |  |  | //虚拟卡在取水中的占用状态改为非应用状态 | 
|---|
|  |  |  | Date now = new Date() ; | 
|---|
|  |  |  | sv.updateVirCardNoUseState(controller.getIntakeId(), now); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|