Browse Source

Merge branch 'master' into zhczh_c

zhczh_c
zhczyx@163.com 3 weeks ago
parent
commit
666b74b822
  1. 2
      src/main/java/com/techsor/datacenter/sender/constants/DeviceAttrCode.java
  2. 2
      src/main/java/com/techsor/datacenter/sender/dao/DeviceDao.java
  3. 2
      src/main/java/com/techsor/datacenter/sender/dto/DeviceInfoVO.java
  4. 2
      src/main/java/com/techsor/datacenter/sender/entitiy/DynamodbEntity.java
  5. 112
      src/main/java/com/techsor/datacenter/sender/service/impl/DataProcessServiceImpl.java
  6. 12
      src/main/resources/application-dev.properties
  7. 12
      src/main/resources/application-prd.properties

2
src/main/java/com/techsor/datacenter/sender/constants/DeviceAttrCode.java

@ -8,4 +8,6 @@ public class DeviceAttrCode {
public static final String MEASURE_HUMIDITY = "humidity"; public static final String MEASURE_HUMIDITY = "humidity";
public static final String MEASURE_CO2 = "co2";
} }

2
src/main/java/com/techsor/datacenter/sender/dao/DeviceDao.java

@ -248,6 +248,7 @@ public class DeviceDao {
+ " bbuilding.retain_alert retainAlert,\r\n" + " bbuilding.retain_alert retainAlert,\r\n"
+ " basset.equipment_id assetId,\r\n" + " basset.equipment_id assetId,\r\n"
+ " basset.name assetName,\r\n" + " basset.name assetName,\r\n"
+ " ty.device_category_id categoryId,\r\n"
+ " dct.category_name_en category\r\n" + " dct.category_name_en category\r\n"
+ "FROM\r\n" + "FROM\r\n"
+ " device_info dinfo\r\n" + " device_info dinfo\r\n"
@ -273,6 +274,7 @@ public class DeviceDao {
item.setCategory(rs.getString("category")); item.setCategory(rs.getString("category"));
item.setMonitoringPointName(rs.getString("monitoringPointName")); item.setMonitoringPointName(rs.getString("monitoringPointName"));
item.setRetainAlert(rs.getInt("retainAlert")); item.setRetainAlert(rs.getInt("retainAlert"));
item.setCategoryId(rs.getLong("categoryId"));
return item; return item;
}); });
return dataList; return dataList;

2
src/main/java/com/techsor/datacenter/sender/dto/DeviceInfoVO.java

@ -51,4 +51,6 @@ public class DeviceInfoVO implements Serializable {
private Integer retainAlert; private Integer retainAlert;
private Long categoryId;
} }

2
src/main/java/com/techsor/datacenter/sender/entitiy/DynamodbEntity.java

@ -137,4 +137,6 @@ public class DynamodbEntity implements Serializable {
private Integer typeId; private Integer typeId;
private Long categoryId;
} }

112
src/main/java/com/techsor/datacenter/sender/service/impl/DataProcessServiceImpl.java

@ -94,30 +94,52 @@ public class DataProcessServiceImpl implements IDataProcessService {
// @Qualifier("sysMqttClient") // @Qualifier("sysMqttClient")
// private MqttClient sysMqttClient; // private MqttClient sysMqttClient;
@Value("${category.alarm.deviceTypeIds}") // @Value("${category.alarm.deviceTypeIds}")
private List<Integer> alarmTypeIds; // private List<Integer> alarmTypeIds;
//
// @Value("${category.measure.deviceTypeIds}")
// private List<Integer> measureTypeIds;
//
// @Value("${category.accumulate.deviceTypeIds}")
// private List<Integer> accumulateTypeIds;
//
// @Value("${category.status.deviceTypeIds}")
// private List<Integer> statusTypeIds;
//
@Value("${category.temperature-humidity.deviceTypeIds}")
private List<Integer> temperatureHumidityTypeIds;
@Value("${category.measure.deviceTypeIds}") @Value("${category.co2-temperature-humidity.deviceTypeIds}")
private List<Integer> measureTypeIds; private List<Integer> co2TemperatureHumidityTypeIds;
//
// // 所有设备类型ID集合
// public static final List<Integer> ALL_DEVICE_TYPE_IDS = new ArrayList<>();
@Value("${category.accumulate.deviceTypeIds}") @Value("${category.id.alarm}")
private List<Integer> accumulateTypeIds; private List<Long> categoryIdAlarm;
@Value("${category.status.deviceTypeIds}") @Value("${category.id.measure}")
private List<Integer> statusTypeIds; private List<Long> categoryIdMeasure;
@Value("${category.temperature-humidity.deviceTypeIds}") @Value("${category.id.accumulate}")
private List<Integer> temperatureHumidityTypeIds; private List<Long> categoryIdAccumulate;
@Value("${category.id.status}")
private List<Long> categoryIdStatus;
// 所有设备类型ID集合 // 所有设备类型ID集合
public static final List<Integer> ALL_DEVICE_TYPE_IDS = new ArrayList<>(); public static final List<Long> ALL_CATEGORY_ID = new ArrayList<>();
@PostConstruct @PostConstruct
public void init() { public void init() {
ALL_DEVICE_TYPE_IDS.addAll(alarmTypeIds); // ALL_DEVICE_TYPE_IDS.addAll(alarmTypeIds);
ALL_DEVICE_TYPE_IDS.addAll(measureTypeIds); // ALL_DEVICE_TYPE_IDS.addAll(measureTypeIds);
ALL_DEVICE_TYPE_IDS.addAll(accumulateTypeIds); // ALL_DEVICE_TYPE_IDS.addAll(accumulateTypeIds);
ALL_DEVICE_TYPE_IDS.addAll(statusTypeIds); // ALL_DEVICE_TYPE_IDS.addAll(statusTypeIds);
ALL_CATEGORY_ID.addAll(categoryIdAlarm);
ALL_CATEGORY_ID.addAll(categoryIdMeasure);
ALL_CATEGORY_ID.addAll(categoryIdAccumulate);
ALL_CATEGORY_ID.addAll(categoryIdStatus);
} }
private static final String REDIS_DASHBOARD_DEVICE_STATUS_KEY = "dashboard_device_status"; private static final String REDIS_DASHBOARD_DEVICE_STATUS_KEY = "dashboard_device_status";
@ -619,6 +641,9 @@ public class DataProcessServiceImpl implements IDataProcessService {
if (deviceInfoVO.getRetainAlert()!=null){ if (deviceInfoVO.getRetainAlert()!=null){
baseTransDataEntity.setRetainAlert(deviceInfoVO.getRetainAlert()); baseTransDataEntity.setRetainAlert(deviceInfoVO.getRetainAlert());
} }
if (deviceInfoVO.getCategoryId()!=null){
baseTransDataEntity.setCategoryId(deviceInfoVO.getCategoryId());
}
} }
baseTransDataEntity.setHashId(UUID.randomUUID()); baseTransDataEntity.setHashId(UUID.randomUUID());
@ -678,27 +703,40 @@ public class DataProcessServiceImpl implements IDataProcessService {
if (CollectionUtil.isEmpty(uploadValueList)) { if (CollectionUtil.isEmpty(uploadValueList)) {
return; return;
} }
if (temperatureHumidityTypeIds.contains(baseTransDataEntity.getTypeId())) { if (co2TemperatureHumidityTypeIds.contains(baseTransDataEntity.getTypeId())) {
for (int i = 0; i < uploadValueList.size(); i++) { // CO2、温度、湿度(顺序固定)
String uploadValue = uploadValueList.get(i); handleMultiMeasure(uploadValueList, baseTransDataEntity,
//温湿度的rawdata,一定是温度在前,湿度在后 DeviceAttrCode.MEASURE_CO2,
if (0 == i) { DeviceAttrCode.MEASURE_TEMPERATURE,
storageMeasure(DeviceAttrCode.MEASURE_TEMPERATURE, uploadValue, baseTransDataEntity); DeviceAttrCode.MEASURE_HUMIDITY);
} else if (1 == i) { } else if (temperatureHumidityTypeIds.contains(baseTransDataEntity.getTypeId())) {
storageMeasure(DeviceAttrCode.MEASURE_HUMIDITY, uploadValue, baseTransDataEntity); // 温度、湿度
} handleMultiMeasure(uploadValueList, baseTransDataEntity,
} DeviceAttrCode.MEASURE_TEMPERATURE,
DeviceAttrCode.MEASURE_HUMIDITY);
} else { } else {
String uploadValue = uploadValueList.get(0);//这里只取第一个元素 String uploadValue = uploadValueList.get(0);//这里只取第一个元素
if (accumulateTypeIds.contains(baseTransDataEntity.getTypeId())) { if (baseTransDataEntity.getDeviceId().endsWith("_85")){
storageAccumulate(DeviceAttrCode.COMMON, uploadValue, baseTransDataEntity); if (categoryIdAccumulate.contains(baseTransDataEntity.getCategoryId())) {
} storageAccumulate(DeviceAttrCode.COMMON, uploadValue, baseTransDataEntity);
if (measureTypeIds.contains(baseTransDataEntity.getTypeId())) { }
storageMeasure(DeviceAttrCode.COMMON, uploadValue, baseTransDataEntity); if (categoryIdMeasure.contains(baseTransDataEntity.getCategoryId())) {
storageMeasure(DeviceAttrCode.COMMON, uploadValue, baseTransDataEntity);
}
} }
} }
} }
private void handleMultiMeasure(List<String> uploadValueList, DynamodbEntity entity, String... attrCodes) throws Exception {
if (uploadValueList == null || uploadValueList.isEmpty()) {
return;
}
int size = Math.min(uploadValueList.size(), attrCodes.length);
for (int i = 0; i < size; i++) {
storageMeasure(attrCodes[i], uploadValueList.get(i), entity);
}
}
private void storageMeasure(String attrCode, String uploadValue, DynamodbEntity baseTransDataEntity) throws Exception { private void storageMeasure(String attrCode, String uploadValue, DynamodbEntity baseTransDataEntity) throws Exception {
BigDecimal currentValue = new BigDecimal(uploadValue); BigDecimal currentValue = new BigDecimal(uploadValue);
BigDecimal minValue = currentValue; BigDecimal minValue = currentValue;
@ -709,8 +747,8 @@ public class DataProcessServiceImpl implements IDataProcessService {
// 获取 Redis 数据 // 获取 Redis 数据
String currentDayKey = Constants.STATISTICS_MEASURE_LATEST_PREFIX + complexTime.getDateKey(); String currentDayKey = Constants.STATISTICS_MEASURE_LATEST_PREFIX + complexTime.getDateKey();
if (!DeviceAttrCode.COMMON.equalsIgnoreCase(attrCode)) { if (!DeviceAttrCode.COMMON.equalsIgnoreCase(attrCode)) {//兼容新数据
currentDayKey = Constants.STATISTICS_MEASURE_LATEST_PREFIX + attrCode + ":" + complexTime.getDateKey();
} }
Object currentDayInfoObj = this.redisTemplate.opsForHash().get(currentDayKey, baseTransDataEntity.getDeviceId()); Object currentDayInfoObj = this.redisTemplate.opsForHash().get(currentDayKey, baseTransDataEntity.getDeviceId());
@ -757,6 +795,10 @@ public class DataProcessServiceImpl implements IDataProcessService {
// 获取 Redis 数据 // 获取 Redis 数据
String currentDayKey = Constants.STATISTICS_ACCUMULATE_LATEST_PREFIX + complexTime.getDateKey(); String currentDayKey = Constants.STATISTICS_ACCUMULATE_LATEST_PREFIX + complexTime.getDateKey();
String lastDayKey = Constants.STATISTICS_ACCUMULATE_LATEST_PREFIX + complexTime.getPreviousDateKey(); String lastDayKey = Constants.STATISTICS_ACCUMULATE_LATEST_PREFIX + complexTime.getPreviousDateKey();
if (!DeviceAttrCode.COMMON.equalsIgnoreCase(attrCode)) {//兼容新数据
currentDayKey = Constants.STATISTICS_ACCUMULATE_LATEST_PREFIX + attrCode + ":" + complexTime.getDateKey();
lastDayKey = Constants.STATISTICS_ACCUMULATE_LATEST_PREFIX + attrCode + ":" + complexTime.getPreviousDateKey();
}
Object currentDayInfoObj = this.redisTemplate.opsForHash().get(currentDayKey, baseTransDataEntity.getDeviceId()); Object currentDayInfoObj = this.redisTemplate.opsForHash().get(currentDayKey, baseTransDataEntity.getDeviceId());
Object lastDayInfoObj = this.redisTemplate.opsForHash().get(lastDayKey, baseTransDataEntity.getDeviceId()); Object lastDayInfoObj = this.redisTemplate.opsForHash().get(lastDayKey, baseTransDataEntity.getDeviceId());
@ -788,7 +830,7 @@ public class DataProcessServiceImpl implements IDataProcessService {
lastMinuteValue = new BigDecimal(String.valueOf(currentDayInfo.getValue())); lastMinuteValue = new BigDecimal(String.valueOf(currentDayInfo.getValue()));
} }
} }
if (lastMinuteValue != null && currentValue.compareTo(lastMinuteValue) >= 0) { if (lastMinuteValue != null) {
incrementMinute = currentValue.subtract(lastMinuteValue).doubleValue(); incrementMinute = currentValue.subtract(lastMinuteValue).doubleValue();
} }
@ -854,7 +896,7 @@ public class DataProcessServiceImpl implements IDataProcessService {
private void handleDashboardAlert(DynamodbEntity baseTransDataEntity) { private void handleDashboardAlert(DynamodbEntity baseTransDataEntity) {
if (!ALL_DEVICE_TYPE_IDS.contains(baseTransDataEntity.getTypeId())) { if (!ALL_CATEGORY_ID.contains(baseTransDataEntity.getCategoryId())) {
return; return;
} }
@ -873,7 +915,7 @@ public class DataProcessServiceImpl implements IDataProcessService {
} }
//告警历史处理 //告警历史处理
if (alarmTypeIds.contains(baseTransDataEntity.getTypeId())) { if (categoryIdAlarm.contains(baseTransDataEntity.getCategoryId())) {
String status = baseTransDataEntity.getStatus(); String status = baseTransDataEntity.getStatus();
if (null == redisOldStatusObj) { if (null == redisOldStatusObj) {
if ("alert".equals(status)) { if ("alert".equals(status)) {

12
src/main/resources/application-dev.properties

@ -98,6 +98,18 @@ category.accumulate.deviceTypeIds=48,112,122
category.status.deviceTypeIds=86,113,123 category.status.deviceTypeIds=86,113,123
# 温湿度设备类型ID # 温湿度设备类型ID
category.temperature-humidity.deviceTypeIds=888888 category.temperature-humidity.deviceTypeIds=888888
category.co2-temperature-humidity.deviceTypeIds=888888
# 报警类设备类型ID
category.id.alarm=1001
# 计测类设备类型ID
category.id.measure=1003
# 累积类设备类型ID
category.id.accumulate=1002
# 状态类设备类型ID
category.id.status=1004
data.operation.batch-size=${dataOperationBatchSize:100} data.operation.batch-size=${dataOperationBatchSize:100}

12
src/main/resources/application-prd.properties

@ -92,6 +92,18 @@ category.accumulate.deviceTypeIds=48,112,122
category.status.deviceTypeIds=86,113,123 category.status.deviceTypeIds=86,113,123
# 温湿度设备类型ID # 温湿度设备类型ID
category.temperature-humidity.deviceTypeIds=888888 category.temperature-humidity.deviceTypeIds=888888
category.co2-temperature-humidity.deviceTypeIds=888888
# 报警类设备类型ID
category.id.alarm=1001
# 计测类设备类型ID
category.id.measure=1003
# 累积类设备类型ID
category.id.accumulate=1002
# 状态类设备类型ID
category.id.status=1004
data.operation.batch-size=${dataOperationBatchSize:100} data.operation.batch-size=${dataOperationBatchSize:100}

Loading…
Cancel
Save