New file |
| | |
| | | package com.dy.rtuMw.server.rtuData.p206V2; |
| | | |
| | | import com.dy.common.mw.protocol.Data; |
| | | import com.dy.common.mw.protocol.p206V2.DataV2; |
| | | import com.dy.common.mw.protocol.p206V2.upVos.DataCd83CloseVo; |
| | | import com.dy.common.mw.protocol.p206V2.upVos.DataCd83OpenVo; |
| | | import com.dy.common.mw.protocol.p206V2.upVos.DataCd84Vo; |
| | | import com.dy.pipIrrGlobal.voSe.VoCardInfo1; |
| | | import com.dy.rtuMw.server.rtuData.TaskSurpport; |
| | | import com.dy.rtuMw.server.rtuData.dbSv.DbSv; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2024/8/7 17:05 |
| | | * @Description 处理IC卡剩余金额 |
| | | */ |
| | | public class TkDealIcRemainMoneyV2 extends TaskSurpport { |
| | | |
| | | private static final Logger log = LogManager.getLogger(TkDealIcRemainMoneyV2.class.getName()); |
| | | |
| | | //类ID,一定与Tree.xml配置文件中配置一致 |
| | | public static final String taskId = "TkDealIcRemainMoneyV2"; |
| | | |
| | | /** |
| | | * 执行节点任务: 取水口日用水量和漏损量 |
| | | * |
| | | * @param data 需要处理的数据 |
| | | */ |
| | | @Override |
| | | public void execute(Object data) { |
| | | Data d = (Data) data; |
| | | DataV2 dV2 = (DataV2) d.getSubData();//前面任务已经判断不为null |
| | | Object cdObj = dV2.subData; |
| | | if (cdObj != null && (cdObj instanceof DataCd84Vo |
| | | || cdObj instanceof DataCd83OpenVo |
| | | || cdObj instanceof DataCd83CloseVo)){ |
| | | Object[] objs = this.getTaskResults(TkPreGenObjsV2.taskId) ; |
| | | DbSv sv = (DbSv)objs[0] ; |
| | | try{ |
| | | UpDataVo vo = new UpDataVo() ; |
| | | if(cdObj instanceof DataCd84Vo){ |
| | | vo.valueFrom( (DataCd84Vo)cdObj, null, null); |
| | | }else if(cdObj instanceof DataCd83OpenVo){ |
| | | vo.valueFrom(null, (DataCd83OpenVo)cdObj,null); |
| | | }else if(cdObj instanceof DataCd83CloseVo){ |
| | | vo.valueFrom(null,null, (DataCd83CloseVo)cdObj); |
| | | } |
| | | this.doDeal(sv, dV2, vo); |
| | | }catch (Exception e){ |
| | | log.error("保存取水口日用水量和漏损量数据时发生异常", e); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 业务处理 |
| | | * @param sv 服务 |
| | | * @param dV2 上报数据 |
| | | * @param dataVo 上报数据对象 |
| | | */ |
| | | private void doDeal(DbSv sv, DataV2 dV2, UpDataVo dataVo) throws Exception { |
| | | if(dataVo.icCardNo != null){ |
| | | if(!dataVo.isVirIcCard){ |
| | | //实体卡 |
| | | if(dataVo.remainMoney != null){ |
| | | VoCardInfo1 vo = sv.getIcCard(dataVo.icCardAddr, dataVo.icCardNo) ; |
| | | if(vo != null && vo.id != null){ |
| | | if(vo.money != null){ |
| | | if(vo.money > dataVo.remainMoney){ |
| | | //本地的剩余金额 大于 RTU上报的剩余金额 |
| | | this.updateIcCardRemainMoney(sv, vo.id, dataVo.remainMoney); |
| | | }else{ |
| | | //本地的剩余金额 小于 RTU上报的剩余金额,说明当前上报可能是补报或其他原因造成的现象 |
| | | //不做处理 |
| | | } |
| | | }else{ |
| | | //这种情况一般不会存在,除非有什么误操作造成 |
| | | this.updateIcCardRemainMoney(sv, vo.id, dataVo.remainMoney); |
| | | } |
| | | } |
| | | } |
| | | }else{ |
| | | //虚拟卡 |
| | | if(dataVo.remainMoney != null){ |
| | | VoCardInfo1 vo = sv.getVirIcCard(dataVo.icCardNo) ; |
| | | if(vo != null && vo.id != null){ |
| | | if(vo.money != null){ |
| | | if(vo.money > dataVo.remainMoney){ |
| | | //本地的剩余金额 大于 RTU上报的剩余金额 |
| | | this.updateVirIcCardRemainMoney(sv, vo.id, dataVo.remainMoney); |
| | | }else{ |
| | | //本地的剩余金额 小于 RTU上报的剩余金额,说明当前上报可能是补报或其他原因造成的现象 |
| | | //不做处理 |
| | | } |
| | | }else{ |
| | | //这种情况一般不会存在,除非有什么误操作造成 |
| | | this.updateVirIcCardRemainMoney(sv, vo.id, dataVo.remainMoney); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 更新实体卡剩余金额 |
| | | * @param id |
| | | * @param remainMoney |
| | | */ |
| | | private void updateIcCardRemainMoney(DbSv sv, Long id , Double remainMoney){ |
| | | sv.updateIcCardRemainMoney(id,remainMoney); |
| | | } |
| | | |
| | | /** |
| | | * 更新虚拟卡剩余金额 |
| | | * @param id |
| | | * @param remainMoney |
| | | */ |
| | | private void updateVirIcCardRemainMoney(DbSv sv, Long id , Double remainMoney){ |
| | | sv.updateVirIcCardRemainMoney(id, remainMoney); |
| | | } |
| | | |
| | | |
| | | private class UpDataVo{ |
| | | public Boolean isVirIcCard ;//是否为虚拟卡 |
| | | public String icCardAddr ;//卡地址 |
| | | public String icCardNo ;//卡编号 |
| | | public Double remainMoney ; //剩余金额 |
| | | |
| | | public void valueFrom(DataCd84Vo vo84, DataCd83OpenVo vo83Op, DataCd83CloseVo vo83Cl){ |
| | | if(vo84 != null){ |
| | | if(this.isAll0(vo84.cardAddr)){ |
| | | this.isVirIcCard = true ; |
| | | }else{ |
| | | this.isVirIcCard = false ; |
| | | } |
| | | this.icCardAddr = vo84.cardAddr ; |
| | | this.icCardNo = vo84.cardNo ; |
| | | this.remainMoney = vo84.remainMoney ; |
| | | }else if(vo83Op != null){ |
| | | if(this.isAll0(vo83Op.icCardAddr)){ |
| | | this.isVirIcCard = true ; |
| | | }else{ |
| | | this.isVirIcCard = false ; |
| | | } |
| | | this.icCardAddr = vo83Op.icCardAddr ; |
| | | this.icCardNo = vo83Op.icCardNo ; |
| | | this.remainMoney = vo83Op.remainMoney ; |
| | | }else if(vo83Cl != null){ |
| | | if(this.isAll0(vo83Cl.icCardAddr)){ |
| | | this.isVirIcCard = true ; |
| | | }else{ |
| | | this.isVirIcCard = false ; |
| | | } |
| | | this.icCardAddr = vo83Cl.icCardAddr ; |
| | | this.icCardNo = vo83Cl.icCardNo ; |
| | | this.remainMoney = vo83Cl.remainMoney ; |
| | | } |
| | | } |
| | | |
| | | private boolean isAll0(String s){ |
| | | if(s != null && !s.trim().equals("")){ |
| | | s = s.replaceAll("0", "") ; |
| | | if(s.equals("")){ |
| | | return true ; |
| | | }else{ |
| | | return false ; |
| | | } |
| | | } |
| | | return false ; |
| | | } |
| | | } |
| | | |
| | | |
| | | } |