|
@@ -99,31 +99,31 @@ public class AlarmHandleServiceImpl implements AlarmHandleService {
|
|
|
}
|
|
|
|
|
|
private void validIotData(String dateTime, String meterId, String funcId, double value) throws SchedulerException, InterruptedException {
|
|
|
- currentDataCache.putCurrentData(meterId, funcId, value);
|
|
|
List<AlarmDefine> alarmDefines = alarmInfoCache.getAlarmDefinitionIdByMeterFuncId(meterId, funcId);
|
|
|
for (AlarmDefine alarmDefine : alarmDefines) {
|
|
|
- Condition condition = alarmDefine.getCondition();
|
|
|
- List<JSONObject> codeDetail = condition.getInfoCodes();
|
|
|
- boolean match = codeDetail.stream().allMatch(p -> currentDataCache.hasKey(p.getString("meterId"), p.getString("funcId")));
|
|
|
- //报警定义的所有信息点都有采集数值,具备判断条件
|
|
|
- if (match) {
|
|
|
- String defineId = AlarmInfoCache.getAlarmDefineId(alarmDefine);
|
|
|
- String trigger = condition.getTrigger();
|
|
|
- String end = condition.getEnd();
|
|
|
- HashMap paramMap = new HashMap<>();
|
|
|
- for (int j = 0; j < codeDetail.size(); j++) {
|
|
|
- JSONObject code = codeDetail.get(j);
|
|
|
- paramMap.put(code.getString("infoCode"), currentDataCache.getCurrentData(code.getString("meterId"), code.getString("funcId")));
|
|
|
- }
|
|
|
- Expression triggerExp = AviatorEvaluator.compile(trigger, true);
|
|
|
- Expression endExp = AviatorEvaluator.compile(end, true);
|
|
|
- Boolean triggerResult = (Boolean) triggerExp.execute(paramMap);
|
|
|
- Boolean endResult = (Boolean) endExp.execute(paramMap);
|
|
|
- log.info("triggerResult:[{}],endResult:[{}]" , triggerResult,endResult);
|
|
|
- if (triggerResult && endResult) {
|
|
|
- log.warn("报警触发条件和报警恢复条件同时满足,请检查,报警定义详情【{}】", alarmDefine.toString());
|
|
|
- }
|
|
|
- synchronized (defineId.intern()) {
|
|
|
+ String defineId = AlarmInfoCache.getAlarmDefineId(alarmDefine);
|
|
|
+ synchronized (defineId.intern()) {
|
|
|
+ currentDataCache.putCurrentData(meterId, funcId, value);
|
|
|
+ Condition condition = alarmDefine.getCondition();
|
|
|
+ List<JSONObject> codeDetail = condition.getInfoCodes();
|
|
|
+ boolean match = codeDetail.stream().allMatch(p -> currentDataCache.hasKey(p.getString("meterId"), p.getString("funcId")));
|
|
|
+ //报警定义的所有信息点都有采集数值,具备判断条件
|
|
|
+ if (match) {
|
|
|
+ String trigger = condition.getTrigger();
|
|
|
+ String end = condition.getEnd();
|
|
|
+ HashMap paramMap = new HashMap<>();
|
|
|
+ for (int j = 0; j < codeDetail.size(); j++) {
|
|
|
+ JSONObject code = codeDetail.get(j);
|
|
|
+ paramMap.put(code.getString("infoCode"), currentDataCache.getCurrentData(code.getString("meterId"), code.getString("funcId")));
|
|
|
+ }
|
|
|
+ Expression triggerExp = AviatorEvaluator.compile(trigger, true);
|
|
|
+ Expression endExp = AviatorEvaluator.compile(end, true);
|
|
|
+ Boolean triggerResult = (Boolean) triggerExp.execute(paramMap);
|
|
|
+ Boolean endResult = (Boolean) endExp.execute(paramMap);
|
|
|
+ log.info("triggerResult:[{}],endResult:[{}]" , triggerResult,endResult);
|
|
|
+ if (triggerResult && endResult) {
|
|
|
+ log.warn("报警触发条件和报警恢复条件同时满足,请检查,报警定义详情【{}】", alarmDefine.toString());
|
|
|
+ }
|
|
|
AlarmState alarmState = alarmInfoCache.getAlarmState(defineId);
|
|
|
if (Objects.isNull(alarmState)) {
|
|
|
//默认正常报警状态
|
|
@@ -152,9 +152,9 @@ public class AlarmHandleServiceImpl implements AlarmHandleService {
|
|
|
//当前数据正常
|
|
|
handlerNowDataNormal(alarmDefine, dateTime, condition, defineId, endResult, alarmState,paramMap,meterId,funcId,value);
|
|
|
}
|
|
|
+ } else {
|
|
|
+ log.warn("部分信息点没有数值:[{}]", codeDetail);
|
|
|
}
|
|
|
- } else {
|
|
|
- log.warn("部分信息点没有数值:[{}]", codeDetail);
|
|
|
}
|
|
|
}
|
|
|
}
|