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/p206V1/TkDealClientAmountDay.java | 344 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 344 insertions(+), 0 deletions(-) diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealClientAmountDay.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealClientAmountDay.java new file mode 100644 index 0000000..ca51f91 --- /dev/null +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealClientAmountDay.java @@ -0,0 +1,344 @@ +package com.dy.rtuMw.server.rtuData.p206V1; + +import com.dy.common.mw.protocol.Data; +import com.dy.common.mw.protocol.p206V1.DataV1; +import com.dy.common.mw.protocol.p206V1.upVos.DataCd83CloseVo; +import com.dy.common.util.DateTime; +import com.dy.pipIrrGlobal.pojoPr.PrController; +import com.dy.pipIrrGlobal.pojoRm.RmClientAmountDay; +import com.dy.pipIrrGlobal.pojoRm.RmClientAmountDayLast; +import com.dy.pipIrrGlobal.pojoSe.SeClient; +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; + +import java.util.Date; + +/** + * @Author: liurunyu + * @Date: 2024/7/9 10:00 + * @Description 鍐滄埛鏃ョ敤姘撮噺缁熻 + */ +public class TkDealClientAmountDay extends TaskSurpport { + + private static final Logger log = LogManager.getLogger(TkDealClientAmountDay.class.getName()); + + //绫籌D锛屼竴瀹氫笌Tree.xml閰嶇疆鏂囦欢涓厤缃竴鑷� + public static final String taskId = "TkDealClientAmountDay"; + + /** + * 鎵ц鑺傜偣浠诲姟: 鍙栨按鍙f棩鐢ㄦ按閲忓拰婕忔崯閲� + * + * @param data 闇�瑕佸鐞嗙殑鏁版嵁 + */ + @Override + public void execute(Object data) { + Data d = (Data) data; + DataV1 dV1 = (DataV1) d.getSubData();//鍓嶉潰浠诲姟宸茬粡鍒ゆ柇涓嶄负null + Object cdObj = dV1.subData; + if (cdObj != null && cdObj instanceof DataCd83CloseVo) { + /* + 鍙兘閲囩敤DataCd83CloseVo鏉ヨ绠楀啘鎴锋棩鐢ㄦ按閲忕殑鍘熷洜锛� + 1銆佸鏋滈噰鐢―ataCd84Vo(寮�闃�宸ヤ綔鎶�)鏉ヨ绠楀啘鎴锋棩鐢ㄦ按閲忥紝蹇呴』閲囩敤鏈绱娴侀噺鍑忎笂娆$疮娴侀噺鐨勫樊鍊间綔涓洪樁娈靛啘鎴风敤姘撮噺锛� + 鐒跺悗鍚勪釜闃舵鐩稿姞锛屽緱鍒版湰娆″啘鎴风敤姘撮噺锛岃繖涓敤姘撮噺杩樻病鍔犲埌鍐滄埛鏃ョ敤姘撮噺涓紝鍥犱负鍙湁鏀朵笉鍒癉ataCd83CloseVo(鍏抽榾鎶�) + 涓婃姤鏁版嵁鏃舵墠鑳藉姞鍒板啘鎴风敤姘撮噺涓紝鍚﹀垯灏变細閲嶅璁$畻锛屼絾浠�涔堟椂鍊欏強鑳藉惁鏀跺埌DataCd83CloseVo涓嶅彲棰勭煡銆� + 2銆佸鏋滃啘鎴锋湁澶氬紶IC鍗★紝鍚屾椂鍦ㄥ涓彇姘村彛鍙栨按锛屽皢浼氭槸鏇村鏉傜殑璁$畻锛岃澶氭儏褰㈡洿涓嶅彲棰勬祴锛屼笖鏃堕棿澶嶆潅搴� + 蹇呯劧寰堥珮锛岃繖鏍风▼搴忚繍琛屾椂闂存洿闀匡紝灏嗕細閫犳垚涓婅鏁版嵁鍫靛鐜拌薄銆� + 3銆佹墍浠ュ彧閲囩敤涓婃姤鏁版嵁DataCd83CloseVo浣滀负璁$畻鍐滄埛鐢ㄦ按閲忕殑鏁版嵁鏉ユ簮锛岃繖鏃跺繀鐒朵細鏈夋紡鎶ョ己澶辨儏鍐靛彂鐢燂紝閲囩敤琛ユ姤鏈哄埗鍙互寮ヨˉ涓�浜涖�� + */ + /* + 琛ユ姤DataCd83CloseVo澶勭悊鏂规硶锛� + 閲囩敤DataCd83CloseVo鏁版嵁涓殑鍏抽榾鏃堕棿closeDt璁$畻鍑哄啘鎴风敤姘存棩鏈燂紝涓嶈兘鐢ㄦ暟鎹帴鏀舵棩鏈熸椂闂翠綔涓哄啘鎴风敤姘存棩鏈燂紝 + 浣嗚繖绉嶈绠楁柟娉曞彲鑳戒細鏈夐噸澶嶄笂鎶ユ儏鍐靛彂鐢燂紝鍗抽噸澶嶈绠椾簡锛屽鏋滆鍒ゆ柇閲嶅锛屽繀鐒惰澧炲姞涓�涓叧闃�鏃堕棿鏁版嵁搴撹〃锛屽鍔犳椂闂� + 澶嶆潅搴︼紝璁$畻鐢ㄦ椂灏嗕細闀匡紝鏈郴缁熷亣璁惧彧瑕丷TU涓婃姤涓婃潵鏁版嵁浜嗭紝璇存槑褰撳墠缃戠粶杈冨ソ锛屽繀鐒惰兘鏀跺埌涓嬭搴旂瓟锛屼笉浼氬彂鐢熼噸澶嶈ˉ鎶ャ�� + */ + Object[] objs = this.getTaskResults(TkPreGenObjs.taskId); + DbSv sv = (DbSv) objs[0]; + PrController controller = (PrController) objs[1]; + SeClient clientVo = (SeClient)objs[3] ;//杩欎釜鍊煎璞′腑鍙湁id鍜宯ame浼氭湁鍊� + if(clientVo != null && clientVo.getId() != null) + try { + this.doDeal(sv, clientVo, controller, d.getRtuAddr(), dV1, (DataCd83CloseVo) cdObj); + } catch (Exception e) { + log.error("淇濆瓨鍙栨按鍙f棩鐢ㄦ按閲忓拰婕忔崯閲忔暟鎹椂鍙戠敓寮傚父", e); + } + } + } + + /** + * 涓氬姟澶勭悊 + * + * @param sv 鏈嶅姟 + * @param clientVo 鍐滄埛瀵硅薄 + * @param controller 鎺у埗鍣ㄥ璞� + * @param rtuAddr 鎺у埗鍣ㄥ湴鍧� + * @param dV1 涓婃姤鏁版嵁 + * @param cdData 涓婃姤鍏抽榾鏁版嵁瀵硅薄 + */ + private void doDeal(DbSv sv, SeClient clientVo, PrController controller, String rtuAddr, DataV1 dV1, DataCd83CloseVo cdData) throws Exception { + RmClientAmountDayLast poLast = sv.getRmClientAmountLast(clientVo.getId()); + if (poLast == null) { + //鏁版嵁搴撲腑涓嶅瓨鍦ㄨ鍐滄埛鐨勬棩鍙栨按閲忔暟鎹� + //棣栧厛鐢熸垚鏈�鏂版暟鎹強鍘嗗彶鏁版嵁锛屽苟鍏堜繚瀛� + poLast = this.newRmClientAmountLast(clientVo, dV1, cdData); + this.newAndSaveHistoryDataDeal(sv, clientVo, dV1, cdData, poLast); + sv.saveRmClientAmountLast(poLast); + } else { + if(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.rtuDt).equals(poLast.rtuDtLast)){ + //RTU鏃堕挓绛変簬鏈湴鏈�鏂版暟鎹腑鐨凴TU鏃堕挓锛岄噸澶嶄笂鎶ユ暟鎹紝涓嶈繘琛屼换浣曞鐞� + }else if(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.rtuDt).after(poLast.rtuDtLast)){ + //RTU鏃堕挓鏅氫簬鏈湴鏈�鏂版暟鎹腑鐨凴TU鏃堕挓锛屾槸鏂颁笂鎶ユ暟鎹� + Date upYmd = DateTime.dateFrom_yyyy_MM_dd1(cdData.closeDt);//閲囩敤鍏抽榾鏃ユ湡浣滀负缁熻鏃ユ湡 + if(upYmd.equals(poLast.dt)){ + //鍚屼竴澶╂暟鎹� + poLast = this.updateRmClientAmountLastBySameDateNewData(clientVo, dV1, cdData, poLast); + RmClientAmountDay poHistory = null ; + if(poLast.lastHistoryId != null){ + poHistory = sv.getRmClientAmountDay(poLast.lastHistoryId) ; + } + if(poHistory == null){ + this.newAndSaveHistoryDataDeal(sv, clientVo, dV1, cdData, poLast); + }else{ + poHistory = this.updateRmClientAmountBySameDateNewData(clientVo, poHistory, poLast, dV1, cdData); + sv.updateRmClientAmountDay(poHistory); + } + }else if(upYmd.after(poLast.dt)){ + //鏂扮殑鏃ユ湡 + poLast = this.updateRmClientAmountLastByNewDateNewData(clientVo, dV1, cdData, poLast); + this.newAndSaveHistoryDataDeal(sv, clientVo, dV1, cdData, poLast); + }else{ + //杩欑鎯呭喌涓嶅瓨鍦� + } + sv.updateRmClientAmountLast(poLast); + }else{ + //RTU鏃堕挓鏃╀簬鏈湴鏈�鏂版暟鎹腑鐨凴TU鏃堕挓锛屾槸琛ユ姤鏁版嵁 + Date upYmd = DateTime.dateFrom_yyyy_MM_dd1(cdData.closeDt);//閲囩敤鍏抽榾鏃ユ湡浣滀负缁熻鏃ユ湡 + RmClientAmountDay poHistory = sv.getRmClientAmountByClientAndDate(clientVo.getId(), upYmd) ; + if(poHistory == null){ + //鏃犲巻鍙叉暟鎹� + this.newAndSaveHistoryDataDeal(sv, clientVo, dV1, cdData, null); + }else{ + poHistory = this.updateOldRmClientAmountBySupplyData(clientVo, poHistory, dV1, cdData); + sv.updateRmClientAmountDay(poHistory); + } + } + } + } + + + /** + * 鐢熸垚鏂扮殑鎺у埗鍣ㄦ紡鎹熸棩缁熻鏈�鏂拌褰� + * @param clientVo + * @param dV1 + * @param cdData + * @return + * @throws Exception + */ + private RmClientAmountDayLast newRmClientAmountLast(SeClient clientVo, DataV1 dV1, DataCd83CloseVo cdData)throws Exception { + RmClientAmountDayLast po = new RmClientAmountDayLast() ; + po.clientId = clientVo.getId(); + po.amount = cdData.thisAmount ; + po.money = cdData.thisMoney ; + po.dt = DateTime.dateFrom_yyyy_MM_dd1(cdData.closeDt);//閲囩敤鍏抽榾鏃ユ湡浣滀负缁熻鏃ユ湡 + po.openDtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.openDt); + po.closeDtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.closeDt); + po.thisAmountLast = cdData.thisAmount ; + po.thisMoneyLast = cdData.thisMoney ; + po.thisTimeLast = cdData.thisTime ; + po.rtuDtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.rtuDt); + return po ; + } + + /** + * 鐢熸垚鏂扮殑鎺у埗鍣ㄦ紡鎹熸棩缁熻鍘嗗彶璁板綍 + * @param clientVo + * @param dV1 + * @param cdData + * @param lastPo + * @return + * @throws Exception + */ + private RmClientAmountDay newRmClientAmountDay(SeClient clientVo, DataV1 dV1, DataCd83CloseVo cdData, RmClientAmountDayLast lastPo)throws Exception { + RmClientAmountDay poHistory = new RmClientAmountDay() ; + poHistory.clientId = clientVo.getId(); + if(lastPo != null){ + if(poHistory.amount != null){ + poHistory.amount += lastPo.amount ; + }else{ + poHistory.amount = lastPo.amount ; + } + if(poHistory.money != null){ + poHistory.money += lastPo.money ; + }else{ + poHistory.money = lastPo.money ; + } + poHistory.times = 1 ; + poHistory.dt = lastPo.dt ; + poHistory.openDtLast = lastPo.openDtLast ; + poHistory.closeDtLast = lastPo.closeDtLast ; + poHistory.thisAmountLast = lastPo.thisAmountLast ; + poHistory.thisMoneyLast = lastPo.thisMoneyLast ; + poHistory.thisTimeLast = lastPo.thisTimeLast ; + poHistory.rtuDtLast = lastPo.rtuDtLast ; + }else{ + poHistory.amount = cdData.thisAmount ; + poHistory.money = cdData.thisMoney ; + poHistory.times = 1 ; + poHistory.dt = DateTime.dateFrom_yyyy_MM_dd1(cdData.closeDt);//閲囩敤鍏抽榾鏃ユ湡浣滀负缁熻鏃ユ湡 + poHistory.openDtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.openDt); + poHistory.closeDtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.closeDt); + poHistory.thisAmountLast = cdData.thisAmount ; + poHistory.thisMoneyLast = cdData.thisMoney ; + poHistory.thisTimeLast = cdData.thisTime ; + poHistory.rtuDtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.rtuDt); + } + return poHistory ; + } + + + /** + * 淇濆瓨鏂扮殑鍘嗗彶鏁版嵁璁板綍锛屽苟鎶奍D璧嬪�肩粰鏈�鏂拌褰曠殑 lastHistoryId + * @param sv + * @param clientVo + * @param dV1 + * @param cdData + * @param lastPo + * @throws Exception + * @return RmIntakeAmountDay + */ + private RmClientAmountDay newAndSaveHistoryDataDeal(DbSv sv, SeClient clientVo, DataV1 dV1, DataCd83CloseVo cdData, RmClientAmountDayLast lastPo)throws Exception { + RmClientAmountDay poHistory = this.newRmClientAmountDay(clientVo, dV1, cdData, lastPo) ; + sv.saveRmClientAmountDay(poHistory); + //鐢辨渶鏂版暟鎹寔鏈夊巻鍙叉暟鎹腑鐨勬渶鏂拌褰旾D锛屼互鏂逛究蹇�熸煡璇� + lastPo.lastHistoryId = poHistory == null ? null: poHistory.id ; + return poHistory ; + } + + /** + * 鏇存柊鏈�鏂版暟鎹� + * @param clientVo + * @param dV1 + * @param cdData + * @param lastPo + * @return + * @throws Exception + */ + private RmClientAmountDayLast updateRmClientAmountLastBySameDateNewData(SeClient clientVo, DataV1 dV1, DataCd83CloseVo cdData, RmClientAmountDayLast lastPo)throws Exception { + lastPo.clientId = clientVo.getId(); + if(lastPo.amount != null){ + lastPo.amount += cdData.thisAmount ; + }else{ + lastPo.amount = cdData.thisAmount ; + } + if(lastPo.money != null){ + lastPo.money += cdData.thisMoney ; + }else{ + lastPo.money = cdData.thisMoney ; + } + lastPo.dt = DateTime.dateFrom_yyyy_MM_dd1(cdData.closeDt);//閲囩敤鍏抽榾鏃ユ湡浣滀负缁熻鏃ユ湡 + lastPo.openDtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.openDt); + lastPo.closeDtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.closeDt); + lastPo.thisAmountLast = cdData.thisAmount ; + lastPo.thisMoneyLast = cdData.thisMoney ; + lastPo.thisTimeLast = cdData.thisTime ; + lastPo.rtuDtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.rtuDt); + return lastPo ; + } + + + /** + * 鏇存柊鏈�鏂版暟鎹� + * @param clientVo + * @param dV1 + * @param cdData + * @param lastPo + * @return + * @throws Exception + */ + private RmClientAmountDayLast updateRmClientAmountLastByNewDateNewData(SeClient clientVo, DataV1 dV1, DataCd83CloseVo cdData, RmClientAmountDayLast lastPo)throws Exception { + lastPo.clientId = clientVo.getId(); + lastPo.amount = cdData.thisAmount ; + lastPo.money = cdData.thisMoney ; + lastPo.dt = DateTime.dateFrom_yyyy_MM_dd1(cdData.closeDt);//閲囩敤鍏抽榾鏃ユ湡浣滀负缁熻鏃ユ湡 + lastPo.openDtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.openDt); + lastPo.closeDtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.closeDt); + lastPo.thisAmountLast = cdData.thisAmount ; + lastPo.thisMoneyLast = cdData.thisMoney ; + lastPo.thisTimeLast = cdData.thisTime ; + lastPo.rtuDtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.rtuDt); + return lastPo ; + } + /** + * 鏇存柊鏈�鏂版暟鎹� + * @param clientVo + * @param poHistory + * @param dV1 + * @param cdData + * @param lastPo + * @return + * @throws Exception + */ + private RmClientAmountDay updateRmClientAmountBySameDateNewData(SeClient clientVo, RmClientAmountDay poHistory, RmClientAmountDayLast lastPo, DataV1 dV1, DataCd83CloseVo cdData)throws Exception { + poHistory.clientId = clientVo.getId(); + if(poHistory.amount != null){ + poHistory.amount += cdData.thisAmount ; + }else{ + poHistory.amount = cdData.thisAmount ; + } + if(poHistory.money != null){ + poHistory.money += cdData.thisMoney ; + }else{ + poHistory.money = cdData.thisMoney ; + } + if(poHistory.times != null){ + poHistory.times += 1 ; + }else{ + poHistory.times = 1 ; + } + poHistory.dt = lastPo.dt ; + poHistory.openDtLast = lastPo.openDtLast ; + poHistory.closeDtLast = lastPo.closeDtLast ; + poHistory.thisAmountLast = lastPo.thisAmountLast ; + poHistory.thisMoneyLast = lastPo.thisMoneyLast ; + poHistory.thisTimeLast = lastPo.thisTimeLast ; + poHistory.rtuDtLast = lastPo.rtuDtLast ; + return poHistory ; + } + + /** + * 鏇存柊鏈�鏂版暟鎹� + * @param clientVo + * @param poHistory + * @param dV1 + * @param cdData + * @return + * @throws Exception + */ + private RmClientAmountDay updateOldRmClientAmountBySupplyData(SeClient clientVo, RmClientAmountDay poHistory, DataV1 dV1, DataCd83CloseVo cdData)throws Exception { + poHistory.clientId = clientVo.getId(); + if(poHistory.amount != null){ + poHistory.amount += cdData.thisAmount ; + }else{ + poHistory.amount = cdData.thisAmount ; + } + if(poHistory.money != null){ + poHistory.money += cdData.thisMoney ; + }else{ + poHistory.money = cdData.thisMoney ; + } + if(poHistory.times != null){ + poHistory.times += 1 ; + }else{ + poHistory.times = 1 ; + } + poHistory.dt = DateTime.dateFrom_yyyy_MM_dd1(cdData.closeDt);//閲囩敤鍏抽榾鏃ユ湡浣滀负缁熻鏃ユ湡 + poHistory.openDtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.openDt) ; + poHistory.closeDtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.closeDt) ; + poHistory.thisAmountLast = cdData.thisAmount ; + poHistory.thisMoneyLast = cdData.thisMoney ; + poHistory.thisTimeLast = cdData.thisTime ; + poHistory.rtuDtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(cdData.rtuDt) ; + return poHistory ; + } +} \ No newline at end of file -- Gitblit v1.8.0