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/p206V2/TkDealHearBeatV2.java | 77 ++++++++++++++++++++++++++++++++++++++ 1 files changed, 77 insertions(+), 0 deletions(-) diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V2/TkDealHearBeatV2.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V2/TkDealHearBeatV2.java new file mode 100644 index 0000000..f55f3b6 --- /dev/null +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/rtuData/p206V2/TkDealHearBeatV2.java @@ -0,0 +1,77 @@ +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.DataCd02Vo; +import com.dy.rtuMw.server.rtuData.TaskSurpport; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.text.ParseException; +import java.util.HashMap; +import java.util.Map; + +/** + * @Author: liurunyu + * @Date: 2024/11/1 9:16 + * @Description + */ +public class TkDealHearBeatV2 extends TaskSurpport { + + private static final Map<String, String> onceUpDataRtus = new HashMap<>(); + + private static final Logger log = LogManager.getLogger(TkPreGenObjsV2.class.getName()) ; + + //绫籌D锛屼竴瀹氫笌Tree.xml閰嶇疆鏂囦欢涓厤缃竴鑷� + public static final String taskId = "TkDealHearBeatV2" ; + + /** + * 鎵ц鑺傜偣浠诲姟 + * @param data 闇�瑕佸鐞嗙殑鏁版嵁 + */ + @Override + public void execute(Object data) throws ParseException { + Data d = (Data)data ; + String rtuAddr = d.getRtuAddr() ;//TkRtuData閲屽垽鏂簡rtuAddr涓虹┖ + DataCd02Vo cd02Vo = null ; + if(d.subData != null && d.subData instanceof DataV2){ + DataV2 dataV2 = (DataV2)d.subData ; + if(dataV2.subData != null && dataV2.subData instanceof DataCd02Vo){ + cd02Vo = (DataCd02Vo)dataV2.subData ; + } + } + boolean toNext = true ; + if(!onceUpDataRtus.containsKey(rtuAddr)){ + //鍒濇涓婅鏁版嵁锛屼笉璁烘槸鍚︽槸蹇冭烦锛岄兘瑕佽繘琛屼换鍔℃爲澶勭悊 + //toNext = true ; + if(cd02Vo != null){ + //鏄績璺虫暟鎹� + onceUpDataRtus.put(rtuAddr, (cd02Vo.alarmVo == null?"":cd02Vo.alarmVo.to1010()) + + (cd02Vo.stateVo == null?"":cd02Vo.stateVo.to1010())) ; + }else{ + //涓嶆槸蹇冭烦鏁版嵁 + onceUpDataRtus.put(rtuAddr, "") ; + } + }else{ + if(cd02Vo != null){ + //鏄績璺虫暟鎹紝 + String alarmStateOld = onceUpDataRtus.get(rtuAddr) ; + String alarmStateNew = (cd02Vo.alarmVo == null?"":cd02Vo.alarmVo.to1010()) + + (cd02Vo.stateVo == null?"":cd02Vo.stateVo.to1010()) ; + if(alarmStateOld.equals(alarmStateNew)){ + toNext = false ;//鏄績璺虫暟鎹紝骞朵笖鎶ヨ涓庣姸鎬佹湭鏀瑰彉锛屼笉杩涜浠诲姟鏍戝鐞嗭紝涓嶇紦瀛樻湭鍙樺寲鐨勬姤璀︿笌鐘舵�� + }else{ + //鏄績璺虫暟鎹紝骞朵笖鎶ヨ涓庣姸鎬佷篃鏀瑰彉浜嗭紝杩涜浠诲姟鏍戝鐞� + //toNext = true ; + onceUpDataRtus.put(rtuAddr, alarmStateNew) ;//缂撳瓨鏂版姤璀︿笌鐘舵�� + } + }else{ + //涓嶆槸蹇冭烦鏁版嵁锛岃杩涜浠诲姟鏍戝鐞� + //toNext = true ; + } + } + if(toNext){ + this.toNextTasks(data); + } + } +} -- Gitblit v1.8.0