diff --git a/src/main/java/club/joylink/xiannccda/alert/core/AlertDataSource.java b/src/main/java/club/joylink/xiannccda/alert/core/AlertDataSource.java index 4bb76b0..30c1a0b 100644 --- a/src/main/java/club/joylink/xiannccda/alert/core/AlertDataSource.java +++ b/src/main/java/club/joylink/xiannccda/alert/core/AlertDataSource.java @@ -1,7 +1,5 @@ package club.joylink.xiannccda.alert.core; -import com.baomidou.mybatisplus.core.toolkit.StringPool; -import com.google.common.base.Joiner; import com.google.common.collect.HashBasedTable; import com.google.common.collect.Lists; import com.google.common.collect.Table; @@ -11,9 +9,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Objects; -import java.util.concurrent.ConcurrentHashMap; import lombok.Getter; -import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -23,7 +19,6 @@ import org.apache.commons.lang3.StringUtils; @Slf4j public class AlertDataSource { - /** * 保存已经报警的设备 *

@@ -39,25 +34,20 @@ public class AlertDataSource { public synchronized static AlertDataSource getInstance() { if (Objects.isNull(dataSource)) { - return new AlertDataSource(); + return dataSource = new AlertDataSource(); } return dataSource; } - /** - * 报警监控任务(循环监测式报警) - */ - Map amtMap = new ConcurrentHashMap<>(); - public void clearAlertDataMsg(Integer lineId) { - DEVICE_ALTER_TABLE.clear(); + DEVICE_ALTER_TABLE.row(lineId).clear(); } public boolean putAlterDevice(Integer lineId, String customName, String deviceName) { AlertTableDetail detail = DEVICE_ALTER_TABLE.get(lineId, customName); if (Objects.isNull(detail)) { - detail = new AlertTableDetail(false); + detail = new AlertTableDetail(); DEVICE_ALTER_TABLE.put(lineId, customName, detail); } return detail.add(deviceName); @@ -84,44 +74,12 @@ public class AlertDataSource { public void removeAlterDevice(Integer lineId, String customName, String deviceName) { AlertTableDetail detail = DEVICE_ALTER_TABLE.get(lineId, customName); if (Objects.isNull(detail)) { - detail = new AlertTableDetail(false); + detail = new AlertTableDetail(); DEVICE_ALTER_TABLE.put(lineId, customName, detail); } detail.remove(deviceName); } - public boolean needMostShow(Integer lineId, String customName, int val) { - if (StringUtils.isEmpty(customName)) { - return false; - } - AlertTableDetail detail = DEVICE_ALTER_TABLE.get(lineId, customName); - if (Objects.isNull(detail)) { - detail = new AlertTableDetail(false); - DEVICE_ALTER_TABLE.put(lineId, customName, detail); - } -// if (detail.mostShower && detail.mostSize() >= val) { -// //已经报警过了且超过了阈值 -// return false; -// } else - if (detail.mostShower && detail.mostSize() < val) { - //已经报警过了,但小于阈值 - detail.setMostShower(false); - return false; - } else if (detail.mostSize() >= val) { - //超过阈值 - detail.setMostShower(true); - return true; - } - return false; - } - - public String findAllWarnDevice(Integer lineId, String customName) { - AlertTableDetail detail = DEVICE_ALTER_TABLE.get(lineId, customName); - if (Objects.isNull(detail)) { - return null; - } - return detail.getAllDeviceCodes(); - } public List findAllWarnDeviceForList(Integer lineId, String customeName) { AlertTableDetail detail = DEVICE_ALTER_TABLE.get(lineId, customeName); @@ -134,21 +92,13 @@ public class AlertDataSource { public static class AlertTableDetail { - public AlertTableDetail(boolean shower) { - this.mostShower = shower; - this.deviceCodes = Lists.newArrayList(); + public AlertTableDetail() { + this.deviceCodes = Lists.newLinkedList(); } - @Getter - @Setter - private boolean mostShower; @Getter private List deviceCodes; - public int mostSize() { - return this.deviceCodes.size(); - } - public boolean add(String deviceCode) { if (this.contains(deviceCode)) { return false; @@ -158,11 +108,6 @@ public class AlertDataSource { return true; } - - public String getAllDeviceCodes() { - return Joiner.on(StringPool.COMMA).skipNulls().join(this.deviceCodes); - } - public boolean contains(String deviceCode) { return this.deviceCodes.contains(deviceCode); } diff --git a/src/main/java/club/joylink/xiannccda/ats/warn/axle/AxleLedMostMonitorListener.java b/src/main/java/club/joylink/xiannccda/ats/warn/axle/AxleLedMostMonitorListener.java index eed85cc..1ba2b65 100644 --- a/src/main/java/club/joylink/xiannccda/ats/warn/axle/AxleLedMostMonitorListener.java +++ b/src/main/java/club/joylink/xiannccda/ats/warn/axle/AxleLedMostMonitorListener.java @@ -14,6 +14,9 @@ import club.joylink.xiannccda.dto.protos.GuardConfigProto.GuardConfig; import club.joylink.xiannccda.service.AlertInfoService; import club.joylink.xiannccda.service.config.DeviceGuardConfigService; import club.joylink.xiannccda.vo.AreaConfigVO; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.google.common.base.Joiner; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import java.time.LocalDateTime; @@ -70,7 +73,7 @@ public class AxleLedMostMonitorListener implements AlertSourceEventListener warnDeviceList = alertDataSource.findAllWarnDeviceForList(lineIdInt, customName); if (Objects.nonNull(areaConfigVO) && deviceStatusList.stream().anyMatch(d -> d.saveAlertDataSouce) && warnDeviceList.size() >= ledThreshold) { //发布大面积 - String warnDevices = String.join(",", warnDeviceList); + String warnDevices = Joiner.on(StringPool.COMMA).skipNulls().join(warnDeviceList); String alertMsg = String.format("%s-出现大面积%s设备[%s]", areaConfigVO.getAreaName(), ledName, warnDevices); NccAlertInfo alertInfoMost = this.alertInfoService.createAlert2(areaConfigVO.getId(), mostType, lineIdInt, LocalDateTime.now(), alertMsg, null, AlertDeviceType.DEVICE_TYPE_TRACK, false); alertManager.emit(alertInfoMost);