|  |  |  | 
|---|
|  |  |  | package com.dy.rtuMw.server.rtuData.p206V1_0_0; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.dy.pipIrrGlobal.pojoSe.SeClient; | 
|---|
|  |  |  | import com.dy.rtuMw.server.ServerProperties; | 
|---|
|  |  |  | import com.dy.rtuMw.server.rtuData.TaskSurpport; | 
|---|
|  |  |  | import com.dy.rtuMw.server.rtuData.dbSv.DbSv; | 
|---|
|  |  |  | import com.dy.common.mw.protocol.Data; | 
|---|
|  |  |  | import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataCd84Vo; | 
|---|
|  |  |  | import com.dy.common.mw.protocol.p206V1_0_0.DataV1_0_1; | 
|---|
|  |  |  | import com.dy.common.util.DateTime; | 
|---|
|  |  |  | import com.dy.pipIrrGlobal.pojoPr.PrController; | 
|---|
|  |  |  | import com.dy.pipIrrGlobal.pojoRm.RmWorkReportHistory; | 
|---|
|  |  |  | import com.dy.pipIrrGlobal.pojoRm.RmWorkReportLast; | 
|---|
|  |  |  | import org.apache.logging.log4j.LogManager; | 
|---|
|  |  |  | import org.apache.logging.log4j.Logger; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.util.HashMap; | 
|---|
|  |  |  | import java.util.Map; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * @Author liurunyu | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private static final Logger log = LogManager.getLogger(TkDealWorkReport.class.getName()) ; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private static final Map<String, Integer> RtuReportTimes = new HashMap<>(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //类ID,一定与Tree.xml配置文件中配置一致 | 
|---|
|  |  |  | public static final String taskId = "TkDealWorkReport" ; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void execute(Object data) { | 
|---|
|  |  |  | Data d = (Data) data; | 
|---|
|  |  |  | Object subD = d.getSubData(); | 
|---|
|  |  |  | if (subD != null) { | 
|---|
|  |  |  | DataV1_0_1 dV1_0_1 = (DataV1_0_1) subD; | 
|---|
|  |  |  | //            if (dV1_0_1 != null && dV1_0_1.dataCd84Vo != null) { | 
|---|
|  |  |  | //                Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ; | 
|---|
|  |  |  | //                DbSv sv = (DbSv)objs[0] ; | 
|---|
|  |  |  | //                PrController controller = (PrController)objs[1] ; | 
|---|
|  |  |  | //                try{ | 
|---|
|  |  |  | //                    this.doDeal(sv, controller, d.getRtuAddr(), dV1_0_1, dV1_0_1.dataCd84Vo) ; | 
|---|
|  |  |  | //                }catch (Exception e){ | 
|---|
|  |  |  | //                    log.error("保存控制器阀开工作报时发生异常", e); | 
|---|
|  |  |  | //                } | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  | DataV1_0_1 dV1_0_1 = (DataV1_0_1) d.getSubData();//前面任务已经判断不为null | 
|---|
|  |  |  | Object cdObj = dV1_0_1.subData; | 
|---|
|  |  |  | if (cdObj != null && cdObj instanceof DataCd84Vo) { | 
|---|
|  |  |  | boolean deal = false ; | 
|---|
|  |  |  | Integer times = RtuReportTimes.get(d.rtuAddr) ; | 
|---|
|  |  |  | if(times == null){ | 
|---|
|  |  |  | times = 1 ; | 
|---|
|  |  |  | RtuReportTimes.put(d.rtuAddr, times) ; | 
|---|
|  |  |  | deal = true ;//第一次 | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | times++ ; | 
|---|
|  |  |  | if(times > ServerProperties.workReportDealOneByTimes){ | 
|---|
|  |  |  | times = 1 ;//循环第一次 | 
|---|
|  |  |  | deal = true ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | RtuReportTimes.put(d.rtuAddr, times) ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(deal){ | 
|---|
|  |  |  | Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ; | 
|---|
|  |  |  | DbSv sv = (DbSv)objs[0] ; | 
|---|
|  |  |  | PrController controller = (PrController)objs[1] ; | 
|---|
|  |  |  | SeClient clientVo = (SeClient)objs[3] ;//这个值对象中只有id和name会有值 | 
|---|
|  |  |  | try{ | 
|---|
|  |  |  | this.doDeal(sv, clientVo, controller, d.getRtuAddr(), dV1_0_1, (DataCd84Vo)cdObj) ; | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  | log.error("保存控制器阀开工作报时发生异常", e); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 处理阀开工作报数据 | 
|---|
|  |  |  | * @param sv 服务 | 
|---|
|  |  |  | * @param clientVo 农户对象(不为空时,只有id和name有值) | 
|---|
|  |  |  | * @param controller 控制器对象 | 
|---|
|  |  |  | * @param rtuAddr 控制器地址 | 
|---|
|  |  |  | * @param dataCd84Vo 工作报数据对象 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private void doDeal(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd84Vo dataCd84Vo) throws Exception { | 
|---|
|  |  |  | this.saveLast(sv, controller, rtuAddr, dV1_0_1, dataCd84Vo); | 
|---|
|  |  |  | this.saveHistory(sv, controller, rtuAddr, dV1_0_1, dataCd84Vo); | 
|---|
|  |  |  | private void doDeal(DbSv sv, SeClient clientVo, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd84Vo dataCd84Vo) throws Exception { | 
|---|
|  |  |  | this.saveOrUpdateLast(sv, clientVo, controller, rtuAddr, dV1_0_1, dataCd84Vo); | 
|---|
|  |  |  | this.saveHistory(sv, clientVo, controller, rtuAddr, dV1_0_1, dataCd84Vo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 保存阀开工作报最新数据 | 
|---|
|  |  |  | * @param sv | 
|---|
|  |  |  | * @param clientVo 农户对象(不为空时,只有id和name有值) | 
|---|
|  |  |  | * @param controller | 
|---|
|  |  |  | * @param rtuAddr | 
|---|
|  |  |  | * @param dV1_0_1 | 
|---|
|  |  |  | * @param dataCd84Vo | 
|---|
|  |  |  | * @param cdData | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private void saveLast(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd84Vo dataCd84Vo) throws Exception { | 
|---|
|  |  |  | RmWorkReportLast po = sv.getRmWorkReportLast(rtuAddr) ; | 
|---|
|  |  |  | private void saveOrUpdateLast(DbSv sv, SeClient clientVo, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd84Vo cdData) throws Exception { | 
|---|
|  |  |  | RmWorkReportLast po = sv.getRmWorkReportLast(controller.getIntakeId()) ; | 
|---|
|  |  |  | if(po == null){ | 
|---|
|  |  |  | po = new RmWorkReportLast(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(dataCd84Vo.rtuDt), | 
|---|
|  |  |  | dataCd84Vo.cardNo, | 
|---|
|  |  |  | dataCd84Vo.totalAmount, | 
|---|
|  |  |  | dataCd84Vo.instantAmount, | 
|---|
|  |  |  | dataCd84Vo.remainMoney) ; | 
|---|
|  |  |  | sv.saveRmWorkReportLast(po) ; | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | po = new RmWorkReportLast() ; | 
|---|
|  |  |  | po.clientId = clientVo==null?null:clientVo.getId() ; | 
|---|
|  |  |  | po.clientName = clientVo==null?null:clientVo.getName() ; | 
|---|
|  |  |  | 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(dataCd84Vo.rtuDt); | 
|---|
|  |  |  | po.icCardNo = dataCd84Vo.cardNo; | 
|---|
|  |  |  | po.totalAmount = dataCd84Vo.totalAmount; | 
|---|
|  |  |  | po.instantAmount = dataCd84Vo.instantAmount; | 
|---|
|  |  |  | po.remainMoney = dataCd84Vo.remainMoney; | 
|---|
|  |  |  | po.rtuAddr = rtuAddr; | 
|---|
|  |  |  | po.valueFrom(dV1_0_1, cdData); | 
|---|
|  |  |  | sv.saveRmWorkReportLast(po) ; | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | po.clientId = clientVo==null?null:clientVo.getId() ; | 
|---|
|  |  |  | po.clientName = clientVo==null?null:clientVo.getName() ; | 
|---|
|  |  |  | po.controllerId = controller==null?null:controller.getId(); | 
|---|
|  |  |  | po.intakeId = controller==null?null:controller.getIntakeId(); | 
|---|
|  |  |  | po.valueFrom(dV1_0_1, cdData); | 
|---|
|  |  |  | sv.updateRmWorkReportLast(po); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 保存阀开工作报历史数据 | 
|---|
|  |  |  | * @param sv | 
|---|
|  |  |  | * @param clientVo 农户对象(不为空时,只有id和name有值) | 
|---|
|  |  |  | * @param controller | 
|---|
|  |  |  | * @param rtuAddr | 
|---|
|  |  |  | * @param dV1_0_1 | 
|---|
|  |  |  | * @param dataCd84Vo | 
|---|
|  |  |  | * @param cdData | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private void saveHistory(DbSv sv, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd84Vo dataCd84Vo) throws Exception { | 
|---|
|  |  |  | RmWorkReportHistory po = new RmWorkReportHistory(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(dataCd84Vo.rtuDt), | 
|---|
|  |  |  | dataCd84Vo.cardNo, | 
|---|
|  |  |  | dataCd84Vo.totalAmount, | 
|---|
|  |  |  | dataCd84Vo.instantAmount, | 
|---|
|  |  |  | dataCd84Vo.remainMoney) ; | 
|---|
|  |  |  | private void saveHistory(DbSv sv, SeClient clientVo, PrController controller, String rtuAddr, DataV1_0_1 dV1_0_1, DataCd84Vo cdData) throws Exception { | 
|---|
|  |  |  | RmWorkReportHistory po = new RmWorkReportHistory(); | 
|---|
|  |  |  | po.clientId = clientVo==null?null:clientVo.getId() ; | 
|---|
|  |  |  | po.clientName = clientVo==null?null:clientVo.getName() ; | 
|---|
|  |  |  | po.controllerId = controller==null?null:controller.getId(); | 
|---|
|  |  |  | po.intakeId = controller==null?null:controller.getIntakeId(); | 
|---|
|  |  |  | po.rtuAddr = rtuAddr; | 
|---|
|  |  |  | po.valueFrom(dV1_0_1, cdData); | 
|---|
|  |  |  | sv.saveRmWorkReportHistory(po) ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|