diff --git a/src/main/java/com/xydl/cac/entity/WarnRule.java b/src/main/java/com/xydl/cac/entity/WarnRule.java index 220424c..adf043b 100644 --- a/src/main/java/com/xydl/cac/entity/WarnRule.java +++ b/src/main/java/com/xydl/cac/entity/WarnRule.java @@ -111,9 +111,15 @@ public class WarnRule { } public boolean canDo() { - if (active != null && active.intValue() == 1 && actualComp != null && nSensor != null) { + if (active != null && active.intValue() == 1 && + actualComp != null && nSensor != null && typePoint != null) { return true; } return false; } + + // 是否触发 + public boolean triggerRule(Object value) { + return actualComp.compare(value, threshold); + } } \ No newline at end of file diff --git a/src/main/java/com/xydl/cac/task/CacheTask.java b/src/main/java/com/xydl/cac/task/CacheTask.java index 202a324..0afd9d3 100644 --- a/src/main/java/com/xydl/cac/task/CacheTask.java +++ b/src/main/java/com/xydl/cac/task/CacheTask.java @@ -11,8 +11,8 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.HashMap; -import java.util.LinkedHashMap; import java.util.List; +import java.util.concurrent.ConcurrentHashMap; @Service @Slf4j @@ -25,7 +25,7 @@ public class CacheTask { public static List modevType_Cache = null; public static List jg_Cache = null; public static List zsb_Cache = null; - public static LinkedHashMap rule_Cache = new LinkedHashMap<>(); + public static ConcurrentHashMap rule_Cache = new ConcurrentHashMap<>(); @Scheduled(cron = "0 1 * * * ?") private void clearCache() { @@ -37,7 +37,7 @@ public class CacheTask { } - @Scheduled(initialDelay = 60 * 1000, fixedDelay = 60 * 1000) + @Scheduled(initialDelay = 30 * 1000, fixedDelay = 60 * 1000) private void refreshRule() { try { List list = ruleService.listAll(null); diff --git a/src/main/java/com/xydl/cac/task/RuleCheckTask.java b/src/main/java/com/xydl/cac/task/RuleCheckTask.java index 9d5d1c2..d93ba3f 100644 --- a/src/main/java/com/xydl/cac/task/RuleCheckTask.java +++ b/src/main/java/com/xydl/cac/task/RuleCheckTask.java @@ -16,10 +16,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; @Service @Slf4j @@ -35,10 +32,13 @@ public class RuleCheckTask { @Resource WebSocketServer webSocketServer; - @Scheduled(initialDelay = 90 * 1000, fixedDelay = 3 * 60 * 1000) + @Scheduled(initialDelay = 60 * 1000, fixedDelay = 3 * 60 * 1000) private void checkAll() { try { - for (WarnRule rule : CacheTask.rule_Cache.values()) { + Iterator it = CacheTask.rule_Cache.keySet().iterator(); + while (it.hasNext()) { + Integer key = it.next(); + WarnRule rule = CacheTask.rule_Cache.get(key); if (rule.canDo()) { this.ruleCheck(rule); } @@ -61,7 +61,7 @@ public class RuleCheckTask { String str = (String) map.get("acquisitionTime"); date = DateUtil.parse(str); Object value = map.get(typePoint.getField()); - boolean r = rule.getActualComp().compare(value, rule.getThreshold()); + boolean r = rule.triggerRule(value); if (r) { this.sendWarning(rule, date, str, String.valueOf(value)); }