From e25eae94e5dba31d84daa1e240208500a2a8a278 Mon Sep 17 00:00:00 2001 From: mh Date: Tue, 15 Apr 2025 19:12:12 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E8=83=BD=E8=80=97=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/domain/dto/ProProfileDTO.java | 16 +-- .../domain/vo/CollectionParamsManageVO.java | 8 ++ .../com/mh/common/core/page/TableSupport.java | 4 + .../common/model/request/AdvantechDatas.java | 4 +- .../java/com/mh/common/utils/PageUtils.java | 2 +- .../dealdata/impl/DataProcessServiceImpl.java | 23 +-- .../java/com/mh/quartz/task/DealDataTask.java | 26 ++-- .../mapper/device/DataProcessMapper.java | 12 +- .../mapper/energy/EnergyAnalyzeMapper.java | 7 +- .../mh/system/mapper/energy/EnergyMapper.java | 6 +- .../mapper/energy/EnergyQueryMapper.java | 6 +- .../CollectionParamsManageServiceImpl.java | 4 + .../impl/CoolingSystemMonitorServiceImpl.java | 4 +- .../energy/impl/EnergyServiceImpl.java | 74 ++++++---- .../overview/impl/ProOverviewServiceImpl.java | 131 +++++++++--------- .../resources/mapper/system/EnergyMapper.xml | 40 ++++-- 16 files changed, 208 insertions(+), 159 deletions(-) diff --git a/mh-common/src/main/java/com/mh/common/core/domain/dto/ProProfileDTO.java b/mh-common/src/main/java/com/mh/common/core/domain/dto/ProProfileDTO.java index 4e146aa..4f5d9d6 100644 --- a/mh-common/src/main/java/com/mh/common/core/domain/dto/ProProfileDTO.java +++ b/mh-common/src/main/java/com/mh/common/core/domain/dto/ProProfileDTO.java @@ -61,14 +61,14 @@ public class ProProfileDTO { } public ProProfileDTO(BigDecimal totalEle, BigDecimal totalCold, BigDecimal totalWater, BigDecimal totalGas, BigDecimal yearEle, BigDecimal yearCold, BigDecimal yearWater, BigDecimal yearGas) { - this.totalEle = totalEle.setScale(2, BigDecimal.ROUND_HALF_UP); - this.totalCold = totalCold.setScale(2, BigDecimal.ROUND_HALF_UP); - this.totalWater = totalWater.setScale(2, BigDecimal.ROUND_HALF_UP); - this.totalGas = totalGas.setScale(2, BigDecimal.ROUND_HALF_UP); - this.yearEle = yearEle.setScale(2, BigDecimal.ROUND_HALF_UP); - this.yearCold = yearCold.setScale(2, BigDecimal.ROUND_HALF_UP); - this.yearWater = yearWater.setScale(2, BigDecimal.ROUND_HALF_UP); - this.yearGas = yearGas.setScale(2, BigDecimal.ROUND_HALF_UP); + this.totalEle = totalEle == null ? new BigDecimal("0") : totalEle.setScale(2, BigDecimal.ROUND_HALF_UP); + this.totalCold = totalCold == null ? new BigDecimal("0") : totalCold.setScale(2, BigDecimal.ROUND_HALF_UP); + this.totalWater = totalWater == null ? new BigDecimal("0") : totalWater.setScale(2, BigDecimal.ROUND_HALF_UP); + this.totalGas = totalGas == null ? new BigDecimal("0") : totalGas.setScale(2, BigDecimal.ROUND_HALF_UP); + this.yearEle = yearEle == null ? new BigDecimal("0") : yearEle.setScale(2, BigDecimal.ROUND_HALF_UP); + this.yearCold = yearCold == null ? new BigDecimal("0") : yearCold.setScale(2, BigDecimal.ROUND_HALF_UP); + this.yearWater = yearWater == null ? new BigDecimal("0") : yearWater.setScale(2, BigDecimal.ROUND_HALF_UP); + this.yearGas = yearGas == null ? new BigDecimal("0") : yearGas.setScale(2, BigDecimal.ROUND_HALF_UP); } @Override diff --git a/mh-common/src/main/java/com/mh/common/core/domain/vo/CollectionParamsManageVO.java b/mh-common/src/main/java/com/mh/common/core/domain/vo/CollectionParamsManageVO.java index 9730235..9a54c2f 100644 --- a/mh-common/src/main/java/com/mh/common/core/domain/vo/CollectionParamsManageVO.java +++ b/mh-common/src/main/java/com/mh/common/core/domain/vo/CollectionParamsManageVO.java @@ -44,6 +44,14 @@ public class CollectionParamsManageVO { */ private int cpmOrderNum; + public BigDecimal getCurValue() { + return curValue; + } + + public void setCurValue(BigDecimal curValue) { + this.curValue = curValue.setScale(1, BigDecimal.ROUND_HALF_UP); + } + @Override public String toString() { return new ToStringBuilder(this) diff --git a/mh-common/src/main/java/com/mh/common/core/page/TableSupport.java b/mh-common/src/main/java/com/mh/common/core/page/TableSupport.java index a723d44..9765164 100644 --- a/mh-common/src/main/java/com/mh/common/core/page/TableSupport.java +++ b/mh-common/src/main/java/com/mh/common/core/page/TableSupport.java @@ -41,6 +41,10 @@ public class TableSupport public static PageDomain getPageDomain() { PageDomain pageDomain = new PageDomain(); + if ((null == Convert.toInt(ServletUtils.getParameter(PAGE_NUM))) + || (null == Convert.toInt(ServletUtils.getParameter(PAGE_SIZE)))) { + return pageDomain; + } pageDomain.setPageNum(Convert.toInt(ServletUtils.getParameter(PAGE_NUM), 1)); pageDomain.setPageSize(Convert.toInt(ServletUtils.getParameter(PAGE_SIZE), 10)); pageDomain.setOrderByColumn(ServletUtils.getParameter(ORDER_BY_COLUMN)); diff --git a/mh-common/src/main/java/com/mh/common/model/request/AdvantechDatas.java b/mh-common/src/main/java/com/mh/common/model/request/AdvantechDatas.java index 48b82a4..987525b 100644 --- a/mh-common/src/main/java/com/mh/common/model/request/AdvantechDatas.java +++ b/mh-common/src/main/java/com/mh/common/model/request/AdvantechDatas.java @@ -10,7 +10,7 @@ import lombok.Data; * @date 2025-01-22 14:47:25 */ @Data -public class AdvantechDatas { +public class AdvantechDatas { /** * 对应研华的标签值 @@ -20,6 +20,6 @@ public class AdvantechDatas { /** * 上报值 */ - private Integer value; + private T value; } diff --git a/mh-common/src/main/java/com/mh/common/utils/PageUtils.java b/mh-common/src/main/java/com/mh/common/utils/PageUtils.java index ffbe485..f0451e6 100644 --- a/mh-common/src/main/java/com/mh/common/utils/PageUtils.java +++ b/mh-common/src/main/java/com/mh/common/utils/PageUtils.java @@ -19,7 +19,7 @@ public class PageUtils extends PageHelper { PageDomain pageDomain = TableSupport.buildPageRequest(); Integer pageNum = pageDomain.getPageNum(); - if (pageNum == 0) { + if (null == pageNum || pageNum == 0) { return; } Integer pageSize = pageDomain.getPageSize(); diff --git a/mh-framework/src/main/java/com/mh/framework/dealdata/impl/DataProcessServiceImpl.java b/mh-framework/src/main/java/com/mh/framework/dealdata/impl/DataProcessServiceImpl.java index b9a95cd..55e979d 100644 --- a/mh-framework/src/main/java/com/mh/framework/dealdata/impl/DataProcessServiceImpl.java +++ b/mh-framework/src/main/java/com/mh/framework/dealdata/impl/DataProcessServiceImpl.java @@ -21,10 +21,7 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; -import java.time.LocalDateTime; -import java.time.LocalTime; -import java.time.OffsetDateTime; -import java.time.ZoneId; +import java.time.*; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; import java.util.*; @@ -95,16 +92,22 @@ public class DataProcessServiceImpl implements DataProcessService { } String timeString = data.getTs(); - OffsetDateTime offsetDateTime; + OffsetDateTime utcDateTime; try { - offsetDateTime = OffsetDateTime.parse(timeString, DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ")); + utcDateTime = OffsetDateTime.parse(timeString, DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ")); } catch (DateTimeParseException e) { log.error("时间格式解析异常", e); return; } - LocalDateTime localDateTime = offsetDateTime.toLocalDateTime(); - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - String formattedTime = localDateTime.format(formatter); + // 2. 转换为中国时区(UTC+8) + OffsetDateTime chinaDateTime = utcDateTime.withOffsetSameInstant( + ZoneOffset.ofHours(8) + ); + + // 3. 格式化为目标字符串 + String formattedTime = chinaDateTime.format( + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") + ); // 假设 data 是一个包含 JSON 数据的对象 List list = JSON.parseObject(data.getD().toString(), new TypeReference>() {}); @@ -126,7 +129,7 @@ public class DataProcessServiceImpl implements DataProcessService { log.error("数值格式解析异常", e); continue; } - Date date = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); + Date date = DateUtils.stringToDate(formattedTime, "yyyy-MM-dd HH:mm:ss"); collectionParamsManage.setCurTime(date); entities.add(collectionParamsManage); break; diff --git a/mh-quartz/src/main/java/com/mh/quartz/task/DealDataTask.java b/mh-quartz/src/main/java/com/mh/quartz/task/DealDataTask.java index b5e63ab..63fe885 100644 --- a/mh-quartz/src/main/java/com/mh/quartz/task/DealDataTask.java +++ b/mh-quartz/src/main/java/com/mh/quartz/task/DealDataTask.java @@ -70,11 +70,19 @@ public class DealDataTask { for (Map.Entry> entry : groupMap.entrySet()) { String mtType = entry.getKey(); List dataList = entry.getValue(); - // 进行数据处理入库操作等 - try { - dealAndInsert(dataList, mtType); - } catch (Exception e) { - throw new RuntimeException(e); + // 再根据mtNum分组 + Map> groupMap1 = dataList + .stream() + .collect(Collectors.groupingBy(CollectionParamsManage::getMtNum)); + // 开始进行数据遍历 + for (Map.Entry> entry1 : groupMap1.entrySet()) { + List dataList1 = entry1.getValue(); + // 进行数据处理入库操作等 + try { + dealAndInsert(dataList1, mtType); + } catch (Exception e) { + log.error("处理主机参数异常:{}", e); + } } } } @@ -101,7 +109,8 @@ public class DealDataTask { int deviceGrade = entity.getGrade(); //从数据库取值,当前的年表,当前年表没有,查询上一次年表 DeviceReport lastData = dataProcessService.queryLastValue(entity.getMtNum(), "min"); - int ratio = dataProcessService.queryRatio(entity.getMtNum()) == null ? 1 : dataProcessService.queryRatio(entity.getMtNum()); +// int ratio = dataProcessService.queryRatio(entity.getMtNum()) == null ? 1 : dataProcessService.queryRatio(entity.getMtNum()); + int ratio = entity.getMtRatio(); if (ObjectUtils.isEmpty(lastData) || ObjectUtils.isEmpty(lastData.getLastValue())) { //从device_manage取出初始值 String initValue = dataProcessService.queryInitValue(entity.getMtNum()); @@ -270,11 +279,12 @@ public class DealDataTask { return; } dataProcessService.batchInsertOrUpdate(hourList, "hour"); + //TODO 修改分钟表的状态,grade=1 + dataProcessService.batchUpdateGrade(idMap, "min"); } catch (Exception e) { log.error("小时数据表处理异常:" + e); } - //TODO 修改分钟表的状态,grade=1 - dataProcessService.batchUpdateGrade(idMap, "min"); + } /** diff --git a/mh-system/src/main/java/com/mh/system/mapper/device/DataProcessMapper.java b/mh-system/src/main/java/com/mh/system/mapper/device/DataProcessMapper.java index 5d90248..63bfe4e 100644 --- a/mh-system/src/main/java/com/mh/system/mapper/device/DataProcessMapper.java +++ b/mh-system/src/main/java/com/mh/system/mapper/device/DataProcessMapper.java @@ -131,19 +131,19 @@ public interface DataProcessMapper { " 0)") void insertTable(@Param("data") DeviceReport data, @Param("tableName") String tableName); - @Update("update ${tableName} set cur_time = #{data.curTime},cur_value = #{data.curValue},calc_value = (#{data.curValue} - last_value)*ratio,used_value = #{data.curValue} - last_value " + + @Update("update ${tableName} set cur_time = #{data.curTime},cur_value = #{data.curValue}::numeric,calc_value = (#{data.curValue}::numeric - last_value)*ratio,used_value = #{data.curValue}::numeric - last_value " + "where device_num = #{data.deviceNum} and EXTRACT(MONTH FROM AGE(cur_time, #{data.curTime})) = 0 ") void updateTableMM(@Param("data") DeviceReport data, @Param("tableName") String tableName); - @Update("update ${tableName} set cur_time = #{data.curTime},cur_value = #{data.curValue},calc_value = (#{data.curValue} - last_value)*ratio,used_value = #{data.curValue} - last_value " + + @Update("update ${tableName} set cur_time = #{data.curTime},cur_value = #{data.curValue}::numeric,calc_value = (#{data.curValue}::numeric - last_value)*ratio,used_value = #{data.curValue}::numeric - last_value " + "where device_num = #{data.deviceNum} and EXTRACT(YEAR FROM AGE(cur_time, #{data.curTime})) = 0 ") void updateTableYY(@Param("data") DeviceReport data, @Param("tableName") String tableName); - @Update("update ${tableName} set cur_time = #{data.curTime},cur_value = #{data.curValue},calc_value = (#{data.curValue} - last_value)*ratio,used_value = #{data.curValue} - last_value " + + @Update("update ${tableName} set cur_time = #{data.curTime},cur_value = #{data.curValue}::numeric,calc_value = (#{data.curValue}::numeric - last_value)*ratio,used_value = #{data.curValue}::numeric - last_value " + "where device_num = #{data.deviceNum} and EXTRACT(DAY FROM AGE(cur_time, #{data.curTime})) = 0 ") void updateTableDD(@Param("data") DeviceReport data, @Param("tableName") String tableName); - @Update("update ${tableName} set cur_time = #{data.curTime},cur_value = #{data.curValue},calc_value = (#{data.curValue} - last_value)*ratio,used_value = #{data.curValue} - last_value " + + @Update("update ${tableName} set cur_time = #{data.curTime},cur_value = #{data.curValue}::numeric,calc_value = (#{data.curValue}::numeric - last_value)*ratio,used_value = #{data.curValue}::numeric - last_value " + "where device_num = #{data.deviceNum} and EXTRACT(HOUR FROM AGE(cur_time, #{data.curTime})) = 0 ") void updateTableHH(@Param("data") DeviceReport data, @Param("tableName") String tableName); @@ -169,8 +169,8 @@ public interface DataProcessMapper { * @param deviceNum * @return */ - @Select("select mt_init_value from collection_params_manage where mt_num = #{deviceNum}") - String queryInitValue(String deviceNum); + @Select("select mt_init_value from collection_params_manage where mt_num = #{deviceNum} and is_use = '0'") + String queryInitValue(@Param("deviceNum") String deviceNum); @Select("select * from ${tableName} where register_id = #{registerId} and cur_time >= CURRENT_TIMESTAMP - INTERVAL '24 hours' ") List selectLineDataByCodeAndRegisterAddr(@Param("tableName") String tableName, diff --git a/mh-system/src/main/java/com/mh/system/mapper/energy/EnergyAnalyzeMapper.java b/mh-system/src/main/java/com/mh/system/mapper/energy/EnergyAnalyzeMapper.java index ff22ea8..83544b4 100644 --- a/mh-system/src/main/java/com/mh/system/mapper/energy/EnergyAnalyzeMapper.java +++ b/mh-system/src/main/java/com/mh/system/mapper/energy/EnergyAnalyzeMapper.java @@ -108,7 +108,6 @@ public interface EnergyAnalyzeMapper { " on " + " cpm.mt_num = dm.device_num " + " and cpm.mt_code = dm.device_code " + - " and cpm.register_addr = dm.register_addr " + "join device_ledger dl " + " on " + " cpm.device_ledger_id = dl.id " + @@ -153,7 +152,7 @@ public interface EnergyAnalyzeMapper { "WHERE " + " dh.cur_time >= #{startTime}::timestamp " + " AND dh.cur_time <= #{endTime}::timestamp " + - " AND dh.device_num IN " + + " AND dm.id IN " + " " + " #{item} " + " " + @@ -203,7 +202,7 @@ public interface EnergyAnalyzeMapper { "WHERE " + " dh.cur_time >= #{startTime}::timestamp " + " AND dh.cur_time <= #{endTime}::timestamp " + - " AND dh.device_num IN " + + " AND dm.id IN " + " " + " #{item} " + " " + @@ -244,7 +243,7 @@ public interface EnergyAnalyzeMapper { "WHERE " + " dh.cur_time >= #{startTime}::timestamp " + " AND dh.cur_time <= #{endTime}::timestamp " + - " AND dh.device_num IN " + + " AND dm.id IN " + " " + " #{item} " + " " + diff --git a/mh-system/src/main/java/com/mh/system/mapper/energy/EnergyMapper.java b/mh-system/src/main/java/com/mh/system/mapper/energy/EnergyMapper.java index 8fa8950..babcaa0 100644 --- a/mh-system/src/main/java/com/mh/system/mapper/energy/EnergyMapper.java +++ b/mh-system/src/main/java/com/mh/system/mapper/energy/EnergyMapper.java @@ -30,7 +30,7 @@ public interface EnergyMapper { " sum(dm.calc_value) as curValue, " + " CASE dm.device_type " + " WHEN '5' THEN 'meter' " + - " WHEN '6' THEN 'cloud' " + + " WHEN '2' THEN 'cloud' " + " ELSE 'Unknown' " + " END as deviceType," + " TO_CHAR(dm.cur_time, " + @@ -81,7 +81,7 @@ public interface EnergyMapper { " sum(dm.calc_value) as curValue, " + " CASE dm.device_type " + " WHEN '5' THEN 'meter' " + - " WHEN '6' THEN 'cloud' " + + " WHEN '2' THEN 'cloud' " + " ELSE 'Unknown' " + " END as deviceType," + " TO_CHAR(dm.cur_time, " + @@ -149,7 +149,7 @@ public interface EnergyMapper { " sum(dm.calc_value) as curValue, " + " CASE dm.device_type " + " WHEN '5' THEN 'meter' " + - " WHEN '6' THEN 'cloud' " + + " WHEN '2' THEN 'cloud' " + " ELSE 'Unknown' " + " END as deviceType," + " TO_CHAR(dm.cur_time, " + diff --git a/mh-system/src/main/java/com/mh/system/mapper/energy/EnergyQueryMapper.java b/mh-system/src/main/java/com/mh/system/mapper/energy/EnergyQueryMapper.java index 6955b5a..888853d 100644 --- a/mh-system/src/main/java/com/mh/system/mapper/energy/EnergyQueryMapper.java +++ b/mh-system/src/main/java/com/mh/system/mapper/energy/EnergyQueryMapper.java @@ -30,7 +30,7 @@ public interface EnergyQueryMapper { " sum(dm.calc_value) as curValue, " + " CASE dm.device_type " + " WHEN '5' THEN 'meter' " + - " WHEN '6' THEN 'cloud' " + + " WHEN '2' THEN 'cloud' " + " ELSE 'Unknown' " + " END as deviceType," + " TO_CHAR(dm.cur_time, " + @@ -81,7 +81,7 @@ public interface EnergyQueryMapper { " sum(dm.calc_value) as curValue, " + " CASE dm.device_type " + " WHEN '5' THEN 'meter' " + - " WHEN '6' THEN 'cloud' " + + " WHEN '2' THEN 'cloud' " + " ELSE 'Unknown' " + " END as deviceType," + " TO_CHAR(dm.cur_time, " + @@ -151,7 +151,7 @@ public interface EnergyQueryMapper { " sum(dm.calc_value) as curValue, " + " CASE dm.device_type " + " WHEN '5' THEN 'meter' " + - " WHEN '6' THEN 'cloud' " + + " WHEN '2' THEN 'cloud' " + " ELSE 'Unknown' " + " END as deviceType," + " TO_CHAR(dm.cur_time, " + diff --git a/mh-system/src/main/java/com/mh/system/service/device/impl/CollectionParamsManageServiceImpl.java b/mh-system/src/main/java/com/mh/system/service/device/impl/CollectionParamsManageServiceImpl.java index 27a42f7..8d0a3df 100644 --- a/mh-system/src/main/java/com/mh/system/service/device/impl/CollectionParamsManageServiceImpl.java +++ b/mh-system/src/main/java/com/mh/system/service/device/impl/CollectionParamsManageServiceImpl.java @@ -58,6 +58,10 @@ public class CollectionParamsManageServiceImpl implements ICollectionParamsManag return List.of(); } QueryWrapper queryWrapper = new QueryWrapper<>(); + // 是否启用 + if (communicationParams.getIsUse() != null) { + queryWrapper.eq("is_use", communicationParams.getIsUse()); + } // 仪表类型 if (communicationParams.getMtType() != null) { queryWrapper.eq("mt_type", communicationParams.getMtType()); diff --git a/mh-system/src/main/java/com/mh/system/service/device/impl/CoolingSystemMonitorServiceImpl.java b/mh-system/src/main/java/com/mh/system/service/device/impl/CoolingSystemMonitorServiceImpl.java index ce87044..bdb955f 100644 --- a/mh-system/src/main/java/com/mh/system/service/device/impl/CoolingSystemMonitorServiceImpl.java +++ b/mh-system/src/main/java/com/mh/system/service/device/impl/CoolingSystemMonitorServiceImpl.java @@ -68,7 +68,7 @@ public class CoolingSystemMonitorServiceImpl implements ICoolingSystemMonitorSer // 如果是当天值,判断grade,40:累计值,140:瞬时值 if (value.getGrade() == 40) { // 累计值 - sysPerformanceDTO.setYearPower(value.getCurValue()); + sysPerformanceDTO.setYearPower(value.getCurValue().subtract(value.getMtInitValue())); } else if (value.getGrade() == 140) { // 瞬时值 sysPerformanceDTO.setRealPower(value.getCurValue()); @@ -91,7 +91,7 @@ public class CoolingSystemMonitorServiceImpl implements ICoolingSystemMonitorSer // 如果是当天值,判断grade,40:累计值,140:瞬时值 if (value.getGrade() == 40) { // 累计值 - sysPerformanceDTO.setYearCold(value.getCurValue()); + sysPerformanceDTO.setYearCold(value.getCurValue().subtract(value.getMtInitValue())); } else if (value.getGrade() == 140) { // 瞬时值 sysPerformanceDTO.setRealCold(value.getCurValue()); diff --git a/mh-system/src/main/java/com/mh/system/service/energy/impl/EnergyServiceImpl.java b/mh-system/src/main/java/com/mh/system/service/energy/impl/EnergyServiceImpl.java index 9dd6b75..4422bd5 100644 --- a/mh-system/src/main/java/com/mh/system/service/energy/impl/EnergyServiceImpl.java +++ b/mh-system/src/main/java/com/mh/system/service/energy/impl/EnergyServiceImpl.java @@ -7,6 +7,7 @@ import com.mh.common.core.domain.vo.EnergyConsumptionVO; import com.mh.common.utils.DateUtils; import com.mh.common.utils.EnergyThreadPoolService; import com.mh.common.utils.StringUtils; +import com.mh.common.utils.bean.BeanUtils; import com.mh.system.mapper.energy.EnergyMapper; import com.mh.system.service.energy.IEnergyService; import jakarta.annotation.Resource; @@ -351,7 +352,7 @@ public class EnergyServiceImpl implements IEnergyService { String deviceType = vo.getParamType(); if ("meter".equals(deviceType)) { deviceType = "5"; - } else if ("cold".equals(deviceType)){ + } else if ("cloud".equals(deviceType)) { deviceType = "6"; } if ("cop".equalsIgnoreCase(vo.getParamType())) { @@ -391,7 +392,7 @@ public class EnergyServiceImpl implements IEnergyService { consumptionAnalyzeEntities = energyMapper.queryOneTableYoy(vo.getStartTime(), vo.getEndTime(), lastTableName, curTableName, startTime, endTime, getTimeLen(vo.getTimeType()), deviceType, vo.getTimeType(), vo.getSystemType()); } - return getConsumptionDTOHttpResult(consumptionAnalyzeEntities, "yoy"); + return getConsumptionDTOHttpResult(consumptionAnalyzeEntities, "yoy", getTimeLen(vo.getTimeType())); } private AjaxResult calcCopYoyData(EnergyConsumptionVO vo) { @@ -410,46 +411,48 @@ public class EnergyServiceImpl implements IEnergyService { return AjaxResult.error(); } // 计算COP值 - return getEnergyConsumptionDTOHttpResult(meterEnergyData, cloudEnergyData); + return getEnergyConsumptionDTOHttpResult(meterEnergyData, cloudEnergyData, "yoy"); } - private static AjaxResult getEnergyConsumptionDTOHttpResult(EnergyConsumptionDTO meterEnergyData, EnergyConsumptionDTO cloudEnergyData) { + private static AjaxResult getEnergyConsumptionDTOHttpResult(EnergyConsumptionDTO meterEnergyData, EnergyConsumptionDTO cloudEnergyData, String type) { // 计算COP值 EnergyConsumptionDTO energyConsumptionDTO = new EnergyConsumptionDTO(); // // 获取冷量数据 List> cloudListData = cloudEnergyData.getData(); - String[] cloudCurData = new String[cloudListData.size()]; - String[] cloudLastData = new String[cloudListData.size()]; + String[] curStr = (String[]) cloudListData.getFirst().get("curValue"); + String[] cloudCurData = new String[curStr.length]; + String[] cloudLastData = new String[curStr.length]; for (Map cloudListDatum : cloudListData) { if (cloudListDatum.get("curValue") != null) { cloudCurData = (String[]) cloudListDatum.get("curValue"); if (cloudCurData == null) { - cloudCurData = new String[cloudListData.size()]; + cloudCurData = new String[curStr.length]; } } if (cloudListDatum.get("lastValue") != null) { cloudLastData = (String[]) cloudListDatum.get("curValue"); if (cloudLastData == null) { - cloudLastData = new String[cloudListData.size()]; + cloudLastData = new String[curStr.length]; } } } // 获取电量数据 List> meterListData = meterEnergyData.getData(); - String[] meterCurData = new String[meterListData.size()]; - String[] meterLastData = new String[meterListData.size()]; + String[] meterCurStr = (String[]) meterListData.getFirst().get("curValue"); + String[] meterCurData = new String[meterCurStr.length]; + String[] meterLastData = new String[meterCurStr.length]; for (Map meterListDatum : meterListData) { if (meterListDatum.get("curValue") != null) { meterCurData = (String[]) meterListDatum.get("curValue"); if (meterCurData == null) { - meterCurData = new String[meterListData.size()]; + meterCurData = new String[meterCurStr.length]; } } if (meterListDatum.get("lastValue") != null) { meterLastData = (String[]) meterListDatum.get("curValue"); if (meterLastData == null) { - meterLastData = new String[meterListData.size()]; + meterLastData = new String[meterCurStr.length]; } } } @@ -523,13 +526,24 @@ public class EnergyServiceImpl implements IEnergyService { copLastMap[i] = lastCop; yoyMap[i] = yoy; } - energyConsumptionDTO.setData(Arrays.asList( - new HashMap() {{ - put("curValue", copMap); - put("lastValue", copLastMap); - put("yoy", yoyMap); - }} - )); +// energyConsumptionDTO.setData(Arrays.asList( +// new HashMap() {{ +// put("curValue", copMap); +// put("lastValue", copLastMap); +// put("yoy", yoyMap); +// }} +// )); + List> listData = new ArrayList<>(); + Map cur = new HashMap<>(); + cur.put("curValue",copMap); + listData.add(cur); + Map last = new HashMap<>(); + last.put("lastValue",copLastMap); + listData.add(last); + Map yoy = new HashMap<>(); + yoy.put(type,yoyMap); + listData.add(yoy); + energyConsumptionDTO.setData(listData); } return AjaxResult.success(energyConsumptionDTO); } @@ -543,7 +557,7 @@ public class EnergyServiceImpl implements IEnergyService { String deviceType = vo.getParamType(); if ("meter".equals(deviceType)) { deviceType = "5"; - } else if ("cold".equals(deviceType)){ + } else if ("cloud".equals(deviceType)){ deviceType = "6"; } // 判断查询时间类型是month,year @@ -575,26 +589,26 @@ public class EnergyServiceImpl implements IEnergyService { consumptionAnalyzeEntities = energyMapper.queryManyTableMom(vo.getStartTime(), vo.getEndTime(), startTime, endTime, tableName1, tableName2, getTimeLen(vo.getTimeType()), deviceType, vo.getTimeType(), vo.getSystemType()); } } - return getConsumptionDTOHttpResult(consumptionAnalyzeEntities, "mom"); + return getConsumptionDTOHttpResult(consumptionAnalyzeEntities, "mom", getTimeLen(vo.getTimeType())); } private AjaxResult calcCopMomData(EnergyConsumptionVO vo) { // 获取冷量读数 - vo.setParamType("cloud"); + vo.setParamType("6"); AjaxResult cloudData = mom(vo); EnergyConsumptionDTO cloudEnergyData = (EnergyConsumptionDTO) cloudData.get("data"); if (cloudEnergyData == null) { return AjaxResult.error(); } // 获取电量读数 - vo.setParamType("meter"); + vo.setParamType("5"); AjaxResult meterData = mom(vo); EnergyConsumptionDTO meterEnergyData = (EnergyConsumptionDTO) meterData.get("data"); if (meterEnergyData == null) { return AjaxResult.error(); } - return getEnergyConsumptionDTOHttpResult(meterEnergyData, cloudEnergyData); + return getEnergyConsumptionDTOHttpResult(meterEnergyData, cloudEnergyData, "mom"); } @Override @@ -605,13 +619,17 @@ public class EnergyServiceImpl implements IEnergyService { List>> futures = new ArrayList<>(); futures.add(executor.submit(() -> { Map map = new HashMap<>(); - map.put("yoy", yoy(vo)); + EnergyConsumptionVO vo1 = new EnergyConsumptionVO(); + BeanUtils.copyProperties(vo, vo1); + map.put("yoy", yoy(vo1)); latch.countDown(); return map; })); futures.add(executor.submit(() -> { Map map = new HashMap<>(); - map.put("mom", mom(vo)); + EnergyConsumptionVO vo1 = new EnergyConsumptionVO(); + BeanUtils.copyProperties(vo, vo1); + map.put("mom", mom(vo1)); latch.countDown(); return map; })); @@ -681,7 +699,7 @@ public class EnergyServiceImpl implements IEnergyService { return AjaxResult.success(null); } - private static AjaxResult getConsumptionDTOHttpResult(List consumptionAnalyzeEntities, String compareType) { + private static AjaxResult getConsumptionDTOHttpResult(List consumptionAnalyzeEntities, String compareType, String len) { EnergyConsumptionDTO energyConsumptionDTO = new EnergyConsumptionDTO(); if (null == consumptionAnalyzeEntities || consumptionAnalyzeEntities.size() == 0) { return AjaxResult.success(energyConsumptionDTO); @@ -701,7 +719,7 @@ public class EnergyServiceImpl implements IEnergyService { if ("mom".equalsIgnoreCase(compareType)) { yoyValue[i] = entity.getMom(); } - timeStrArr[i] = entity.getTimeStr(); + timeStrArr[i] = entity.getTimeStr().substring(0, Integer.parseInt(len)); } energyConsumptionDTO.setTitles(titleArr); energyConsumptionDTO.setTimes(timeStrArr); diff --git a/mh-system/src/main/java/com/mh/system/service/overview/impl/ProOverviewServiceImpl.java b/mh-system/src/main/java/com/mh/system/service/overview/impl/ProOverviewServiceImpl.java index 63e4c8b..f058306 100644 --- a/mh-system/src/main/java/com/mh/system/service/overview/impl/ProOverviewServiceImpl.java +++ b/mh-system/src/main/java/com/mh/system/service/overview/impl/ProOverviewServiceImpl.java @@ -55,7 +55,7 @@ public class ProOverviewServiceImpl implements IProOverviewService { case 0: // 查询冷源系统的EER // 查询实时功率 - List realEleParams = queryCollectionParams("16", "0", 140); + List realEleParams = queryCollectionParams("16", "0", 140, "15"); BigDecimal realEle = null; if (realEleParams != null && !realEleParams.isEmpty()) { realEle = realEleParams.stream() @@ -64,7 +64,7 @@ public class ProOverviewServiceImpl implements IProOverviewService { .reduce(BigDecimal.ZERO, BigDecimal::add); } // 查询冷源系统的产冷量 - List realColdParams = queryCollectionParams("17", "0", 140); + List realColdParams = queryCollectionParams("17", "0", 140, "15"); BigDecimal realCold = null; if (realColdParams != null && !realColdParams.isEmpty()) { // realColdParams stream流得出cur_value总和 @@ -91,7 +91,7 @@ public class ProOverviewServiceImpl implements IProOverviewService { case 1: // 热泵生活热水系统 // 查询供回水温度 - List realInAndOutTempParams = queryCollectionParams("12", "1", 140); + List realInAndOutTempParams = queryCollectionParams("12", "1", 140, null); BigDecimal avgInTemp = new BigDecimal("0.00"); BigDecimal avgOutTemp = new BigDecimal("0.00"); if (null != realInAndOutTempParams && !realInAndOutTempParams.isEmpty()) { @@ -124,7 +124,7 @@ public class ProOverviewServiceImpl implements IProOverviewService { case 2: // 空调风柜系统 // 查询风柜运行状态 - List windCabinetRunParams = queryCollectionParams("1", "2", 140); + List windCabinetRunParams = queryCollectionParams("1", "2", 140, null); if (windCabinetRunParams != null && !windCabinetRunParams.isEmpty()) { // 查询风柜正在运行设备,判断cur_value=1的 long runCount = windCabinetRunParams.stream().filter(param -> param != null @@ -144,7 +144,7 @@ public class ProOverviewServiceImpl implements IProOverviewService { break; case 4: // 室内温度监测系统 - List tempParams = queryCollectionParams("12", "4", 140); + List tempParams = queryCollectionParams("12", "4", 140, null); // stream流判断时间cur_time是否是今天,如果是今天则判断在线,不是则判断离线 if (tempParams != null && !tempParams.isEmpty()) { long onlineCount = tempParams.stream() @@ -189,7 +189,7 @@ public class ProOverviewServiceImpl implements IProOverviewService { for (SysDictData sysDictData : sysTypeData) { String sysType = sysDictData.getDictValue(); // 查询采集参数 - List collectionParamsManages = queryCollectionParams(paramType, sysType, 40); + List collectionParamsManages = queryCollectionParams(paramType, sysType, 40, null); // 合并数据 if (collectionParamsManages != null && !collectionParamsManages.isEmpty()) { List columnFilters = overviewMapper.energyAnalysis(collectionParamsManages); @@ -203,12 +203,16 @@ public class ProOverviewServiceImpl implements IProOverviewService { return result.isEmpty() ? List.of() : result; } - private List queryCollectionParams(String paramType, String sysType, int grade) { + private List queryCollectionParams(String paramType, String sysType, int grade, String terminalDeviceType) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("param_type", paramType) .eq("system_type", sysType) .eq("grade", grade); + if (terminalDeviceType != null && !terminalDeviceType.isEmpty()) { + queryWrapper.eq("terminal_device_type", terminalDeviceType); + } + // 先查询总表 queryWrapper.eq("mt_is_sum", 0); Long count = collectionParamsManageMapper.selectCount(queryWrapper); @@ -220,8 +224,10 @@ public class ProOverviewServiceImpl implements IProOverviewService { queryWrapper = new QueryWrapper<>(); queryWrapper.eq("param_type", paramType) .eq("system_type", sysType) - .eq("grade", grade) - .eq("mt_is_sum", 1); + .eq("grade", grade); + if (terminalDeviceType != null && !terminalDeviceType.isEmpty()) { + queryWrapper.eq("terminal_device_type", terminalDeviceType); + } return collectionParamsManageMapper.selectList(queryWrapper); } @@ -317,16 +323,10 @@ public class ProOverviewServiceImpl implements IProOverviewService { queryWrapper.eq("grade", 40); queryWrapper.eq("mt_is_sum", 0); Long count = collectionParamsManageMapper.selectCount(queryWrapper); + HashMap totalData = new HashMap<>(); if (count > 0) { // 查询总表 - getTotalData(paramType, queryWrapper, totalEle, - totalCold, - totalWater, - totalGas, - yearEle, - yearCold, - yearWater, - yearGas); + totalData = getTotalData(paramType, queryWrapper); } else { // 查询分表综合 queryWrapper = new QueryWrapper<>(); @@ -335,15 +335,29 @@ public class ProOverviewServiceImpl implements IProOverviewService { queryWrapper.eq("grade", 40); queryWrapper.eq("mt_is_sum", 1); // 查询分表总和 - getTotalData(paramType, queryWrapper, - totalEle, - totalCold, - totalWater, - totalGas, - yearEle, - yearCold, - yearWater, - yearGas); + totalData = getTotalData(paramType, queryWrapper); + } + BigDecimal totalValue = totalData.get("totalValue")==null ? BigDecimal.ZERO : totalData.get("totalValue"); + BigDecimal yearValue = totalData.get("yearValue")==null ? BigDecimal.ZERO : totalData.get("yearValue"); + switch (Integer.parseInt(paramType)) { + case 16: + totalEle = totalEle.add(totalValue); + yearEle = yearEle.add(yearValue); + break; + case 17: + totalCold = totalCold.add(totalValue); + yearCold = yearCold.add(yearValue); + break; + case 18: + totalWater = totalWater.add(totalValue); + yearWater = yearWater.add(yearValue); + break; + case 19: + totalGas = totalGas.add(totalValue); + yearGas = yearGas.add(yearValue); + break; + default: + break; } } @@ -354,17 +368,10 @@ public class ProOverviewServiceImpl implements IProOverviewService { return proProfileDTOS; } - private void getTotalData(String paramType, - QueryWrapper queryWrapper, - BigDecimal totalEle, - BigDecimal totalCold, - BigDecimal totalWater, - BigDecimal totalGas, - BigDecimal yearEle, - BigDecimal yearCold, - BigDecimal yearWater, - BigDecimal yearGas) { + private HashMap getTotalData(String paramType, + QueryWrapper queryWrapper) { List collectionParamsManages = collectionParamsManageMapper.selectList(queryWrapper); + HashMap result = new HashMap<>(); // 遍历计算得出总用电量 collectionParamsManages.forEach(collectionParamsManage -> { BigDecimal curValue = collectionParamsManage.getCurValue() == null ? BigDecimal.ZERO : collectionParamsManage.getCurValue(); @@ -372,42 +379,28 @@ public class ProOverviewServiceImpl implements IProOverviewService { BigDecimal mtRatio = collectionParamsManage.getMtRatio() == null ? BigDecimal.ZERO : BigDecimal.valueOf(collectionParamsManage.getMtRatio()); BigDecimal multiply = (curValue.subtract(mtInitValue)).multiply(mtRatio); // TODO - switch (Integer.parseInt(paramType)) { - case 16: - totalEle.add(multiply); - break; - case 17: - totalCold.add(multiply); - break; - case 18: - totalWater.add(multiply); - break; - case 19: - totalGas.add(multiply); - break; - default: - break; - } - + result.put("totalValue", multiply); }); // 计算得出今年的各个参数用量 BigDecimal yearValue = overviewMapper.queryByDeviceNum(collectionParamsManages); - switch (Integer.parseInt(paramType)) { - case 16: - yearEle = yearValue; - break; - case 17: - yearCold = yearValue; - break; - case 18: - yearWater = yearValue; - break; - case 19: - yearGas = yearValue; - break; - default: - break; - } + result.put("yearValue", yearValue == null ? BigDecimal.ZERO : yearValue); +// switch (Integer.parseInt(paramType)) { +// case 16: +// yearEle = yearValue; +// break; +// case 17: +// yearCold = yearValue; +// break; +// case 18: +// yearWater = yearValue; +// break; +// case 19: +// yearGas = yearValue; +// break; +// default: +// break; +// } + return result; } diff --git a/mh-system/src/main/resources/mapper/system/EnergyMapper.xml b/mh-system/src/main/resources/mapper/system/EnergyMapper.xml index f5a5a4e..a20a0fe 100644 --- a/mh-system/src/main/resources/mapper/system/EnergyMapper.xml +++ b/mh-system/src/main/resources/mapper/system/EnergyMapper.xml @@ -701,9 +701,9 @@ where dm.cur_time >= #{startTime}::timestamp and dm.cur_time <= #{endTime}::timestamp - and dm.device_type in( + and dm.device_num in( select - cpm.mt_type + cpm.mt_num from collection_params_manage cpm join @@ -713,8 +713,10 @@ where dl.device_type = '5' and cpm.terminal_device_type = #{deviceType} + and cpm.is_use = '0' + and cpm.grade = 40 group by - cpm.mt_type + cpm.mt_num ) group by TO_CHAR(dm.cur_time, @@ -748,9 +750,9 @@ where dm.cur_time >= #{startTime}::timestamp and dm.cur_time <= #{endTime}::timestamp - and dm.device_type in( + and dm.device_num in( select - cpm.mt_type + cpm.mt_num from collection_params_manage cpm join @@ -763,8 +765,10 @@ and cpm.system_type = #{systemType} + and cpm.is_use = '0' + and cpm.grade = 40 group by - cpm.mt_type + cpm.mt_num ) group by TO_CHAR(dm.cur_time, @@ -796,9 +800,9 @@ where dm.cur_time >= #{startTime}::timestamp and dm.cur_time <= #{endTime}::timestamp - and dm.device_type in( + and dm.device_num in( select - cpm.mt_type + cpm.mt_num from collection_params_manage cpm join @@ -811,8 +815,10 @@ and cpm.system_type = #{systemType} + and cpm.is_use = '0' + and cpm.grade = 40 group by - cpm.mt_type + cpm.mt_num ) group by TO_CHAR(dm.cur_time, @@ -997,9 +1003,9 @@ where dm.cur_time >= #{startTime}::timestamp and dm.cur_time <= #{endTime}::timestamp - and dm.device_type in( + and dm.device_num in( select - cpm.mt_type + cpm.mt_num from collection_params_manage cpm join @@ -1012,8 +1018,10 @@ and cpm.system_type = #{systemType} + and cpm.is_use = '0' + and cpm.grade = 40 group by - cpm.mt_type + cpm.mt_num ) group by dm.cur_time @@ -1027,9 +1035,9 @@ where dm.cur_time >= #{startTime}::timestamp and dm.cur_time <= #{endTime}::timestamp - and dm.device_type in( + and dm.device_num in( select - cpm.mt_type + cpm.mt_num from collection_params_manage cpm join @@ -1042,8 +1050,10 @@ and cpm.system_type = #{systemType} + and cpm.is_use = '0' + and cpm.grade = 40 group by - cpm.mt_type + cpm.mt_num ) group by dm.cur_time