物模型,物模型属性缓存刷新,deviceEventCommand修改
This commit is contained in:
parent
1baa3f77c2
commit
1b6ef3cc28
@ -1,5 +1,6 @@
|
||||
package com.das.modules.cache.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@ -10,6 +11,8 @@ public class IotFieldInfoCache {
|
||||
private Integer porder;
|
||||
private Integer highspeed;
|
||||
private String datatype;
|
||||
private Integer level;
|
||||
private String stateDesc;
|
||||
|
||||
public boolean isHighSpeed() {
|
||||
return highspeed.equals(1) && attributeType.equals(138);
|
||||
|
@ -1,7 +1,16 @@
|
||||
package com.das.modules.cache.service;
|
||||
|
||||
import com.das.modules.cache.domain.IotFieldInfoCache;
|
||||
import com.das.modules.equipment.entity.SysIotModel;
|
||||
import com.das.modules.equipment.entity.SysIotModelField;
|
||||
|
||||
public interface IotModelCache {
|
||||
public boolean isHighSpeed(Long modelId, String attr);
|
||||
public boolean isLowSpeed(Long modelId, String attr);
|
||||
public boolean isCalculate(Long modelId, String attr);
|
||||
void refreshIotFieldCache(SysIotModelField sysIotModelField);
|
||||
void removeIotFieldCache(Long modelId, String attributeCode);
|
||||
void refreshIotModelInfoIdMap(SysIotModel sysIotModel);
|
||||
void removeIotModelInfoIdMap(Long modelId);
|
||||
IotFieldInfoCache getIotFiledCache(Long modelId,String attr);
|
||||
}
|
||||
|
@ -3,6 +3,8 @@ package com.das.modules.cache.service.impl;
|
||||
import com.das.modules.cache.domain.IotFieldInfoCache;
|
||||
import com.das.modules.cache.domain.IotModelInfoCache;
|
||||
import com.das.modules.cache.service.IotModelCache;
|
||||
import com.das.modules.equipment.entity.SysIotModel;
|
||||
import com.das.modules.equipment.entity.SysIotModelField;
|
||||
import com.das.modules.equipment.mapper.SysIotModelMapper;
|
||||
import jakarta.annotation.PostConstruct;
|
||||
import jakarta.annotation.PreDestroy;
|
||||
@ -38,6 +40,8 @@ public class IotModelCacheImpl implements IotModelCache {
|
||||
fieldInfoCache.setAttributeType(item.getAttributeType());
|
||||
fieldInfoCache.setHighspeed(item.getHighSpeed());
|
||||
fieldInfoCache.setDatatype(item.getDataType());
|
||||
fieldInfoCache.setLevel(item.getLevel());
|
||||
fieldInfoCache.setStateDesc(item.getStateDesc());
|
||||
iotFieldsMap.put(String.format("%d_%s", k, item.getAttributeCode()), fieldInfoCache);
|
||||
});
|
||||
});
|
||||
@ -75,4 +79,42 @@ public class IotModelCacheImpl implements IotModelCache {
|
||||
}
|
||||
return fieldInfoCache.isCalculate();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void refreshIotFieldCache(SysIotModelField sysIotModelField) {
|
||||
IotFieldInfoCache fieldInfoCache = new IotFieldInfoCache();
|
||||
fieldInfoCache.setAttributeCode(sysIotModelField.getAttributeCode());
|
||||
fieldInfoCache.setPorder(sysIotModelField.getPorder());
|
||||
fieldInfoCache.setAttributeName(sysIotModelField.getAttributeName());
|
||||
fieldInfoCache.setAttributeType(sysIotModelField.getAttributeType());
|
||||
fieldInfoCache.setHighspeed(sysIotModelField.getHighSpeed());
|
||||
fieldInfoCache.setDatatype(sysIotModelField.getDataType());
|
||||
fieldInfoCache.setLevel(sysIotModelField.getLevel());
|
||||
fieldInfoCache.setStateDesc(sysIotModelField.getStateDesc());
|
||||
iotFieldsMap.put(String.format("%d_%s", sysIotModelField.getIotModelId(), sysIotModelField.getAttributeCode()), fieldInfoCache);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeIotFieldCache(Long modelId, String attributeCode){
|
||||
iotFieldsMap.remove(String.format("%d_%s", modelId, attributeCode));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void refreshIotModelInfoIdMap(SysIotModel sysIotModel){
|
||||
IotModelInfoCache info = new IotModelInfoCache();
|
||||
info.setIotModelId(sysIotModel.getId());
|
||||
info.setIodModelCode(sysIotModel.getIotModelCode());
|
||||
iotModelInfoIdMap.put(sysIotModel.getId(), info);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeIotModelInfoIdMap(Long modelId) {
|
||||
iotModelInfoIdMap.remove(modelId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IotFieldInfoCache getIotFiledCache(Long modelId, String attr) {
|
||||
return iotFieldsMap.get(String.format("%d_%s", modelId, attr));
|
||||
}
|
||||
}
|
||||
|
@ -10,6 +10,7 @@ import com.das.common.config.SessionUtil;
|
||||
import com.das.common.exceptions.ServiceException;
|
||||
import com.das.common.utils.*;
|
||||
import com.das.modules.auth.domain.vo.SysUserVo;
|
||||
import com.das.modules.cache.service.CacheService;
|
||||
import com.das.modules.data.service.impl.DataServiceImpl;
|
||||
import com.das.modules.equipment.domain.dto.SysIotModelDto;
|
||||
import com.das.modules.equipment.domain.dto.SysIotModelFieldDto;
|
||||
@ -65,6 +66,9 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
||||
@Autowired
|
||||
SysRecordLogService sysRecordLogService;
|
||||
|
||||
@Autowired
|
||||
CacheService cacheService;
|
||||
|
||||
public SysIotModelVo creatSysIotModel(SysIotModelDto sysIotModelDto) {
|
||||
SysIotModel sysIotModel = new SysIotModel();
|
||||
BeanCopyUtils.copy(sysIotModelDto, sysIotModel);
|
||||
@ -81,7 +85,9 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
||||
|
||||
sysIotModel.setRevision(1);
|
||||
sysIotModelMapper.insert(sysIotModel);
|
||||
//刷新缓存
|
||||
addModelCache(sysIotModel);
|
||||
cacheService.getIotModelCache().refreshIotModelInfoIdMap(sysIotModel);
|
||||
SysIotModelVo sysIotModelVo = new SysIotModelVo();
|
||||
BeanCopyUtils.copy(sysIotModel, sysIotModelVo);
|
||||
sysIotModelVo.setIotModelCode(sysIotModelDto.getIotModelCode());
|
||||
@ -119,6 +125,8 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
||||
throw new RuntimeException("该物模型下面有类型,不能删除");
|
||||
}
|
||||
sysIotModelMapper.deleteById(sysIotModelDto.getId());
|
||||
//刷新缓存
|
||||
cacheService.getIotModelCache().removeIotModelInfoIdMap(sysIotModelDto.getId());
|
||||
deleteModelCache(sysIotModelDto.getId());
|
||||
|
||||
}
|
||||
@ -184,6 +192,7 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
||||
|
||||
sysIotModelFieldMapper.insert(sysIotModelField);
|
||||
//新增物模型属性缓存
|
||||
cacheService.getIotModelCache().refreshIotFieldCache(sysIotModelField);
|
||||
addModelFieldCache(sysIotModelField);
|
||||
SysIotModelFieldVo sysIotModelFieldVo = new SysIotModelFieldVo();
|
||||
BeanCopyUtils.copy(sysIotModelField, sysIotModelFieldVo);
|
||||
@ -216,6 +225,7 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
||||
if (!oldSysIotField.getAttributeCode().equals(sysIotModelField.getAttributeCode()) || !oldSysIotField.getDataType().equals(sysIotModelField.getDataType()) || Objects.equals(oldSysIotField.getHighSpeed(), sysIotModelField.getHighSpeed())) {
|
||||
//更新td表结构
|
||||
updateTDStableOrColumn(sysIotModelField, oldSysIotField);
|
||||
cacheService.getIotModelCache().refreshIotFieldCache(sysIotModelField);
|
||||
updateModelFieldCache(sysIotModelField, oldSysIotField);
|
||||
}
|
||||
sysIotModelFieldMapper.updateById(sysIotModelField);
|
||||
@ -232,6 +242,7 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
||||
|
||||
sysIotModelFieldMapper.deleteById(sysIotModelFieldDto.getId());
|
||||
//删除物模型属性缓存
|
||||
cacheService.getIotModelCache().removeIotFieldCache(sysIotModelField.getIotModelId(), sysIotModelField.getAttributeCode());
|
||||
deleteModelFieldCache(sysIotModelField);
|
||||
}
|
||||
|
||||
@ -488,6 +499,10 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
||||
}
|
||||
//新增pg数据库
|
||||
sysIotModelFieldMapper.insertBatch(sysIotModelFieldList);
|
||||
//刷新缓存
|
||||
for (SysIotModelField item : sysIotModelFieldList){
|
||||
cacheService.getIotModelCache().refreshIotFieldCache(item);
|
||||
}
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(updateSysIotModelFieldList)) {
|
||||
for (SysIotModelField item : updateSysIotModelFieldList) {
|
||||
@ -496,6 +511,7 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
||||
if (!oldSysIotField.getAttributeCode().equals(item.getAttributeCode()) && oldSysIotField.getDataType().equals(item.getDataType()) && Objects.equals(oldSysIotField.getHighSpeed(), item.getHighSpeed())) {
|
||||
//更新td表结构
|
||||
updateTDStableOrColumn(item, oldSysIotField);
|
||||
cacheService.getIotModelCache().refreshIotFieldCache(item);
|
||||
updateModelFieldCache(item, oldSysIotField);
|
||||
}
|
||||
}
|
||||
@ -509,6 +525,7 @@ public class SysIotModelServiceImpl implements SysIotModelService {
|
||||
for (SysIotModelField item : delSysIotModelFieldList) {
|
||||
deleteTDStableOrColumn(item);
|
||||
sysIotModelFieldMapper.deleteById(item);
|
||||
cacheService.getIotModelCache().removeIotFieldCache(item.getIotModelId(), item.getAttributeCode());
|
||||
deleteModelFieldCache(item);
|
||||
}
|
||||
}
|
||||
|
@ -1,17 +1,17 @@
|
||||
package com.das.modules.node.command;
|
||||
|
||||
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
||||
import com.das.common.exceptions.ServiceException;
|
||||
import com.das.common.utils.AdminRedisTemplate;
|
||||
import com.das.common.utils.StringUtils;
|
||||
import com.das.modules.cache.domain.DeviceInfoCache;
|
||||
import com.das.modules.cache.domain.IotFieldInfoCache;
|
||||
import com.das.modules.cache.service.CacheService;
|
||||
import com.das.modules.data.domain.DeviceEventInfo;
|
||||
import com.das.modules.data.service.TDEngineService;
|
||||
import com.das.modules.data.service.impl.DataServiceImpl;
|
||||
import com.das.modules.node.constant.NodeConstant;
|
||||
import com.das.modules.node.domain.bo.TerminalMessage;
|
||||
import com.das.modules.node.domain.vo.DeviceEventVo;
|
||||
import com.das.modules.node.service.NodeMessageService;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
@ -29,9 +29,6 @@ public class DeviceEventCommand implements BaseCommand{
|
||||
@Autowired
|
||||
AdminRedisTemplate adminRedisTemplate;
|
||||
|
||||
@Autowired
|
||||
private DataServiceImpl dataService;
|
||||
|
||||
@Autowired
|
||||
TDEngineService tdEngineService;
|
||||
|
||||
@ -72,18 +69,20 @@ public class DeviceEventCommand implements BaseCommand{
|
||||
deviceEventInfo.setDeviceCode(deviceInfoCache.getDeviceCode());
|
||||
deviceEventInfo.setFirstTriggeredCode(firstTriggeredCode);
|
||||
String eventType = getEventType(item.getEventType());
|
||||
String model = dataService.deviceModelMap.get(item.getDeviceId());
|
||||
if (StringUtils.isEmpty(model)) {
|
||||
Long iotModelId = deviceInfoCache.getIotModelId();
|
||||
if (iotModelId == null) {
|
||||
log.debug("未查询到物模型code,设备id:{}", item.getDeviceId());
|
||||
}
|
||||
String fieldName = dataService.fieldCodeNameMap.get(model).get(item.getAttrCode());
|
||||
if (StringUtils.isEmpty(fieldName)) {
|
||||
log.debug("未查询到物模型属性code,设备id:{}", item.getDeviceId());
|
||||
IotFieldInfoCache iotFiledCache = cacheService.getIotModelCache().getIotFiledCache(iotModelId, item.getAttrCode());
|
||||
if (iotFiledCache == null) {
|
||||
log.debug("未查询到物模型属性,设备id:{},属性AttrCode:{}", item.getDeviceId(),item.getAttrCode());
|
||||
throw new ServiceException("未查询到物模型属性,设备id:"+item.getDeviceId()+",属性AttrCode:"+item.getAttrCode());
|
||||
}
|
||||
String fieldName = iotFiledCache.getAttributeName();
|
||||
deviceEventInfo.setEventType(item.getEventType());
|
||||
deviceEventInfo.setConfirmed(0);
|
||||
if (!StringUtils.isEmpty(eventType) && eventType.equals("遥信变位")) {
|
||||
String stateDesc = dataService.stateDescMap.get(model).get(item.getAttrCode());
|
||||
String stateDesc = iotFiledCache.getStateDesc();
|
||||
if (item.getAttrValue().equals(0)) {
|
||||
deviceEventInfo.setEventText(item.getAttrCode() + fieldName + " 复归");
|
||||
if (StringUtils.isNotEmpty(stateDesc)) {
|
||||
@ -97,7 +96,7 @@ public class DeviceEventCommand implements BaseCommand{
|
||||
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 = iotFiledCache.getLevel();
|
||||
log.debug("level:{}", level);
|
||||
log.debug("fieldname{}", fieldName);
|
||||
deviceEventInfo.setEventLevel(level == null ? 0 : level);
|
||||
|
Loading…
Reference in New Issue
Block a user