From 8dd7af51db4cf768fbf92002b5b62f7fb9d1c929 Mon Sep 17 00:00:00 2001 From: baoshiwei <baoshiwei@shlanbao.cn> Date: 星期二, 06 五月 2025 15:04:59 +0800 Subject: [PATCH] refactor(zhitan):调整模型代码和优化能源统计功能 --- zhitan-system/src/main/java/com/zhitan/peakvalley/service/impl/PeakValleyServiceImpl.java | 117 ++++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 92 insertions(+), 25 deletions(-) diff --git a/zhitan-system/src/main/java/com/zhitan/peakvalley/service/impl/PeakValleyServiceImpl.java b/zhitan-system/src/main/java/com/zhitan/peakvalley/service/impl/PeakValleyServiceImpl.java index e607910..3ffd6c1 100644 --- a/zhitan-system/src/main/java/com/zhitan/peakvalley/service/impl/PeakValleyServiceImpl.java +++ b/zhitan-system/src/main/java/com/zhitan/peakvalley/service/impl/PeakValleyServiceImpl.java @@ -1,11 +1,11 @@ package com.zhitan.peakvalley.service.impl; - import cn.hutool.core.date.DateUtil; import com.zhitan.common.enums.ElectricityTypeEnum; import com.zhitan.common.enums.TimeType; import com.zhitan.common.utils.DateUtils; -import com.zhitan.model.domain.vo.ModelNodeIndexInfor; +import com.zhitan.costmanagement.mapper.CostPriceRelevancyMapper; +import com.zhitan.model.domain.vo.ModelNodeIndexInfo; import com.zhitan.model.mapper.ModelNodeMapper; import com.zhitan.peakvalley.domain.ElectricityDataItem; import com.zhitan.peakvalley.domain.dto.ElectricityDataItemListDTO; @@ -35,13 +35,20 @@ private ModelNodeMapper modelNodeMapper; @Resource private PeakValleyMapper electricityDataItemMapper; - + @Resource + CostPriceRelevancyMapper costPriceRelevancyMapper; /** - * 鏌ヨ缁熻鏁版嵁 - * - * @param dto 璇锋眰鍙傛暟 - * @return 缁撴灉 + * 鏌ヨ灏栧嘲骞宠胺缁熻鏁版嵁 + * @param dto 璇锋眰鍙傛暟锛屽寘鍚ā鍨嬩唬鐮併�佽妭鐐笽D銆佹煡璇㈡椂闂淬�佹椂闂寸被鍨嬬瓑 + * @return 鎸夋椂闂存鍒嗛殧鐨勭粺璁$粨鏋滃垪琛� + * + * 涓氬姟姝ラ锛� + * 1. 鏍规嵁鏌ヨ鏃堕棿纭畾璧锋鏃堕棿鑼冨洿 + * 2. 鏌ヨ妯″瀷鑺傜偣鍏宠仈鐨勬寚鏍囦俊鎭� + * 3. 鏍规嵁鎸囨爣ID闆嗗悎鏌ヨ鍘熷鏁版嵁 + * 4. 鎸夋椂闂村垎缁勫鐞嗘暟鎹� + * 5. 寰幆閬嶅巻鏃堕棿鍖洪棿锛岀粺璁″悇鏃舵鐨勮垂鐢ㄥ拰鐢ㄧ數閲� */ @Override public List<PeakValleyHourDataVO> getDataStatistics(ElectricityDataItemListDTO dto) { @@ -53,9 +60,9 @@ Map<String, List<ElectricityDataItem>> electricityDataMap = new HashMap<>(); // 鏌ヨ鐐逛綅淇℃伅 - List<ModelNodeIndexInfor> nodeIndexInfoList = modelNodeMapper.selectIndexByModelCodeAndNodeId(dto.getModelCode(), dto.getNodeId()); + List<ModelNodeIndexInfo> nodeIndexInfoList = modelNodeMapper.selectIndexByModelCodeAndNodeId(dto.getModelCode(), dto.getNodeId()); if (CollectionUtils.isNotEmpty(nodeIndexInfoList)) { - Set<String> indexSet = nodeIndexInfoList.stream().map(ModelNodeIndexInfor::getIndexId).collect(Collectors.toSet()); + Set<String> indexSet = nodeIndexInfoList.stream().map(ModelNodeIndexInfo::getIndexId).collect(Collectors.toSet()); List<ElectricityDataItem> dataItemList = electricityDataItemMapper.getDataStatistics(indexSet, startTime, endTime, timeType); electricityDataMap = dataItemList.stream() @@ -117,6 +124,19 @@ } + /** + * 鎸夊ぉ缁村害杩涜灏栧嘲骞宠胺鍒嗘椂娈靛垎鏋� + * @param dto 璇锋眰鍙傛暟锛屽寘鍚ā鍨嬩唬鐮併�佽妭鐐笽D銆佹煡璇㈡椂闂寸瓑 + * @return 鍖呭惈鏃ョ粺璁℃�昏鍜屽浘琛ㄦ暟鎹殑VO瀵硅薄 + * + * 涓氬姟姝ラ锛� + * 1. 鍒濆鍖栫粺璁″鍣ㄥ拰鏃堕棿鑼冨洿 + * 2. 鏌ヨ鍏宠仈鎸囨爣骞惰幏鍙栧師濮嬫暟鎹� + * 3. 鎸夊ぉ鑱氬悎鏁版嵁骞惰绠楀悇鏃舵璐圭敤鍜岀敤鐢甸噺 + * 4. 鐢熸垚璐圭敤/鐢ㄧ數閲忔姌绾垮浘鏁版嵁 + * 5. 璁$畻鎬绘秷鑰楅噺鍙婂悇鏃舵鍗犳瘮 + * 6. 姹囨�荤敓鎴愭渶缁堢粨鏋滃璞� + */ @Override public PeakValleyDayVO segmentAnalysisDay(PeakValleyDTO dto) { PeakValleyDayVO peakValleyVO = new PeakValleyDayVO(); @@ -128,17 +148,26 @@ Map<String, List<ElectricityDataItem>> electricityDataMap = new HashMap<>(); // 鏌ヨ鐐逛綅淇℃伅 - List<ModelNodeIndexInfor> nodeIndexInfoList = modelNodeMapper.selectIndexByModelCodeAndNodeId(dto.getModelCode(), dto.getNodeId()); + List<ModelNodeIndexInfo> nodeIndexInfoList = modelNodeMapper.selectIndexByModelCodeAndNodeId(dto.getModelCode(), dto.getNodeId()); if (CollectionUtils.isNotEmpty(nodeIndexInfoList)) { - Set<String> indexSet = nodeIndexInfoList.stream().map(ModelNodeIndexInfor::getIndexId).collect(Collectors.toSet()); - List<ElectricityDataItem> dataItemList = electricityDataItemMapper.getDataStatistics(indexSet, startTime, endTime, timeType); + Set<String> indexSet = nodeIndexInfoList.stream().map(ModelNodeIndexInfo::getIndexId).collect(Collectors.toSet()); + // 鏍规嵁灏忔椂鏁版嵁璁$畻澶╃殑鏁版嵁 + List<ElectricityDataItem> dataItemList = electricityDataItemMapper.getDataStatistics(indexSet, startTime, endTime, TimeType.HOUR.name()); electricityDataMap = dataItemList.stream() .collect(Collectors.groupingBy(li -> DateUtil.formatDateTime(li.getDataTime()))); } while (!startTime.after(endTime)) { - String mapKey = DateUtil.formatDateTime(startTime); - List<ElectricityDataItem> dataItemList = electricityDataMap.get(mapKey); + + Date nextTime = DateUtil.offsetDay(startTime, 1); + List<ElectricityDataItem> dataItemList = new ArrayList<>(); + for (Map.Entry<String, List<ElectricityDataItem>> entry : electricityDataMap.entrySet()) { + String key = entry.getKey(); + if ((DateUtils.parseDate(key).after(startTime) || DateUtils.parseDate(key).equals(startTime)) && DateUtils.parseDate(key).before(nextTime)) { + List<ElectricityDataItem> list = entry.getValue(); + dataItemList.addAll(list); + } + } BigDecimal sharpFee = BigDecimal.ZERO; BigDecimal sharpPower = BigDecimal.ZERO; @@ -199,11 +228,11 @@ AtomicReference<BigDecimal> tipCount = new AtomicReference<>(BigDecimal.ZERO); AtomicReference<BigDecimal> troughCount = new AtomicReference<>(BigDecimal.ZERO); AtomicReference<BigDecimal> peakCount = new AtomicReference<>(BigDecimal.ZERO); - + reportVOList.stream().forEach(r->{ PeakValleyLineChatVO costVO = new PeakValleyLineChatVO(); PeakValleyLineChatVO powerConsumptionVO = new PeakValleyLineChatVO(); - + /** * 鐢ㄧ數閲� */ @@ -243,7 +272,7 @@ peakFreeCount.set(peakFreeCount.get().add(r.getPeakFee())); }); - peakValleyDayTotalVO.setPeakPowerCost(peakFreeCount.get().doubleValue()); + peakValleyDayTotalVO.setPeakPowerCost(peakFreeCount.get().doubleValue()); peakValleyDayTotalVO.setPeakPowerConsumption(peakCount.get().doubleValue()); peakValleyDayTotalVO.setFlatPowerCost(flatFreeCount.get().doubleValue()); peakValleyDayTotalVO.setFlatPowerConsumption(flatCount.get().doubleValue()); @@ -277,16 +306,31 @@ peakValleyDayTotalVO.setTipPowerCostProportion(0); peakValleyDayTotalVO.setTroughPowerCostProportion(0); } - - peakValleyDayTotalVO.setTotalCost(powerTotal.doubleValue()); - peakValleyDayTotalVO.setTotalPowerConsumption(freeTotal.doubleValue()); + +// peakValleyDayTotalVO.setTotalCost(powerTotal.doubleValue()); +// peakValleyDayTotalVO.setTotalPowerConsumption(freeTotal.doubleValue()); + peakValleyDayTotalVO.setTotalCost(freeTotal.doubleValue()); + peakValleyDayTotalVO.setTotalPowerConsumption(powerTotal.doubleValue()); peakValleyVO.setTotalVO(peakValleyDayTotalVO); peakValleyVO.setCostList(costList); peakValleyVO.setPowerConsumptionList(powerConsumptionList); - + return peakValleyVO; } + /** + * 鎸夊皬鏃剁淮搴﹁繘琛屽皷宄板钩璋峰垎鏃舵鍒嗘瀽 + * @param dto 璇锋眰鍙傛暟锛屽寘鍚ā鍨嬩唬鐮併�佽妭鐐笽D銆佹煡璇㈡椂闂寸瓑 + * @return 鍖呭惈灏忔椂绾ф暟鎹拰鍙鍖栧浘琛ㄧ殑VO瀵硅薄 + * + * 涓氬姟姝ラ锛� + * 1. 鍒濆鍖栫粺璁″鍣ㄥ拰鏃堕棿鑼冨洿 + * 2. 鏌ヨ鍏宠仈鎸囨爣骞惰幏鍙栧師濮嬫暟鎹� + * 3. 鎸夊皬鏃剁粺璁″悇鏃舵璐圭敤鍜岀敤鐢甸噺 + * 4. 鐢熸垚鐢ㄧ數閲忔姌绾垮浘鏁版嵁 + * 5. 璁$畻鎬荤敤鐢甸噺鍙婂悇鏃舵鍗犳瘮楗煎浘鏁版嵁 + * 6. 姹囨�荤敓鎴愭渶缁堢粨鏋滃璞� + */ @Override public PeakValleyHourVO segmentAnalysisHour(PeakValleyDTO dto) { PeakValleyHourVO peakValleyVO = new PeakValleyHourVO(); @@ -298,9 +342,9 @@ Map<String, List<ElectricityDataItem>> electricityDataMap = new HashMap<>(); // 鏌ヨ鐐逛綅淇℃伅 - List<ModelNodeIndexInfor> nodeIndexInfoList = modelNodeMapper.selectIndexByModelCodeAndNodeId(dto.getModelCode(), dto.getNodeId()); + List<ModelNodeIndexInfo> nodeIndexInfoList = modelNodeMapper.selectIndexByModelCodeAndNodeId(dto.getModelCode(), dto.getNodeId()); if (CollectionUtils.isNotEmpty(nodeIndexInfoList)) { - Set<String> indexSet = nodeIndexInfoList.stream().map(ModelNodeIndexInfor::getIndexId).collect(Collectors.toSet()); + Set<String> indexSet = nodeIndexInfoList.stream().map(ModelNodeIndexInfo::getIndexId).collect(Collectors.toSet()); List<ElectricityDataItem> dataItemList = electricityDataItemMapper.getDataStatistics(indexSet, startTime, endTime, timeType); electricityDataMap = dataItemList.stream() @@ -400,6 +444,17 @@ return peakValleyVO; } + /** + * 瀵煎嚭灏忔椂绾у皷宄板钩璋峰垎鏋愭暟鎹� + * @param dto 璇锋眰鍙傛暟锛屽寘鍚ā鍨嬩唬鐮併�佽妭鐐笽D銆佹煡璇㈡椂闂寸瓑 + * @return 灏忔椂绾ц缁嗙粺璁℃暟鎹垪琛� + * + * 涓氬姟姝ラ锛� + * 1. 鍒濆鍖栨椂闂磋寖鍥� + * 2. 鏌ヨ鍏宠仈鎸囨爣骞惰幏鍙栧師濮嬫暟鎹� + * 3. 鎸夊皬鏃剁粺璁″悇鏃舵鏁版嵁 + * 4. 鐢熸垚鍙鍑虹殑璇︾粏鏁版嵁鍒楄〃 + */ @Override public List<PeakValleyHourDataVO> segmentAnalysisHourExport(PeakValleyDTO dto) { List<PeakValleyHourDataVO> reportVOList = new ArrayList<>(); @@ -410,9 +465,9 @@ Map<String, List<ElectricityDataItem>> electricityDataMap = new HashMap<>(); // 鏌ヨ鐐逛綅淇℃伅 - List<ModelNodeIndexInfor> nodeIndexInfoList = modelNodeMapper.selectIndexByModelCodeAndNodeId(dto.getModelCode(), dto.getNodeId()); + List<ModelNodeIndexInfo> nodeIndexInfoList = modelNodeMapper.selectIndexByModelCodeAndNodeId(dto.getModelCode(), dto.getNodeId()); if (CollectionUtils.isNotEmpty(nodeIndexInfoList)) { - Set<String> indexSet = nodeIndexInfoList.stream().map(ModelNodeIndexInfor::getIndexId).collect(Collectors.toSet()); + Set<String> indexSet = nodeIndexInfoList.stream().map(ModelNodeIndexInfo::getIndexId).collect(Collectors.toSet()); List<ElectricityDataItem> dataItemList = electricityDataItemMapper.getDataStatistics(indexSet, startTime, endTime, timeType); electricityDataMap = dataItemList.stream() @@ -472,4 +527,16 @@ return reportVOList; } + + /** + * 鑷畾涔夋椂娈电殑灏栧嘲骞宠胺鍒嗘瀽锛堥鐣欐帴鍙o級 + * @param dto 璇锋眰鍙傛暟锛屽寘鍚嚜瀹氫箟鏃堕棿鑼冨洿绛� + * @return 鍒嗘瀽缁撴灉瀵硅薄 + * + * 褰撳墠瀹炵幇锛氭殏鏈紑鍙戯紝杩斿洖绌哄�� + */ + @Override + public PeakValleyDayVO segmentAnalysisDayCustomize(PeakValleyDTO dto) { + return null; + } } -- Gitblit v1.9.3