deviceEvent修改描述根据stateDesc配置

This commit is contained in:
huguanghan 2024-11-28 16:26:19 +08:00
parent 14d49d08bf
commit 8a345f178e
3 changed files with 30 additions and 1 deletions

View File

@ -25,6 +25,7 @@ import org.springframework.util.StopWatch;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Slf4j @Slf4j
@ -71,6 +72,10 @@ public class DataServiceImpl implements DataService {
public ConcurrentHashMap<String, Map<String, Integer>> eventLevelMap = new ConcurrentHashMap<>(10000); public ConcurrentHashMap<String, Map<String, Integer>> eventLevelMap = new ConcurrentHashMap<>(10000);
public ConcurrentHashMap<String, Map<String, String>> stateDescMap = new ConcurrentHashMap<>(10000);
/** /**
* 读取实时数据快照 * 读取实时数据快照
* @param paramList 设备id及设备属性列表 * @param paramList 设备id及设备属性列表
@ -234,6 +239,7 @@ public class DataServiceImpl implements DataService {
Map<String, String> calculateFieldList = allIotModelField.stream().filter(field -> field.getAttributeType() == 199).collect(Collectors.toMap(SysIotModelField::getAttributeCode, SysIotModelField::getDataType, (value1, value2) -> value1)); Map<String, String> calculateFieldList = allIotModelField.stream().filter(field -> field.getAttributeType() == 199).collect(Collectors.toMap(SysIotModelField::getAttributeCode, SysIotModelField::getDataType, (value1, value2) -> value1));
Map<String, String> fieldCodeNameList = allIotModelField.stream().collect(Collectors.toMap(SysIotModelField::getAttributeCode, SysIotModelField::getAttributeName, (value1, value2) -> value1)); Map<String, String> fieldCodeNameList = allIotModelField.stream().collect(Collectors.toMap(SysIotModelField::getAttributeCode, SysIotModelField::getAttributeName, (value1, value2) -> value1));
Map<String, Integer> eventLevelList = allIotModelField.stream().collect(Collectors.toMap(SysIotModelField::getAttributeCode, SysIotModelField::getLevel, (value1, value2) -> value1)); Map<String, Integer> eventLevelList = allIotModelField.stream().collect(Collectors.toMap(SysIotModelField::getAttributeCode, SysIotModelField::getLevel, (value1, value2) -> value1));
Map<String, String> stateDescList = allIotModelField.stream().collect(Collectors.toMap(SysIotModelField::getAttributeCode, SysIotModelField::getStateDesc, (value1, value2) -> value1));
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
for (String field : HighModelFieldList.keySet()) { for (String field : HighModelFieldList.keySet()) {
map.put(field, HighModelFieldList.get(field)); map.put(field, HighModelFieldList.get(field));
@ -247,6 +253,8 @@ public class DataServiceImpl implements DataService {
eventLevelMap.put(item.getIotModelCode(),eventLevelList); eventLevelMap.put(item.getIotModelCode(),eventLevelList);
fieldCodeNameMap.put(item.getIotModelCode(),fieldCodeNameList); fieldCodeNameMap.put(item.getIotModelCode(),fieldCodeNameList);
calculateIotFieldMap.put(item.getIotModelCode(), calculateFieldList); calculateIotFieldMap.put(item.getIotModelCode(), calculateFieldList);
stateDescMap.put(item.getIotModelCode(),stateDescList);
} }
tdEngineService.initIotModel(allIotModel, highIotFieldMap, lowIotFieldMap, calculateIotFieldMap); tdEngineService.initIotModel(allIotModel, highIotFieldMap, lowIotFieldMap, calculateIotFieldMap);
} }

View File

@ -635,6 +635,16 @@ public class SysIotModelServiceImpl implements SysIotModelService {
} }
} }
if (sysIotModelField.getStateDesc() != null){
Map<String, String> stateDescMap = dataService.stateDescMap.get(modelCode);
if (stateDescMap == null) {
Map<String, String> calMap = new HashMap<>();
calMap.put(sysIotModelField.getAttributeCode(), sysIotModelField.getStateDesc());
dataService.stateDescMap.put(modelCode, calMap);
} else {
stateDescMap.put(sysIotModelField.getAttributeCode(), sysIotModelField.getStateDesc());
}
}
if (sysIotModelField.getAttributeType() == 199) { if (sysIotModelField.getAttributeType() == 199) {
Map<String, String> map = dataService.calculateIotFieldMap.get(modelCode); Map<String, String> map = dataService.calculateIotFieldMap.get(modelCode);
if (map == null) { if (map == null) {
@ -686,6 +696,9 @@ public class SysIotModelServiceImpl implements SysIotModelService {
if (sysIotModelField.getLevel() != null){ if (sysIotModelField.getLevel() != null){
dataService.eventLevelMap.remove(sysIotModelField.getAttributeCode()); dataService.eventLevelMap.remove(sysIotModelField.getAttributeCode());
} }
if (sysIotModelField.getStateDesc() != null){
dataService.stateDescMap.remove(sysIotModelField.getAttributeCode());
}
if (sysIotModelField.getAttributeType() == 199) { if (sysIotModelField.getAttributeType() == 199) {
Map<String, String> map = dataService.calculateIotFieldMap.get(modelCode); Map<String, String> map = dataService.calculateIotFieldMap.get(modelCode);
map.remove(sysIotModelField.getAttributeCode()); map.remove(sysIotModelField.getAttributeCode());

View File

@ -369,12 +369,20 @@ public class NodeMessageServiceImpl extends TextWebSocketHandler implements Node
deviceEventInfo.setEventType(item.getEventType()); deviceEventInfo.setEventType(item.getEventType());
deviceEventInfo.setConfirmed(0); deviceEventInfo.setConfirmed(0);
if (!StringUtils.isEmpty(eventType) && eventType.equals("遥信变位")) { if (!StringUtils.isEmpty(eventType) && eventType.equals("遥信变位")) {
String stateDesc = dataService.stateDescMap.get(model).get(item.getAttrCode());
if (item.getAttrValue().equals(0)) { if (item.getAttrValue().equals(0)) {
deviceEventInfo.setEventText(item.getAttrCode()+fieldName + " 复归"); deviceEventInfo.setEventText(item.getAttrCode()+fieldName + " 复归");
if (StringUtils.isNotEmpty(stateDesc)){
List<String> descList = Arrays.stream(stateDesc.split("\\|")).toList();
deviceEventInfo.setEventText(item.getAttrCode()+fieldName + descList.get(0));
}
deviceEventInfo.setEventLevel(0); deviceEventInfo.setEventLevel(0);
} else { } else {
deviceEventInfo.setEventText(item.getAttrCode()+fieldName + " 动作"); deviceEventInfo.setEventText(item.getAttrCode()+fieldName + " 动作");
if (StringUtils.isNotEmpty(stateDesc)){
List<String> descList = Arrays.stream(stateDesc.split("\\|")).toList();
deviceEventInfo.setEventText(item.getAttrCode()+fieldName + descList.get(1));
}
Integer level = dataService.eventLevelMap.get(model).get(item.getAttrCode()); Integer level = dataService.eventLevelMap.get(model).get(item.getAttrCode());
log.info("level:{}",level); log.info("level:{}",level);
log.info("fieldname{}",fieldName); log.info("fieldname{}",fieldName);