From 6bca0c5bde63b2dc333538b6515a23dc960e0b36 Mon Sep 17 00:00:00 2001 From: "review512jwy@163.com" <“review512jwy@163.com”> Date: Thu, 18 Dec 2025 15:01:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=84=E7=90=86=E5=A4=9A=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E8=AE=BE=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sender/constants/DeviceAttrCode.java | 2 + .../service/impl/DataProcessServiceImpl.java | 44 +++++++++++++------ src/main/resources/application-dev.properties | 1 + src/main/resources/application-prd.properties | 1 + 4 files changed, 35 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/techsor/datacenter/sender/constants/DeviceAttrCode.java b/src/main/java/com/techsor/datacenter/sender/constants/DeviceAttrCode.java index afcb236..92f309d 100644 --- a/src/main/java/com/techsor/datacenter/sender/constants/DeviceAttrCode.java +++ b/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_CO2 = "co2"; + } diff --git a/src/main/java/com/techsor/datacenter/sender/service/impl/DataProcessServiceImpl.java b/src/main/java/com/techsor/datacenter/sender/service/impl/DataProcessServiceImpl.java index 620f846..3939de2 100644 --- a/src/main/java/com/techsor/datacenter/sender/service/impl/DataProcessServiceImpl.java +++ b/src/main/java/com/techsor/datacenter/sender/service/impl/DataProcessServiceImpl.java @@ -108,6 +108,9 @@ public class DataProcessServiceImpl implements IDataProcessService { // @Value("${category.temperature-humidity.deviceTypeIds}") private List temperatureHumidityTypeIds; + + @Value("${category.co2-temperature-humidity.deviceTypeIds}") + private List co2TemperatureHumidityTypeIds; // // // 所有设备类型ID集合 // public static final List ALL_DEVICE_TYPE_IDS = new ArrayList<>(); @@ -700,16 +703,17 @@ public class DataProcessServiceImpl implements IDataProcessService { if (CollectionUtil.isEmpty(uploadValueList)) { return; } - if (temperatureHumidityTypeIds.contains(baseTransDataEntity.getTypeId())) { - for (int i = 0; i < uploadValueList.size(); i++) { - String uploadValue = uploadValueList.get(i); - //温湿度的rawdata,一定是温度在前,湿度在后 - if (0 == i) { - storageMeasure(DeviceAttrCode.MEASURE_TEMPERATURE, uploadValue, baseTransDataEntity); - } else if (1 == i) { - storageMeasure(DeviceAttrCode.MEASURE_HUMIDITY, uploadValue, baseTransDataEntity); - } - } + if (co2TemperatureHumidityTypeIds.contains(baseTransDataEntity.getTypeId())) { + // CO2、温度、湿度(顺序固定) + handleMultiMeasure(uploadValueList, baseTransDataEntity, + DeviceAttrCode.MEASURE_CO2, + DeviceAttrCode.MEASURE_TEMPERATURE, + DeviceAttrCode.MEASURE_HUMIDITY); + } else if (temperatureHumidityTypeIds.contains(baseTransDataEntity.getTypeId())) { + // 温度、湿度 + handleMultiMeasure(uploadValueList, baseTransDataEntity, + DeviceAttrCode.MEASURE_TEMPERATURE, + DeviceAttrCode.MEASURE_HUMIDITY); } else { String uploadValue = uploadValueList.get(0);//这里只取第一个元素 if (baseTransDataEntity.getDeviceId().endsWith("_85")){ @@ -723,6 +727,16 @@ public class DataProcessServiceImpl implements IDataProcessService { } } + private void handleMultiMeasure(List 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 { BigDecimal currentValue = new BigDecimal(uploadValue); BigDecimal minValue = currentValue; @@ -733,8 +747,8 @@ public class DataProcessServiceImpl implements IDataProcessService { // 获取 Redis 数据 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()); @@ -781,6 +795,10 @@ public class DataProcessServiceImpl implements IDataProcessService { // 获取 Redis 数据 String currentDayKey = Constants.STATISTICS_ACCUMULATE_LATEST_PREFIX + complexTime.getDateKey(); 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 lastDayInfoObj = this.redisTemplate.opsForHash().get(lastDayKey, baseTransDataEntity.getDeviceId()); @@ -812,7 +830,7 @@ public class DataProcessServiceImpl implements IDataProcessService { lastMinuteValue = new BigDecimal(String.valueOf(currentDayInfo.getValue())); } } - if (lastMinuteValue != null && currentValue.compareTo(lastMinuteValue) >= 0) { + if (lastMinuteValue != null) { incrementMinute = currentValue.subtract(lastMinuteValue).doubleValue(); } diff --git a/src/main/resources/application-dev.properties b/src/main/resources/application-dev.properties index ad9cee6..82dfb33 100644 --- a/src/main/resources/application-dev.properties +++ b/src/main/resources/application-dev.properties @@ -98,6 +98,7 @@ category.accumulate.deviceTypeIds=48,112,122 category.status.deviceTypeIds=86,113,123 # 温湿度设备类型ID category.temperature-humidity.deviceTypeIds=888888 +category.co2-temperature-humidity.deviceTypeIds=888888 # 报警类设备类型ID diff --git a/src/main/resources/application-prd.properties b/src/main/resources/application-prd.properties index 5bd94c4..65a6bfe 100644 --- a/src/main/resources/application-prd.properties +++ b/src/main/resources/application-prd.properties @@ -92,6 +92,7 @@ category.accumulate.deviceTypeIds=48,112,122 category.status.deviceTypeIds=86,113,123 # 温湿度设备类型ID category.temperature-humidity.deviceTypeIds=888888 +category.co2-temperature-humidity.deviceTypeIds=888888 # 报警类设备类型ID