From 1a2b07f01ba4616fd9e894dddf474b56d020158c Mon Sep 17 00:00:00 2001 From: zhubaomin <zhubaomin> Date: 星期一, 07 四月 2025 15:18:51 +0800 Subject: [PATCH] 整理版本 --- pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V2/TkDealIntakeAmountDayV2.java | 357 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 357 insertions(+), 0 deletions(-) diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V2/TkDealIntakeAmountDayV2.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V2/TkDealIntakeAmountDayV2.java new file mode 100644 index 0000000..84d52b9 --- /dev/null +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V2/TkDealIntakeAmountDayV2.java @@ -0,0 +1,357 @@ +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.common.mw.protocol.p206V2.upVos.DataCdC0Vo; +import com.dy.common.util.DateTime; +import com.dy.pipIrrGlobal.pojoPr.PrController; +import com.dy.pipIrrGlobal.pojoRm.RmIntakeAmountDay; +import com.dy.pipIrrGlobal.pojoRm.RmIntakeAmountDayLast; +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/7/8 19:00 + * @Description 鍙栨按鍙f棩鐢ㄦ按閲忓拰婕忔崯閲� + */ +public class TkDealIntakeAmountDayV2 extends TaskSurpport { + + private static final Logger log = LogManager.getLogger(TkDealIntakeAmountDayV2.class.getName()); + + //绫籌D锛屼竴瀹氫笌Tree.xml閰嶇疆鏂囦欢涓厤缃竴鑷� + public static final String taskId = "TkDealIntakeAmountDayV2"; + + /** + * 鎵ц鑺傜偣浠诲姟: 鍙栨按鍙f棩鐢ㄦ按閲忓拰婕忔崯閲� + * + * @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 DataCdC0Vo + || cdObj instanceof DataCd84Vo + || cdObj instanceof DataCd83OpenVo + || cdObj instanceof DataCd83CloseVo)){ + Object[] objs = this.getTaskResults(TkPreGenObjsV2.taskId) ; + DbSv sv = (DbSv)objs[0] ; + PrController controller = (PrController)objs[1] ; + try{ + UpDataVo vo = new UpDataVo() ; + if(cdObj instanceof DataCdC0Vo){ + vo.valueFrom((DataCdC0Vo)cdObj, null, null, null); + }else if(cdObj instanceof DataCd84Vo){ + vo.valueFrom(null, (DataCd84Vo)cdObj, null, null); + }else if(cdObj instanceof DataCd83OpenVo){ + vo.valueFrom(null,null, (DataCd83OpenVo)cdObj,null); + }else if(cdObj instanceof DataCd83CloseVo){ + vo.valueFrom(null,null,null, (DataCd83CloseVo)cdObj); + } + this.doDeal(sv, controller, d.getRtuAddr(), dV2, vo); + }catch (Exception e){ + log.error("淇濆瓨鍙栨按鍙f棩鐢ㄦ按閲忓拰婕忔崯閲忔暟鎹椂鍙戠敓寮傚父", e); + } + } + } + + /** + * 涓氬姟澶勭悊 + * @param sv 鏈嶅姟 + * @param controller 鎺у埗鍣ㄥ璞� + * @param rtuAddr 鎺у埗鍣ㄥ湴鍧� + * @param dV2 涓婃姤鏁版嵁 + * @param dataVo 涓婃姤鏁版嵁瀵硅薄 + */ + private void doDeal(DbSv sv, PrController controller, String rtuAddr, DataV2 dV2, UpDataVo dataVo) throws Exception { + RmIntakeAmountDayLast poLast = sv.getRmIntakeAmountLast(controller.getIntakeId()); + if (poLast == null) { + //鏁版嵁搴撲腑涓嶅瓨鍦ㄨ鍙栨按鍙g殑鏃ュ彇姘撮噺鏁版嵁 + //棣栧厛鐢熸垚鏈�鏂版暟鎹強鍘嗗彶鏁版嵁锛屽苟鍏堜繚瀛� + poLast = this.newRmIntakeAmountLast(controller, rtuAddr, dV2, dataVo); + this.newAndSaveHistoryDataDeal(sv, controller, rtuAddr, dV2, dataVo, poLast); + sv.saveRmIntakeAmountLast(poLast); + } else { + if(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataVo.rtuDt).before(poLast.rtuDtLast)){ + //RTU鏃堕挓鏃╀簬鏈湴RTU鏃堕挓锛屾槸琛ユ姤锛屼笉鐢ㄨˉ鎶ユ潵璁$畻鍙栨按鍙f棩绱鍙栨按閲忥紝鍥犱负閲囩敤鐨勬槸绱娴侀噺鐩稿樊鐨勮绠楁柟娉曪紝 + //鍏跺疄琛ユ姤鐨勯噺鍊硷紝鍩轰簬鍓嶉潰涓婃姤鏁版嵁宸茬粡璁$畻鍖呭惈浜嗭紝鍙槸閲忓�煎綊缁撶殑鏃ユ湡涓嶆纭舰浜嗐�� + }else if(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataVo.rtuDt).equals(poLast.rtuDtLast)){ + //RTU鏃堕挓绛変簬鏈湴RTU鏃堕挓锛岄噸澶嶄笂鎶ユ暟鎹紝涓嶈繘琛屼换浣曞鐞� + }else{ + //涓婅鏁版嵁涓殑鏃ユ湡鏃堕棿绗﹀悎璁$畻鐨勬潯浠� + if(!rtuAddr.equals(poLast.rtuAddrLast)){ + //鏇存崲浜嗘帶鍒跺櫒锛屽鐞嗘柟娉曪細鍙洿鎹㈡帶鍒跺櫒鍦板潃锛屼笉杩涜姘撮噺璁$畻 + //鍥犱负涓婅鏁版嵁涓殑鏃ユ湡鏃堕棿鏄彲杩涜璁$畻鐨� + if(DateTime.dateFrom_yyyy_MM_dd1(dV2.dt).equals(poLast.dt)){ + //鍚屼竴澶╂暟鎹� + poLast = this.updateRmIntakeAmountLastByControllerChange(poLast, controller, rtuAddr, dV2, dataVo); + RmIntakeAmountDay poHistory = null ; + if(poLast.lastHistoryId != null){ + poHistory = sv.getRmIntakeAmountDay(poLast.lastHistoryId) ; + } + if(poHistory == null){ + this.newAndSaveHistoryDataDeal(sv, controller, rtuAddr, dV2, dataVo, poLast); + }else{ + poHistory = this.updateRmIntakeAmountByControllerChange(poHistory, poLast, controller, rtuAddr, dV2, dataVo); + sv.updateRmIntakeAmountDay(poHistory); + } + }else{ + //闈炲悓涓�澶╋紝鎵�浠ユ柊鐢熸垚涓�涓巻鍙茶褰� + poLast = this.updateRmIntakeAmountLastByControllerChange(poLast, controller, rtuAddr, dV2, dataVo); + this.newAndSaveHistoryDataDeal(sv, controller, rtuAddr, dV2, dataVo, poLast); + } + }else{ + //鏈洿鎹㈡帶鍒跺櫒 + if(DateTime.dateFrom_yyyy_MM_dd1(dV2.dt).equals(poLast.dt)){ + //鍚屼竴澶╂暟鎹� + poLast = this.updateRmIntakeAmountLastBySameDateNewData(poLast, controller, rtuAddr, dV2, dataVo); + RmIntakeAmountDay poHistory = null ; + if(poLast.lastHistoryId != null){ + poHistory = sv.getRmIntakeAmountDay(poLast.lastHistoryId) ; + } + if(poHistory == null){ + this.newAndSaveHistoryDataDeal(sv, controller, rtuAddr, dV2, dataVo, poLast); + }else{ + poHistory = this.updateRmIntakeAmountBySameDateNewData(poHistory, poLast, controller, rtuAddr, dV2, dataVo); + sv.updateRmIntakeAmountDay(poHistory); + } + }else if(DateTime.dateFrom_yyyy_MM_dd1(dV2.dt).after(poLast.dt)){ + //鏂扮殑鏃ユ湡 + poLast = this.updateRmIntakeAmountLastByNewDateNewData(poLast, controller, rtuAddr, dV2, dataVo); + this.newAndSaveHistoryDataDeal(sv, controller, rtuAddr, dV2, dataVo, poLast); + }else{ + //杩欑鎯呭喌涓嶅瓨鍦� + } + } + } + //鏇存柊鏈�鏂版暟鎹� + sv.updateRmIntakeAmountLast(poLast); + } + } + + /** + * 鐢熸垚鏂扮殑鎺у埗鍣ㄦ紡鎹熸棩缁熻鏈�鏂拌褰� + * @param controller + * @param rtuAddr + * @param dV2 + * @param cdData + * @return + * @throws Exception + */ + private RmIntakeAmountDayLast newRmIntakeAmountLast(PrController controller, String rtuAddr, DataV2 dV2, UpDataVo cdData)throws Exception { + RmIntakeAmountDayLast po = new RmIntakeAmountDayLast() ; + po.intakeId = controller==null?null:controller.getIntakeId(); + po.controllerIdLast = controller==null?null:controller.getId(); + po.totalAmountLast = cdData.totalAmount ; + po.dt = DateTime.dateFrom_yyyy_MM_dd1(dV2.dt); + po.dtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV2.dt); + po.rtuDtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.rtuDt); + po.amount = 0.0D ; + po.rtuAddrLast = rtuAddr; + return po ; + } + + /** + * 鐢熸垚鏂扮殑鎺у埗鍣ㄦ紡鎹熸棩缁熻鍘嗗彶璁板綍 + * @param controller + * @param rtuAddr + * @param dV2 + * @param cdData + * @return + * @throws Exception + */ + private RmIntakeAmountDay newRmIntakeAmountDay(PrController controller, String rtuAddr, DataV2 dV2, UpDataVo cdData, RmIntakeAmountDayLast lastPo)throws Exception { + RmIntakeAmountDay po = new RmIntakeAmountDay() ; + po.intakeId = controller==null?null:controller.getIntakeId(); + po.controllerIdLast = controller==null?null:controller.getId(); + po.rtuAddrLast = rtuAddr; + po.dt = DateTime.dateFrom_yyyy_MM_dd1(dV2.dt); + po.dtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV2.dt); + po.rtuDtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.rtuDt); + if(lastPo != null){ + po.amount = lastPo.amount ; + }else{ + po.amount = 0.0D ; + } + po.totalAmountLast = cdData.totalAmount ; + return po ; + } + + + /** + * 淇濆瓨鏂扮殑鍘嗗彶鏁版嵁璁板綍锛屽苟鎶奍D璧嬪�肩粰鏈�鏂拌褰曠殑 lastHistoryId + * @param sv + * @param controller + * @param rtuAddr + * @param dV2 + * @param dataCdC0Vo + * @param poLast + * @throws Exception + * @return RmIntakeAmountDay + */ + private RmIntakeAmountDay newAndSaveHistoryDataDeal(DbSv sv, PrController controller, String rtuAddr, DataV2 dV2, UpDataVo dataCdC0Vo, RmIntakeAmountDayLast poLast)throws Exception { + RmIntakeAmountDay poHistory = this.newRmIntakeAmountDay(controller, rtuAddr, dV2, dataCdC0Vo, poLast) ; + sv.saveRmIntakeAmountDay(poHistory); + //鐢辨渶鏂版暟鎹寔鏈夊巻鍙叉暟鎹腑鐨勬渶鏂拌褰旾D锛屼互鏂逛究蹇�熸煡璇� + poLast.lastHistoryId = poHistory == null ? null: poHistory.id ; + return poHistory ; + } + + + /** + * 鐢熸垚鏂扮殑鎺у埗鍣ㄦ紡鎹熸棩缁熻鏈�鏂拌褰� + * @param controller + * @param rtuAddr + * @param dV2 + * @param cdData + * @return + * @throws Exception + */ + private RmIntakeAmountDayLast updateRmIntakeAmountLastByControllerChange(RmIntakeAmountDayLast lastPo, PrController controller, String rtuAddr, DataV2 dV2, UpDataVo cdData)throws Exception { + lastPo.intakeId = controller==null?null:controller.getIntakeId(); + lastPo.controllerIdLast = controller==null?null:controller.getId(); + lastPo.rtuAddrLast = rtuAddr; + lastPo.dt = DateTime.dateFrom_yyyy_MM_dd1(dV2.dt); + lastPo.dtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV2.dt); + lastPo.rtuDtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.rtuDt); + //lastPo.amount = lastPo.amount ; //鏃ョ疮璁″彇姘撮噺涓嶅彉 + lastPo.totalAmountLast = cdData.totalAmount ; + return lastPo ; + } + + /** + * 鏇存柊鏈�鏂拌褰� + * @param controller + * @param rtuAddr + * @param dV2 + * @param cdData + * @return + * @throws Exception + */ + private RmIntakeAmountDayLast updateRmIntakeAmountLastBySameDateNewData(RmIntakeAmountDayLast lastPo, PrController controller, String rtuAddr, DataV2 dV2, UpDataVo cdData)throws Exception { + lastPo.intakeId = controller==null?null:controller.getIntakeId(); + lastPo.controllerIdLast = controller==null?null:controller.getId(); + lastPo.rtuAddrLast = rtuAddr; + //lastPo.dt = DateTime.dateFrom_yyyy_MM_dd1(dV2.dt);//鏃ユ湡娌″彉 + lastPo.dtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV2.dt); + lastPo.rtuDtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.rtuDt); + Double added = cdData.totalAmount - lastPo.totalAmountLast ; + if(added > 0){ + if(lastPo.amount == null){ + lastPo.amount = added ; + }else{ + lastPo.amount += added ; + } + }else{ + //po.amount = po.amount ; //鏃ョ疮璁″彇姘撮噺涓嶅彉 + } + lastPo.totalAmountLast = cdData.totalAmount ; + return lastPo ; + } + + /** + * 鏇存柊鏈�鏂拌褰� + * @param controller + * @param rtuAddr + * @param dV2 + * @param cdData + * @return + * @throws Exception + */ + private RmIntakeAmountDayLast updateRmIntakeAmountLastByNewDateNewData(RmIntakeAmountDayLast lastPo, PrController controller, String rtuAddr, DataV2 dV2, UpDataVo cdData)throws Exception { + lastPo.intakeId = controller==null?null:controller.getIntakeId(); + lastPo.controllerIdLast = controller==null?null:controller.getId(); + lastPo.rtuAddrLast = rtuAddr; + lastPo.dt = DateTime.dateFrom_yyyy_MM_dd1(dV2.dt);//鏃ユ湡鍙樹簡 + lastPo.dtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV2.dt); + lastPo.rtuDtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.rtuDt); + Double added = cdData.totalAmount - lastPo.totalAmountLast ; + if(added > 0){ + //鏂扮殑涓�澶╃殑澶勭悊鏂瑰紡涓庡悓涓�澶╃殑澶勭悊鏂瑰紡涓嶄竴鏍� + lastPo.amount = added; + }else{ + lastPo.amount = 0.0D; //鏃ョ疮璁℃按閲忓綊0 + } + lastPo.totalAmountLast = cdData.totalAmount ; + return lastPo ; + } + + /** + * 鐢熸垚鏂扮殑鎺у埗鍣ㄦ紡鎹熸棩缁熻鏈�鏂拌褰� + * @param controller + * @param rtuAddr + * @param dV2 + * @param cdData + * @return + * @throws Exception + */ + private RmIntakeAmountDay updateRmIntakeAmountByControllerChange(RmIntakeAmountDay po, RmIntakeAmountDayLast lastPo, PrController controller, String rtuAddr, DataV2 dV2, UpDataVo cdData)throws Exception { + po.intakeId = controller==null?null:controller.getIntakeId(); + po.controllerIdLast = controller==null?null:controller.getId(); + po.rtuAddrLast = rtuAddr; + po.dt = lastPo.dt ; + po.dtLast = lastPo.dtLast; + po.rtuDtLast = lastPo.rtuDtLast; + + po.amount = lastPo.amount ; + po.totalAmountLast = lastPo.totalAmountLast ; + + return po ; + } + + /** + * 鏇存柊鍘嗗彶璁板綍 + * @param controller + * @param rtuAddr + * @param dV2 + * @param cdData + * @return + * @throws Exception + */ + private RmIntakeAmountDay updateRmIntakeAmountBySameDateNewData(RmIntakeAmountDay po, RmIntakeAmountDayLast lastPo, PrController controller, String rtuAddr, DataV2 dV2, UpDataVo cdData)throws Exception { + po.intakeId = controller==null?null:controller.getIntakeId(); + po.controllerIdLast = controller==null?null:controller.getId(); + po.rtuAddrLast = rtuAddr; + po.dt = lastPo.dt ; + po.dtLast = lastPo.dtLast; + po.rtuDtLast = lastPo.rtuDtLast; + + po.amount = lastPo.amount ;//姝ゆ椂lastPo.amount宸茬粡澧炲姞涓婁簡澧為噺 + po.totalAmountLast = lastPo.totalAmountLast ; + + return po ; + } + + + public class UpDataVo{ + public Double totalAmount; //绱娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3銆� + public String rtuDt ;//鎺у埗鍣ㄦ椂閽� + + public void valueFrom(DataCdC0Vo voC0, DataCd84Vo vo84, DataCd83OpenVo vo83Op, DataCd83CloseVo vo83Cl){ + if(voC0 != null){ + this.totalAmount = voC0.totalAmount ; + this.rtuDt = voC0.rtuDt ; + }else if(vo84 != null){ + this.totalAmount = vo84.totalAmount ; + this.rtuDt = vo84.rtuDt ; + }else if(vo83Op != null){ + this.totalAmount = vo83Op.totalAmount ; + this.rtuDt = vo83Op.rtuDt ; + }else if(vo83Cl != null){ + this.totalAmount = vo83Cl.totalAmount ; + this.rtuDt = vo83Cl.rtuDt ; + } + } + + } + + + +} -- Gitblit v1.8.0