|
@@ -25,79 +25,6 @@ import java.util.concurrent.ConcurrentHashMap;
|
|
@Component
|
|
@Component
|
|
@Slf4j
|
|
@Slf4j
|
|
public class AlarmInfoCache {
|
|
public class AlarmInfoCache {
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 报警对象id -> (条件Id,报警类型编码)列表,项目id
|
|
|
|
- * objId -> {[{conditionId, itemCode}], projectId}
|
|
|
|
- * 为线程安全,使用concurrentHashMap
|
|
|
|
- */
|
|
|
|
- private final ConcurrentHashMap<String, ObjConditionInfo> objConditionMap = new ConcurrentHashMap<>();
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 报警条件id -> 报警条件
|
|
|
|
- */
|
|
|
|
- private final ConcurrentHashMap<String, AlarmCondition> alarmConditionMap = new ConcurrentHashMap<>();
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * (报警类型编码-报警对象id) -> 状态
|
|
|
|
- * 报警类型和设备id可以确认唯一的报警条件
|
|
|
|
- */
|
|
|
|
- private final ConcurrentHashMap<String, AlarmConditionState> alarmConditionStateMap = new ConcurrentHashMap<>();
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * @param :
|
|
|
|
- * @description:获取报警定义状态 <报警定义标识,报警时间状态>
|
|
|
|
- * @exception:
|
|
|
|
- * @author: LuoGuangyi
|
|
|
|
- * @company: Persagy Technology Co.,Ltd
|
|
|
|
- * @return: null
|
|
|
|
- * @since: 2020/10/20 17:12
|
|
|
|
- * @version: V1.0
|
|
|
|
- */
|
|
|
|
- public AlarmConditionState getAlarmDefineState(String definitionId) {
|
|
|
|
- return alarmConditionStateMap.get(definitionId);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * @param definitionId: 报警定义id
|
|
|
|
- * @param alarmConditionState: 报警状态时间类
|
|
|
|
- * @description:设置报警定义
|
|
|
|
- * @exception:
|
|
|
|
- * @author: LuoGuangyi
|
|
|
|
- * @company: Persagy Technology Co.,Ltd
|
|
|
|
- * @return: com.persagy.entity.AlarmState
|
|
|
|
- * @since: 2020/10/20 17:15
|
|
|
|
- * @version: V1.0
|
|
|
|
- */
|
|
|
|
- public AlarmConditionState setAlarmState(String definitionId, AlarmConditionState alarmConditionState) {
|
|
|
|
- return alarmConditionStateMap.put(definitionId, alarmConditionState);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 根据报警对象id获取关联的报警条件
|
|
|
|
- *
|
|
|
|
- * @param objId 报警对象id
|
|
|
|
- * @return 关联的报警条件信息
|
|
|
|
- * @author lixing
|
|
|
|
- * @version V1.0 2021/10/22 4:46 下午
|
|
|
|
- */
|
|
|
|
- public ObjConditionInfo getAlarmConditionsByObjId(String objId) {
|
|
|
|
- return objConditionMap.get(objId);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 清空缓存
|
|
|
|
- *
|
|
|
|
- * @author lixing
|
|
|
|
- * @version V1.0 2021/10/25 9:50 上午
|
|
|
|
- */
|
|
|
|
- public void clear() {
|
|
|
|
- objConditionMap.clear();
|
|
|
|
- alarmConditionMap.clear();
|
|
|
|
- //清除编译表达式缓存
|
|
|
|
- AviatorEvaluator.getInstance().clearExpressionCache();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
/**
|
|
/**
|
|
* @param alarmDefine:
|
|
* @param alarmDefine:
|
|
* @description:获取报警定义id, 中台报警定义ID没有实际意义,根据itemCode-objId拼接作为唯一标识
|
|
* @description:获取报警定义id, 中台报警定义ID没有实际意义,根据itemCode-objId拼接作为唯一标识
|
|
@@ -110,161 +37,4 @@ public class AlarmInfoCache {
|
|
public static String getAlarmDefineId(AlarmDefine alarmDefine) {
|
|
public static String getAlarmDefineId(AlarmDefine alarmDefine) {
|
|
return alarmDefine.getItemCode() + "-" + alarmDefine.getObjId();
|
|
return alarmDefine.getItemCode() + "-" + alarmDefine.getObjId();
|
|
}
|
|
}
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 获取报警条件
|
|
|
|
- *
|
|
|
|
- * @param conditionId 报警条件id
|
|
|
|
- * @return 报警条件
|
|
|
|
- * @author lixing
|
|
|
|
- * @version V1.0 2021/10/22 5:04 下午
|
|
|
|
- */
|
|
|
|
- public AlarmCondition getAlarmCondition(String conditionId) {
|
|
|
|
- return alarmConditionMap.get(conditionId);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 缓存报警条件
|
|
|
|
- *
|
|
|
|
- * @param alarmCondition 报警条件
|
|
|
|
- * @author lixing
|
|
|
|
- * @version V1.0 2021/10/22 5:04 下午
|
|
|
|
- */
|
|
|
|
- public void cacheAlarmCondition(AlarmCondition alarmCondition) {
|
|
|
|
- if (alarmCondition == null) {
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- alarmConditionMap.put(alarmCondition.getId(), alarmCondition);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 移除缓存的报警条件
|
|
|
|
- *
|
|
|
|
- * @param alarmCondition 报警条件
|
|
|
|
- * @author lixing
|
|
|
|
- * @version V1.0 2021/10/22 5:04 下午
|
|
|
|
- */
|
|
|
|
- public void removeCachedAlarmCondition(AlarmCondition alarmCondition) {
|
|
|
|
- if (alarmCondition == null) {
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- alarmConditionMap.remove(alarmCondition.getId());
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 缓存报警条件列表
|
|
|
|
- *
|
|
|
|
- * @param alarmConditions 报警条件列表
|
|
|
|
- * @author lixing
|
|
|
|
- * @version V1.0 2021/10/22 5:04 下午
|
|
|
|
- */
|
|
|
|
- public void cacheAlarmConditions(List<AlarmCondition> alarmConditions) {
|
|
|
|
- if (CollectionUtils.isEmpty(alarmConditions)) {
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- for (AlarmCondition alarmCondition : alarmConditions) {
|
|
|
|
- cacheAlarmCondition(alarmCondition);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 缓存对象与条件的关联关系列表
|
|
|
|
- *
|
|
|
|
- * @param objConditionRelList 对象与条件的关联关系列表
|
|
|
|
- * @author lixing
|
|
|
|
- * @version V1.0 2021/10/25 10:36 上午
|
|
|
|
- */
|
|
|
|
- public void cacheObjConditionRelList(List<ObjConditionRel> objConditionRelList) {
|
|
|
|
- if (CollectionUtils.isEmpty(objConditionRelList)) {
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- for (ObjConditionRel objConditionRel : objConditionRelList) {
|
|
|
|
- cacheObjConditionRel(objConditionRel);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 缓存对象与条件的关联关系
|
|
|
|
- *
|
|
|
|
- * @param objConditionRel 对象与条件的关联关系
|
|
|
|
- * @author lixing
|
|
|
|
- * @version V1.0 2021/10/25 10:36 上午
|
|
|
|
- */
|
|
|
|
- public void cacheObjConditionRel(ObjConditionRel objConditionRel) {
|
|
|
|
- // 报警对象id
|
|
|
|
- String objId = objConditionRel.getObjId();
|
|
|
|
- // 报警对象和报警条件的关联信息
|
|
|
|
- ObjConditionInfo objConditionInfo;
|
|
|
|
- if (objConditionMap.containsKey(objId)) {
|
|
|
|
- objConditionInfo = objConditionMap.get(objId);
|
|
|
|
- } else {
|
|
|
|
- objConditionInfo = new ObjConditionInfo(objConditionRel.getProjectId());
|
|
|
|
- objConditionMap.put(objId, objConditionInfo);
|
|
|
|
- }
|
|
|
|
- ItemCodeCondition condition = new ItemCodeCondition();
|
|
|
|
- condition.setConditionId(objConditionRel.getConditionId());
|
|
|
|
- condition.setItemCode(objConditionRel.getItemCode());
|
|
|
|
- // 对象内部自己做去重操作
|
|
|
|
- objConditionInfo.addCondition(condition);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 移除缓存的对象与条件的关联关系
|
|
|
|
- *
|
|
|
|
- * @param objConditionRel 对象与条件的关联关系
|
|
|
|
- * @author lixing
|
|
|
|
- * @version V1.0 2021/10/25 10:36 上午
|
|
|
|
- */
|
|
|
|
- public void removeCachedObjConditionRel(ObjConditionRel objConditionRel) {
|
|
|
|
- // 报警对象id
|
|
|
|
- String objId = objConditionRel.getObjId();
|
|
|
|
- if (!objConditionMap.containsKey(objId)) {
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- // 报警对象和报警条件的关联信息
|
|
|
|
- ObjConditionInfo objConditionInfo = objConditionMap.get(objId);
|
|
|
|
- ItemCodeCondition condition = new ItemCodeCondition();
|
|
|
|
- condition.setConditionId(objConditionRel.getConditionId());
|
|
|
|
- condition.setItemCode(objConditionRel.getItemCode());
|
|
|
|
- objConditionInfo.removeCondition(condition);
|
|
|
|
- if (CollectionUtils.isEmpty(objConditionInfo.getConditions())) {
|
|
|
|
- objConditionMap.remove(objId);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 获取缓存的报警条件数量
|
|
|
|
- *
|
|
|
|
- * @author lixing
|
|
|
|
- * @version V1.0 2021/10/28 9:53 上午
|
|
|
|
- */
|
|
|
|
- public Integer getCachedConditionCount() {
|
|
|
|
- return alarmConditionMap.size();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 获取缓存的设备数量
|
|
|
|
- *
|
|
|
|
- * @author lixing
|
|
|
|
- * @version V1.0 2021/10/28 9:53 上午
|
|
|
|
- */
|
|
|
|
- public Integer getCachedObjCount() {
|
|
|
|
- return objConditionMap.size();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 获取缓存的设备与报警条件关联关系数量
|
|
|
|
- *
|
|
|
|
- * @author lixing
|
|
|
|
- * @version V1.0 2021/10/28 9:53 上午
|
|
|
|
- */
|
|
|
|
- public Integer getCachedObjConditionRelCount() {
|
|
|
|
- int result = 0;
|
|
|
|
- for (String objId : objConditionMap.keySet()) {
|
|
|
|
- ObjConditionInfo objConditionInfo = objConditionMap.get(objId);
|
|
|
|
- result += objConditionInfo.getConditions().size();
|
|
|
|
- }
|
|
|
|
- return result;
|
|
|
|
- }
|
|
|
|
}
|
|
}
|