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/p206V202404/TkDealOpenValveReportV202404.java | 252 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 252 insertions(+), 0 deletions(-) diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealOpenValveReportV202404.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealOpenValveReportV202404.java new file mode 100644 index 0000000..65a8082 --- /dev/null +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V202404/TkDealOpenValveReportV202404.java @@ -0,0 +1,252 @@ +package com.dy.rtuMw.server.rtuData.p206V202404; + +import com.dy.common.mw.protocol.Data; +import com.dy.common.mw.protocol.p206V202404.DataV202404; +import com.dy.common.mw.protocol.p206V202404.upVos.DataCd84Vo; +import com.dy.common.util.DateTime; +import com.dy.pipIrrGlobal.pojoPr.PrController; +import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveHistory; +import com.dy.pipIrrGlobal.pojoRm.RmOpenCloseValveLast; +import com.dy.pipIrrGlobal.pojoSe.SeClient; +import com.dy.rtuMw.server.msCenter.MsCenterUnit; +import com.dy.rtuMw.server.msCenter.MsObj; +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 ZhuBaoMin + * @date 2024-06-17 9:36 + * @LastEditTime 2024-06-17 9:36 + * @Description 鎺у埗鍣ㄥ紑闃�涓婃姤(鍔熻兘鐮�84) + */ +public class TkDealOpenValveReportV202404 extends TaskSurpport { + private static final Logger log = LogManager.getLogger(TkDealTimingReportV202404.class.getName()); + + //绫籌D锛屼竴瀹氫笌Tree.xml閰嶇疆鏂囦欢涓厤缃竴鑷� + public static final String taskId = "TkDealOpenValveReportV202404"; + + /** + * 鎵ц鑺傜偣浠诲姟锛氬紑闃�涓婃姤 + * + * @param data 闇�瑕佸鐞嗙殑鏁版嵁 + */ + @Override + public void execute(Object data) { + Data d = (Data) data; + DataV202404 dV202404 = (DataV202404) d.getSubData(); + Object cdObj = dV202404.subData; + if (cdObj != null && cdObj instanceof DataCd84Vo) { + try { + Object[] objs = this.getTaskResults(TkPreGenObjsV202404.taskId); + DbSv sv = (DbSv) objs[0]; + PrController controller = (PrController) objs[1]; + SeClient clientVo = (SeClient)objs[3] ;//杩欎釜鍊煎璞′腑鍙湁id鍜宯ame浼氭湁鍊� + this.toMsCenter(clientVo, controller, d.getRtuAddr(), dV202404, (DataCd84Vo)cdObj) ; + this.doDeal(sv, clientVo, controller, d.getRtuAddr(), dV202404, (DataCd84Vo)cdObj); + } catch (Exception e) { + log.error("淇濆瓨鎺у埗鍣ㄥ紑闃�鎶ユ暟鎹椂鍙戠敓寮傚父", e); + } + } + } + + /** + * 鎶婂紑闃�娑堟伅瀛樺叆娑堟伅涓績 + * @param clientVo + * @param controller + * @param rtuAddr + * @param dataV202404 + * @param dataCd84Vo + */ + private void toMsCenter(SeClient clientVo, PrController controller, String rtuAddr, DataV202404 dataV202404, DataCd84Vo dataCd84Vo){ + if(clientVo != null && controller != null){ + MsObj msObj = new MsObj() ; + msObj.put("name", "寮�闃�"); + msObj.put("clientId", clientVo.getId()); + msObj.put("clientName", clientVo.getName()); + msObj.put("clientAddress", clientVo.getAddress()); + msObj.put("icCardNo", dataCd84Vo.icCardNo); + msObj.put("rtuAddr", rtuAddr); + msObj.put("intakeId", controller.getIntakeId()); + msObj.put("dt", dataV202404.dt); + MsCenterUnit.getInstance().pushMs(msObj); + } + } + + /** + * 涓氬姟澶勭悊 + * @param sv 鏈嶅姟 + * @param clientVo 鍐滄埛瀵硅薄锛堜笉涓虹┖鏃讹紝鍙湁id鍜宯ame鏈夊�硷級 + * @param controller 鎺у埗鍣ㄥ璞� + * @param rtuAddr 鎺у埗鍣ㄥ湴鍧� + * @param dataV202404 涓婃姤鏁版嵁 + * @param dataCd84Vo 寮�闃�涓婃姤鏁版嵁瀵硅薄 + */ + private void doDeal(DbSv sv, SeClient clientVo, PrController controller, String rtuAddr, DataV202404 dataV202404, DataCd84Vo dataCd84Vo) throws Exception { + RmOpenCloseValveLast poLast = sv.getRmOpenCloseValveLast(controller.getIntakeId()) ; + if(poLast == null){ + //鏁版嵁搴撲腑涓嶅瓨鍦ㄨ鎺у埗鍣ㄧ殑寮�鍏抽榾鏁版嵁 + //棣栧厛鐢熸垚寮�鍏抽榾鐨勬渶鏂版暟鎹強鍘嗗彶鏁版嵁锛屽苟鍏堜繚瀛� + poLast = this.newRmOpenCloseValveLast(clientVo, controller, rtuAddr, dataV202404, dataCd84Vo); + this.newHistoryDataDeal(sv, clientVo, controller, rtuAddr, dataV202404, dataCd84Vo, poLast); + sv.saveRmOpenCloseValveLast(poLast); + }else{ + //鏁版嵁搴撲腑瀛樺湪璇ユ帶鍒跺櫒鐨勫紑鍏抽榾鏁版嵁 + if(poLast.openDt != null && poLast.opIcCardAddr != null && poLast.opIcCardNo != null){ + if(poLast.openDt.equals(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd84Vo.openDt)) + && poLast.opIcCardAddr.equals(dataCd84Vo.icCardAddr) + && poLast.opIcCardNo.equals(dataCd84Vo.icCardNo)){ + //閲嶅涓婃姤锛屽師鍥犳槸涓嬭鏁版嵁澶勭悊鎱簡锛屽氨閲嶅涓婃姤浜� + return ; + } + } + if(poLast.opType != null){ + //鍘熻褰曞瓨鍦ㄥ紑闃�鏁版嵁锛岄鍏堣繘琛屾椂闂村姣� + if(poLast.openDt != null && poLast.openDt.equals(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd84Vo.openDt))){ + //閲嶅涓婃姤鐨勫紑闃�鏁版嵁锛屼笉杩涜澶勭悊 + }else if(poLast.openDt != null && poLast.openDt.after(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd84Vo.openDt))){ + //琛ユ姤鐨勮涔呬箣鍓嶇殑寮�闃�鏁版嵁(瀵逛簬after:绛変簬鎴栨櫄浜庨兘杩斿洖true) + this.dealSupplyReport() ; + }else { + //褰撳墠寮�闃�涓婃姤鏄柊鐨勪竴娆″紑闃�锛屼笉绠″師璁板綍鏄惁瀛樺湪鍏抽榾鏁版嵁锛屼竴寰嬫竻绌哄叧闃�鏁版嵁 + this.updateOpenValve(clientVo, controller, poLast, null, dataV202404, dataCd84Vo, true) ; + //鐢熸垚骞朵繚瀛樻柊鐨勫紑闃�涓婃姤鍘嗗彶鏁版嵁璁板綍 + this.newHistoryDataDeal(sv, clientVo, controller, rtuAddr, dataV202404, dataCd84Vo, poLast); + } + }else if(poLast.clType != null){ + //鍘熻褰曚笉瀛樺湪寮�闃�鏁版嵁锛屼絾瀛樺湪鍏抽榾鏁版嵁锛岄鍏堣繘琛屾椂闂存瘮瀵� + if(poLast.clOpenDt != null && poLast.clOpenDt.before(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd84Vo.openDt))){ + //褰撳墠涓婃姤鏄柊鐨勫紑闃�鏁版嵁锛屾妸鏈�鏂�(last)鏁版嵁涓殑鍏抽榾鍐呭娓呯┖ + this.updateOpenValve(clientVo, controller, poLast, null, dataV202404, dataCd84Vo, true) ; + //鐢熸垚骞朵繚瀛樻柊鐨勫紑闃�涓婃姤鍘嗗彶鏁版嵁璁板綍 + this.newHistoryDataDeal(sv, clientVo, controller, rtuAddr, dataV202404, dataCd84Vo, poLast); + }else if(poLast.clOpenDt != null && poLast.clOpenDt.after(DateTime.dateFrom_yyyy_MM_dd_HH_mm_ss(dataCd84Vo.openDt))){ + //琛ユ姤鐨勮涔呬箣鍓嶇殑寮�闃�鎶ユ暟鎹�(瀵逛簬after:绛変簬鎴栨櫄浜庨兘杩斿洖true) + this.dealSupplyReport() ; + }else { + //褰撳墠涓婃姤鐨勫紑闃�鏁版嵁涓庡師鏉ョ殑鍏抽榾鏁版嵁鍚屼竴鏃堕棿锛岃繖绉嶆儏鍐靛簲璇ヤ笉瀛樺湪锛屼絾涔熷鐞� + RmOpenCloseValveHistory poHistory = null ; + if(poLast.lastHistoryId != null){ + poHistory = sv.getRmOpenCloseValveHistory(poLast.lastHistoryId) ; + } + this.updateOpenValve(clientVo, controller, poLast, poHistory, dataV202404, dataCd84Vo, false) ; + if(poHistory != null){ + sv.updateRmOpenCloseValveHistory(poHistory); + } + } + }else{ + //if(poLast.opType == null && po.clType == null) + //鍘熻褰曚笉瀛樺湪寮�闃�鏁版嵁涔熶笉瀛樺湪鍏抽榾鏁版嵁锛岃繖绉嶆儏鍐典笉瀛樺湪锛屼絾涓哄畨鍏ㄤ篃杩涜澶勭悊 + this.updateOpenValve(clientVo, controller, poLast, null, dataV202404, dataCd84Vo, true) ; + //鐢熸垚骞朵繚瀛樻柊鐨勫紑闃�涓婃姤鍘嗗彶鏁版嵁璁板綍 + this.newHistoryDataDeal(sv, clientVo, controller, rtuAddr, dataV202404, dataCd84Vo, poLast); + } + + sv.updateRmOpenCloseValveLast(poLast); + } + } + + /** + * 澶勭悊琛ユ姤锛屾殏鏃舵棤閫昏緫 + */ + private void dealSupplyReport(){ + } + + /** + * 淇濆瓨鏂扮殑寮�闃�涓婃姤鍘嗗彶鏁版嵁璁板綍锛屽苟鎶奍D璧嬪�肩粰鏈�鏂拌褰曠殑 lastHistoryId + * @param sv + * @param clientVo + * @param controller + * @param rtuAddr + * @param dataV202404 + * @param dataCd84Vo + * @param poLast + * @throws Exception + */ + private void newHistoryDataDeal(DbSv sv, SeClient clientVo, PrController controller, String rtuAddr, DataV202404 dataV202404, DataCd84Vo dataCd84Vo, RmOpenCloseValveLast poLast)throws Exception { + RmOpenCloseValveHistory poHistory = this.newRmOpenCloseValveHistory(clientVo, controller, rtuAddr, dataV202404, dataCd84Vo) ; + sv.saveRmOpenCloseValveHistory(poHistory); + //鐢辨渶鏂版暟鎹寔鏈夊巻鍙叉暟鎹腑鐨勬渶鏂拌褰旾D锛屼互鏂逛究蹇�熸煡璇� + poLast.lastHistoryId = poHistory == null ? null: poHistory.id ; + } + + /** + * 鐢熸垚鏂扮殑寮�闃�涓婃姤鏈�鏂版暟鎹褰� + * @param clientVo + * @param controller + * @param rtuAddr + * @param dataV202404 + * @param dataCd84Vo + * @return + * @throws Exception + */ + private RmOpenCloseValveLast newRmOpenCloseValveLast(SeClient clientVo, PrController controller, String rtuAddr, DataV202404 dataV202404, DataCd84Vo dataCd84Vo)throws Exception { + RmOpenCloseValveLast po = new RmOpenCloseValveLast() ; + 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.valueFrom84(dataV202404, dataCd84Vo); + return po ; + } + + + /** + * 鐢熸垚鏂扮殑寮�闃�涓婃姤鍘嗗彶鏁版嵁璁板綍 + * @param clientVo + * @param controller + * @param rtuAddr + * @param dataV202404 + * @param dataCd84Vo + * @return + * @throws Exception + */ + private RmOpenCloseValveHistory newRmOpenCloseValveHistory(SeClient clientVo, PrController controller, String rtuAddr, DataV202404 dataV202404, DataCd84Vo dataCd84Vo)throws Exception { + RmOpenCloseValveHistory po = new RmOpenCloseValveHistory() ; + 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.valueFrom84(dataV202404, dataCd84Vo); + return po ; + } + + + /** + * 鏇存柊鏁版嵁 + * @param clientVo + * @param controller + * @param poLast + * @param poHistory + * @param dataV202404 + * @param dataCd84Vo + * @param clearLastCloseValve + * @throws Exception + */ + private void updateOpenValve(SeClient clientVo, + PrController controller, + RmOpenCloseValveLast poLast, + RmOpenCloseValveHistory poHistory, + DataV202404 dataV202404, + DataCd84Vo dataCd84Vo, + boolean clearLastCloseValve) throws Exception { + poLast.clientId = clientVo==null?null:clientVo.getId() ; + poLast.clientName = clientVo==null?null:clientVo.getName() ; + poLast.controllerId = controller==null?null:controller.getId(); + poLast.intakeId = controller==null?null:controller.getIntakeId(); + poLast.updateFrom(dataV202404, dataCd84Vo, clearLastCloseValve); + + if(poHistory != null){ + poHistory.clientId = clientVo==null?null:clientVo.getId() ; + poHistory.clientName = clientVo==null?null:clientVo.getName() ; + poHistory.controllerId = controller==null?null:controller.getId(); + poHistory.intakeId = controller==null?null:controller.getIntakeId(); + poHistory.updateFrom(dataV202404, dataCd84Vo, false); + } + } + + +} -- Gitblit v1.8.0