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