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 |  155 +++++++++++++++++++++++++++------------------------
 1 files changed, 83 insertions(+), 72 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 051b89b..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,13 +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.costmanagement.domain.vo.CostPriceRelevancyVo;
 import com.zhitan.costmanagement.mapper.CostPriceRelevancyMapper;
-import com.zhitan.model.domain.vo.ModelNodeIndexInfor;
+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;
@@ -41,10 +39,16 @@
     CostPriceRelevancyMapper costPriceRelevancyMapper;
 
     /**
-     * 鏌ヨ缁熻鏁版嵁
-     *
-     * @param dto 璇锋眰鍙傛暟
-     * @return 缁撴灉
+     * 鏌ヨ灏栧嘲骞宠胺缁熻鏁版嵁
+     * @param dto 璇锋眰鍙傛暟锛屽寘鍚ā鍨嬩唬鐮併�佽妭鐐笽D銆佹煡璇㈡椂闂淬�佹椂闂寸被鍨嬬瓑
+     * @return 鎸夋椂闂存鍒嗛殧鐨勭粺璁$粨鏋滃垪琛�
+     * 
+     * 涓氬姟姝ラ锛�
+     * 1. 鏍规嵁鏌ヨ鏃堕棿纭畾璧锋鏃堕棿鑼冨洿
+     * 2. 鏌ヨ妯″瀷鑺傜偣鍏宠仈鐨勬寚鏍囦俊鎭�
+     * 3. 鏍规嵁鎸囨爣ID闆嗗悎鏌ヨ鍘熷鏁版嵁
+     * 4. 鎸夋椂闂村垎缁勫鐞嗘暟鎹�
+     * 5. 寰幆閬嶅巻鏃堕棿鍖洪棿锛岀粺璁″悇鏃舵鐨勮垂鐢ㄥ拰鐢ㄧ數閲�
      */
     @Override
     public List<PeakValleyHourDataVO> getDataStatistics(ElectricityDataItemListDTO dto) {
@@ -56,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()
@@ -120,6 +124,19 @@
     }
 
 
+    /**
+     * 鎸夊ぉ缁村害杩涜灏栧嘲骞宠胺鍒嗘椂娈靛垎鏋�
+     * @param dto 璇锋眰鍙傛暟锛屽寘鍚ā鍨嬩唬鐮併�佽妭鐐笽D銆佹煡璇㈡椂闂寸瓑
+     * @return 鍖呭惈鏃ョ粺璁℃�昏鍜屽浘琛ㄦ暟鎹殑VO瀵硅薄
+     * 
+     * 涓氬姟姝ラ锛�
+     * 1. 鍒濆鍖栫粺璁″鍣ㄥ拰鏃堕棿鑼冨洿
+     * 2. 鏌ヨ鍏宠仈鎸囨爣骞惰幏鍙栧師濮嬫暟鎹�
+     * 3. 鎸夊ぉ鑱氬悎鏁版嵁骞惰绠楀悇鏃舵璐圭敤鍜岀敤鐢甸噺
+     * 4. 鐢熸垚璐圭敤/鐢ㄧ數閲忔姌绾垮浘鏁版嵁
+     * 5. 璁$畻鎬绘秷鑰楅噺鍙婂悇鏃舵鍗犳瘮
+     * 6. 姹囨�荤敓鎴愭渶缁堢粨鏋滃璞�
+     */
     @Override
     public PeakValleyDayVO segmentAnalysisDay(PeakValleyDTO dto) {
         PeakValleyDayVO peakValleyVO = new PeakValleyDayVO();
@@ -131,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;
@@ -157,45 +183,19 @@
                     String electricityType = electricityDataItem.getElectricityType();
 
                     if (ElectricityTypeEnum.SHARP.name().equals(electricityType)) {
-//                        sharpFee = sharpFee.add(electricityDataItem.getCost());
-
+                        sharpFee = sharpFee.add(electricityDataItem.getCost());
                         sharpPower = sharpPower.add(electricityDataItem.getElectricity());
                     } else if (ElectricityTypeEnum.PEAK.name().equals(electricityType)) {
-//                        peakFee = peakFee.add(electricityDataItem.getCost());
+                        peakFee = peakFee.add(electricityDataItem.getCost());
                         peakPower = peakPower.add(electricityDataItem.getElectricity());
                     } else if (ElectricityTypeEnum.FLAT.name().equals(electricityType)) {
-//                        flatFee = flatFee.add(electricityDataItem.getCost());
+                        flatFee = flatFee.add(electricityDataItem.getCost());
                         flatPower = flatPower.add(electricityDataItem.getElectricity());
                     } else {
-//                        valleyFee = valleyFee.add(electricityDataItem.getCost());
+                        valleyFee = valleyFee.add(electricityDataItem.getCost());
                         valleyPower = valleyPower.add(electricityDataItem.getElectricity());
                     }
                 }
-                //2024-11-12鏂板
-                CostPriceRelevancyVo voS =  costPriceRelevancyMapper.selectCostPriceRelevancyByNodeId(dto.getNodeId(),ElectricityTypeEnum.SHARP.name());
-                if(voS!=null){
-                    sharpFee = voS.getPrice().multiply(sharpPower);
-                }
-                CostPriceRelevancyVo voP =  costPriceRelevancyMapper.selectCostPriceRelevancyByNodeId(dto.getNodeId(),ElectricityTypeEnum.PEAK.name());
-                if(voP!=null){
-                    peakFee = voP.getPrice().multiply(peakPower);
-                }
-                CostPriceRelevancyVo voF =  costPriceRelevancyMapper.selectCostPriceRelevancyByNodeId(dto.getNodeId(),ElectricityTypeEnum.FLAT.name());
-                if(voF!=null){
-                    flatFee = voF.getPrice().multiply(flatPower);
-                }
-                CostPriceRelevancyVo voV =  costPriceRelevancyMapper.selectCostPriceRelevancyByNodeId(dto.getNodeId(), ElectricityTypeEnum.VALLEY.name());
-                if(voV!=null){
-                    valleyFee = voV.getPrice().multiply(valleyPower);
-                }
-//                CostPriceRelevancyVo voD =  costPriceRelevancyMapper.selectCostPriceRelevancyByNodeId(dto.getNodeId(), ElectricityTypeEnum.DEEP.name());
-//                if(voV!=null){
-//                    DeepFee = voV.getPrice().multiply(valleyPower);
-//                }
-
-
-
-
             }
             PeakValleyDayDataVO peakAndValleyReportVO = new PeakValleyDayDataVO(startTime, sharpFee, sharpPower,
                     peakFee, peakPower, flatFee, flatPower, valleyFee, valleyPower);
@@ -318,6 +318,19 @@
         return peakValleyVO;
     }
 
+    /**
+     * 鎸夊皬鏃剁淮搴﹁繘琛屽皷宄板钩璋峰垎鏃舵鍒嗘瀽
+     * @param dto 璇锋眰鍙傛暟锛屽寘鍚ā鍨嬩唬鐮併�佽妭鐐笽D銆佹煡璇㈡椂闂寸瓑
+     * @return 鍖呭惈灏忔椂绾ф暟鎹拰鍙鍖栧浘琛ㄧ殑VO瀵硅薄
+     * 
+     * 涓氬姟姝ラ锛�
+     * 1. 鍒濆鍖栫粺璁″鍣ㄥ拰鏃堕棿鑼冨洿
+     * 2. 鏌ヨ鍏宠仈鎸囨爣骞惰幏鍙栧師濮嬫暟鎹�
+     * 3. 鎸夊皬鏃剁粺璁″悇鏃舵璐圭敤鍜岀敤鐢甸噺
+     * 4. 鐢熸垚鐢ㄧ數閲忔姌绾垮浘鏁版嵁
+     * 5. 璁$畻鎬荤敤鐢甸噺鍙婂悇鏃舵鍗犳瘮楗煎浘鏁版嵁
+     * 6. 姹囨�荤敓鎴愭渶缁堢粨鏋滃璞�
+     */
     @Override
     public PeakValleyHourVO segmentAnalysisHour(PeakValleyDTO dto) {
         PeakValleyHourVO peakValleyVO = new PeakValleyHourVO();
@@ -329,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()
@@ -355,39 +368,19 @@
                     String electricityType = electricityDataItem.getElectricityType();
 
                     if (ElectricityTypeEnum.SHARP.name().equals(electricityType)) {
-//                        sharpFee = sharpFee.add(electricityDataItem.getCost());
+                        sharpFee = sharpFee.add(electricityDataItem.getCost());
                         sharpPower = sharpPower.add(electricityDataItem.getElectricity());
                     } else if (ElectricityTypeEnum.PEAK.name().equals(electricityType)) {
-//                        peakFee = peakFee.add(electricityDataItem.getCost());
+                        peakFee = peakFee.add(electricityDataItem.getCost());
                         peakPower = peakPower.add(electricityDataItem.getElectricity());
                     } else if (ElectricityTypeEnum.FLAT.name().equals(electricityType)) {
-//                        flatFee = flatFee.add(electricityDataItem.getCost());
+                        flatFee = flatFee.add(electricityDataItem.getCost());
                         flatPower = flatPower.add(electricityDataItem.getElectricity());
                     } else {
-//                        valleyFee = valleyFee.add(electricityDataItem.getCost());
+                        valleyFee = valleyFee.add(electricityDataItem.getCost());
                         valleyPower = valleyPower.add(electricityDataItem.getElectricity());
                     }
                 }
-                //2024-11-12鏂板
-                CostPriceRelevancyVo voS =  costPriceRelevancyMapper.selectCostPriceRelevancyByNodeId(dto.getNodeId(),ElectricityTypeEnum.SHARP.name());
-                if(voS!=null){
-                    sharpFee = voS.getPrice().multiply(sharpPower);
-                }
-                CostPriceRelevancyVo voP =  costPriceRelevancyMapper.selectCostPriceRelevancyByNodeId(dto.getNodeId(),ElectricityTypeEnum.PEAK.name());
-                if(voP!=null){
-                    peakFee = voP.getPrice().multiply(peakPower);
-                }
-                CostPriceRelevancyVo voF =  costPriceRelevancyMapper.selectCostPriceRelevancyByNodeId(dto.getNodeId(),ElectricityTypeEnum.FLAT.name());
-                if(voF!=null){
-                    flatFee = voF.getPrice().multiply(flatPower);
-                }
-                CostPriceRelevancyVo voV =  costPriceRelevancyMapper.selectCostPriceRelevancyByNodeId(dto.getNodeId(), ElectricityTypeEnum.VALLEY.name());
-                if(voV!=null){
-                    valleyFee = voV.getPrice().multiply(valleyPower);
-                }
-
-
-
             }
             PeakValleyHourDataVO peakAndValleyReportVO = new PeakValleyHourDataVO(startTime, sharpFee, sharpPower,
                     peakFee, peakPower, flatFee, flatPower, valleyFee, valleyPower);
@@ -451,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<>();
@@ -461,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()
@@ -524,6 +528,13 @@
        return reportVOList;
     }
 
+    /**
+     * 鑷畾涔夋椂娈电殑灏栧嘲骞宠胺鍒嗘瀽锛堥鐣欐帴鍙o級
+     * @param dto 璇锋眰鍙傛暟锛屽寘鍚嚜瀹氫箟鏃堕棿鑼冨洿绛�
+     * @return 鍒嗘瀽缁撴灉瀵硅薄
+     * 
+     * 褰撳墠瀹炵幇锛氭殏鏈紑鍙戯紝杩斿洖绌哄��
+     */
     @Override
     public PeakValleyDayVO segmentAnalysisDayCustomize(PeakValleyDTO dto) {
         return null;

--
Gitblit v1.9.3