From 656aa4f953eb52502a6414965e46642c31b6e8ee Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期二, 29 四月 2025 15:33:09 +0800 Subject: [PATCH] 设备会在多种功能码上报数据中携带报警与状态数据,这样数据库保存设备报警与状态数据可能很多,为此修改逻辑,当前实现为一设备一个小时内只保存一条报警与状态数据。 --- pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealLoss.java | 171 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 171 insertions(+), 0 deletions(-) diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealLoss.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealLoss.java new file mode 100644 index 0000000..42b3242 --- /dev/null +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V1/TkDealLoss.java @@ -0,0 +1,171 @@ +package com.dy.rtuMw.server.rtuData.p206V1; + +import com.dy.pipIrrGlobal.pojoRm.RmLossDay; +import com.dy.pipIrrGlobal.pojoRm.RmLossDayLast; +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.upVos.DataCdC0Vo; +import com.dy.common.mw.protocol.p206V1.DataV1; +import com.dy.common.util.DateTime; +import com.dy.pipIrrGlobal.pojoPr.PrController; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.util.Date; + +/** + * @Author liurunyu + * @Date 2024/2/28 16:31 + * @LastEditTime 2024/2/28 16:31 + * @Description 鍙栨按鍙f紡鎹熺粺璁� + */ +public class TkDealLoss extends TaskSurpport { + + private static final Logger log = LogManager.getLogger(TkDealLoss.class.getName()); + + //绫籌D锛屼竴瀹氫笌Tree.xml閰嶇疆鏂囦欢涓厤缃竴鑷� + public static final String taskId = "TkDealLoss"; + + /** + * 鎵ц鑺傜偣浠诲姟: 澶勭悊鎺у埗鍣ㄦ紡鎹熺粺璁� + * + * @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 DataCdC0Vo){ + Object[] objs = this.getTaskResults(TkPreGenObjs.taskId) ; + DbSv sv = (DbSv)objs[0] ; + PrController controller = (PrController)objs[1] ; + try{ + this.doDeal(sv, controller, d.getRtuAddr(), dV1, (DataCdC0Vo)cdObj); + }catch (Exception e){ + log.error("淇濆瓨鍙栨按鍙f紡鎹熺粺璁℃暟鎹椂鍙戠敓寮傚父", e); + } + } + } + + /** + * 涓氬姟澶勭悊 + * @param sv 鏈嶅姟 + * @param controller 鎺у埗鍣ㄥ璞� + * @param rtuAddr 鎺у埗鍣ㄥ湴鍧� + * @param dV1 涓婃姤鏁版嵁 + * @param dataCdC0Vo 寮�闃�涓婃姤鏁版嵁瀵硅薄 + */ + private void doDeal(DbSv sv, PrController controller, String rtuAddr, DataV1 dV1, DataCdC0Vo dataCdC0Vo) throws Exception { + Date operateDt = controller.getOperateDt() ;//鍙栨按涓笂缁戝畾姝ゆ帶鍒跺櫒鐨勬棩鏈熶笌鏃堕棿 + if(operateDt != null){ + String operateDtStr = DateTime.yyyy_MM_dd(operateDt) ; + if(operateDtStr.equals(DateTime.yyyy_MM_dd())){ + //褰撳ぉ鍙戠幇锛堝苟缁戝畾锛夋帶鍒跺櫒锛屾帶鍒跺櫒璁$畻鐨勬紡鎹熼噺涓�瀹氫笉姝g‘锛屽己鍒惰缃垚0 + dataCdC0Vo.lossAmount = 0.0 ; + } + } + + RmLossDayLast poLast = sv.getRmLossLast(controller.getIntakeId()); + if (poLast == null) { + //鏁版嵁搴撲腑涓嶅瓨鍦ㄨ鍙栨按鍙g殑婕忔崯鏁版嵁 + //棣栧厛鐢熸垚鏈�鏂版暟鎹強鍘嗗彶鏁版嵁锛屽苟鍏堜繚瀛� + poLast = this.newRmLossLast(controller, rtuAddr, dV1, dataCdC0Vo); + this.newAndSaveHistoryDataDeal(sv, controller, rtuAddr, dV1, dataCdC0Vo, poLast); + sv.saveRmLossLast(poLast); + } else { + if(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCdC0Vo.rtuDt).equals(poLast.dtRtu)){ + //鏃堕棿涓�鑷达紝閲嶅涓婃姤鏁版嵁锛屼笉杩涜浠讳綍澶勭悊 + }else{ + RmLossDay poHistory = null ; + if(poLast.lastHistoryId != null){ + poHistory = sv.getRmLossHistory(poLast.lastHistoryId) ; + } + if(poHistory == null){ + poHistory = this.newAndSaveHistoryDataDeal(sv, controller, rtuAddr, dV1, dataCdC0Vo, poLast); + } + if(DateTime.dateFrom_yyyy_MM_dd1(dV1.dt).equals(poLast.dt)){ + //鍚屼竴澶╂暟鎹� + poLast.lossAmount = dataCdC0Vo.lossAmount ; + poLast.dtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1.dt) ; + poLast.dtRtu = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCdC0Vo.rtuDt) ; + sv.updateRmLossLast(poLast); + + poHistory.lossAmount = dataCdC0Vo.lossAmount ; + poHistory.dtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1.dt) ; + poHistory.dtRtu = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCdC0Vo.rtuDt) ; + sv.updateRmLossHistory(poHistory); + }else if(DateTime.dateFrom_yyyy_MM_dd1(dV1.dt).after(poLast.dt)){ + //鏂扮殑鏃ユ湡 + poLast.lossAmount = dataCdC0Vo.lossAmount ; + poLast.dt = DateTime.dateFrom_yyyy_MM_dd1(dataCdC0Vo.rtuDt); + poLast.dtLast = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dV1.dt) ; + poLast.dtRtu = DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCdC0Vo.rtuDt) ; + this.newAndSaveHistoryDataDeal(sv, controller, rtuAddr, dV1, dataCdC0Vo, poLast); + sv.updateRmLossLast(poLast); + }else{ + //杩欑鎯呭喌涓嶅瓨鍦紙RTU鏃堕挓鏃╀簬鏈湴璁板綍涓殑RTU鏃堕挓锛圧TU绌胯秺鍥炶繃鍘讳簡锛屽彲鑳芥椂閽熼噸缃簡锛夛紝姝ょ鎯呭喌涓嶅鐞嗭級 + } + } + sv.updateRmLossLast(poLast); + } + } + + /** + * 鐢熸垚鏂扮殑鎺у埗鍣ㄦ紡鎹熸棩缁熻鏈�鏂拌褰� + * @param controller + * @param rtuAddr + * @param dV1 + * @param cdData + * @return + * @throws Exception + */ + private RmLossDayLast newRmLossLast(PrController controller, String rtuAddr, DataV1 dV1, DataCdC0Vo cdData)throws Exception { + RmLossDayLast po = new RmLossDayLast() ; + po.controllerId = controller==null?null:controller.getId(); + po.intakeId = controller==null?null:controller.getIntakeId(); + po.rtuAddr = rtuAddr; + po.valueFrom(dV1, cdData) ; + return po ; + } + + /** + * 鐢熸垚鏂扮殑鎺у埗鍣ㄦ紡鎹熸棩缁熻鍘嗗彶璁板綍 + * @param controller + * @param rtuAddr + * @param dV1 + * @param cdData + * @return + * @throws Exception + */ + private RmLossDay newRmLossHistory(PrController controller, String rtuAddr, DataV1 dV1, DataCdC0Vo cdData)throws Exception { + RmLossDay po = new RmLossDay() ; + po.controllerId = controller==null?null:controller.getId(); + po.intakeId = controller==null?null:controller.getIntakeId(); + po.rtuAddr = rtuAddr; + po.valueFrom(dV1, cdData); + return po ; + } + + + /** + * 淇濆瓨鏂扮殑寮�闃�涓婃姤鍘嗗彶鏁版嵁璁板綍锛屽苟鎶奍D璧嬪�肩粰鏈�鏂拌褰曠殑 lastHistoryId + * @param sv + * @param controller + * @param rtuAddr + * @param dV1 + * @param dataCdC0Vo + * @param poLast + * @throws Exception + * @return RmLossHistory + */ + private RmLossDay newAndSaveHistoryDataDeal(DbSv sv, PrController controller, String rtuAddr, DataV1 dV1, DataCdC0Vo dataCdC0Vo, RmLossDayLast poLast)throws Exception { + RmLossDay poHistory = this.newRmLossHistory(controller, rtuAddr, dV1, dataCdC0Vo) ; + sv.saveRmLossHistory(poHistory); + //鐢辨渶鏂版暟鎹寔鏈夊巻鍙叉暟鎹腑鐨勬渶鏂拌褰旾D锛屼互鏂逛究蹇�熸煡璇� + poLast.lastHistoryId = poHistory == null ? null: poHistory.id ; + return poHistory ; + } + +} -- Gitblit v1.8.0