|
|
@ -4,6 +4,7 @@ import com.xydl.cac.entity.ModevTypePoint;
|
|
|
|
import com.xydl.cac.entity.NSensor;
|
|
|
|
import com.xydl.cac.entity.NSensor;
|
|
|
|
import com.xydl.cac.entity.WarnRule;
|
|
|
|
import com.xydl.cac.entity.WarnRule;
|
|
|
|
import com.xydl.cac.entity.Warning;
|
|
|
|
import com.xydl.cac.entity.Warning;
|
|
|
|
|
|
|
|
import com.xydl.cac.model.TriggerModel;
|
|
|
|
import com.xydl.cac.repository.WarnRuleRepository;
|
|
|
|
import com.xydl.cac.repository.WarnRuleRepository;
|
|
|
|
import com.xydl.cac.repository.WarningRepository;
|
|
|
|
import com.xydl.cac.repository.WarningRepository;
|
|
|
|
import com.xydl.cac.service.DataService;
|
|
|
|
import com.xydl.cac.service.DataService;
|
|
|
@ -13,7 +14,6 @@ import com.xydl.cac.util.DingTalkPushUtil;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
import java.util.*;
|
|
|
|
import java.util.*;
|
|
|
@ -55,26 +55,19 @@ public class RuleCheckTask {
|
|
|
|
List<ModevTypePoint> points = new ArrayList<>();
|
|
|
|
List<ModevTypePoint> points = new ArrayList<>();
|
|
|
|
points.add(typePoint);
|
|
|
|
points.add(typePoint);
|
|
|
|
List<Map<String, Object>> list = dataService.getLatestData(sensor, points, rule.getLastDTime());
|
|
|
|
List<Map<String, Object>> list = dataService.getLatestData(sensor, points, rule.getLastDTime());
|
|
|
|
if (!CollectionUtils.isEmpty(list)) {
|
|
|
|
List<TriggerModel> warnList = rule.checkData(list);
|
|
|
|
Date date = null;
|
|
|
|
if (warnList != null) {
|
|
|
|
for (Map<String, Object> map : list) {
|
|
|
|
|
|
|
|
String str = (String) map.get("acquisitionTime");
|
|
|
|
|
|
|
|
date = DateUtil.parse(str);
|
|
|
|
|
|
|
|
Object value = map.get(typePoint.getField());
|
|
|
|
|
|
|
|
boolean r = rule.triggerRule(value);
|
|
|
|
|
|
|
|
if (r) {
|
|
|
|
|
|
|
|
this.sendWarning(rule, date, str, String.valueOf(value));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
rule.setLastDTime(date);
|
|
|
|
|
|
|
|
ruleRepository.save(rule);
|
|
|
|
ruleRepository.save(rule);
|
|
|
|
|
|
|
|
for (TriggerModel model : warnList) {
|
|
|
|
|
|
|
|
this.sendWarning(rule, model);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
|
|
} catch (Exception e) {
|
|
|
|
log.error("RuleCheckTask.ruleCheck error.", e);
|
|
|
|
log.error("RuleCheckTask.ruleCheck error.", e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void sendWarning(WarnRule rule, Date date, String dateStr, String value) throws Exception {
|
|
|
|
private void sendWarning(WarnRule rule, TriggerModel model) throws Exception {
|
|
|
|
NSensor sensor = rule.getNSensor();
|
|
|
|
NSensor sensor = rule.getNSensor();
|
|
|
|
ModevTypePoint typePoint = rule.getTypePoint();
|
|
|
|
ModevTypePoint typePoint = rule.getTypePoint();
|
|
|
|
Warning warning = Warning.builder()
|
|
|
|
Warning warning = Warning.builder()
|
|
|
@ -83,9 +76,9 @@ public class RuleCheckTask {
|
|
|
|
.zsbName(sensor.getZsbName())
|
|
|
|
.zsbName(sensor.getZsbName())
|
|
|
|
.ruleId(rule.getId())
|
|
|
|
.ruleId(rule.getId())
|
|
|
|
.field(typePoint.getField())
|
|
|
|
.field(typePoint.getField())
|
|
|
|
.dTime(date)
|
|
|
|
.dTime(model.getDate())
|
|
|
|
.threshold(rule.getThreshold())
|
|
|
|
.threshold(rule.getThreshold())
|
|
|
|
.warnValue(value)
|
|
|
|
.warnValue(model.getValue())
|
|
|
|
.warnLevel(rule.getLevel())
|
|
|
|
.warnLevel(rule.getLevel())
|
|
|
|
.state("1")
|
|
|
|
.state("1")
|
|
|
|
.warnDesc(sensor.getName() + " " + typePoint.getFieldDesc() + " 告警")
|
|
|
|
.warnDesc(sensor.getName() + " " + typePoint.getFieldDesc() + " 告警")
|
|
|
@ -95,7 +88,7 @@ public class RuleCheckTask {
|
|
|
|
.build();
|
|
|
|
.build();
|
|
|
|
warningRepository.save(warning);
|
|
|
|
warningRepository.save(warning);
|
|
|
|
String str = warning.getZsbName() + "-" + warning.getWarnDesc()
|
|
|
|
String str = warning.getZsbName() + "-" + warning.getWarnDesc()
|
|
|
|
+ ", 采集时间:" + dateStr + ", 当前值:" + value + " " + warning.getTriggerDesc();
|
|
|
|
+ ", 采集时间:" + DateUtil.format(model.getDate()) + ", 当前值:" + model.getValue() + " " + warning.getTriggerDesc();
|
|
|
|
log.warn("触发规则告警: " + str);
|
|
|
|
log.warn("触发规则告警: " + str);
|
|
|
|
webSocketServer.sendMessage(str);
|
|
|
|
webSocketServer.sendMessage(str);
|
|
|
|
dingTalkPushUtil.pushText(str);
|
|
|
|
dingTalkPushUtil.pushText(str);
|
|
|
|