From 083cfcba6a2480422ab53c63c37a95ff310946e8 Mon Sep 17 00:00:00 2001
From: z1415143022 <z1415143022@163.com>
Date: 星期三, 26 三月 2025 20:05:59 +0800
Subject: [PATCH] 首页-厂区能耗排名TOP5和碳排放量核算-顶部数据,BUG修改

---
 zhitan-system/src/main/java/com/zhitan/home/service/HomePageServiceImpl.java                                      |    2 
 zhitan-system/src/main/java/com/zhitan/carbonemission/service/impl/CarbonEmissionServiceImpl.java                 |   66 +++++++++++++++++++++++----------
 zhitan-system/src/main/java/com/zhitan/Itemizedenergyanalysis/service/impl/ItemizedEnergyAnalysisServiceImpl.java |    2 
 3 files changed, 48 insertions(+), 22 deletions(-)

diff --git a/zhitan-system/src/main/java/com/zhitan/Itemizedenergyanalysis/service/impl/ItemizedEnergyAnalysisServiceImpl.java b/zhitan-system/src/main/java/com/zhitan/Itemizedenergyanalysis/service/impl/ItemizedEnergyAnalysisServiceImpl.java
index 6b8fb0d..edc291a 100644
--- a/zhitan-system/src/main/java/com/zhitan/Itemizedenergyanalysis/service/impl/ItemizedEnergyAnalysisServiceImpl.java
+++ b/zhitan-system/src/main/java/com/zhitan/Itemizedenergyanalysis/service/impl/ItemizedEnergyAnalysisServiceImpl.java
@@ -49,7 +49,7 @@
 
         String timeType = dto.getTimeType();
         String dataTime = dto.getDataTime();
-        Date beginTime = DateTimeUtil.getTypeTime(timeType, dataTime);
+        Date beginTime = DateTimeUtil.getTime(timeType, dataTime);
         DateTime endTime = null;
 
         // 鑾峰彇鑺傜偣淇℃伅
diff --git a/zhitan-system/src/main/java/com/zhitan/carbonemission/service/impl/CarbonEmissionServiceImpl.java b/zhitan-system/src/main/java/com/zhitan/carbonemission/service/impl/CarbonEmissionServiceImpl.java
index c9bb77d..8cd2c33 100644
--- a/zhitan-system/src/main/java/com/zhitan/carbonemission/service/impl/CarbonEmissionServiceImpl.java
+++ b/zhitan-system/src/main/java/com/zhitan/carbonemission/service/impl/CarbonEmissionServiceImpl.java
@@ -88,8 +88,8 @@
 
         // 璁$畻姣忕鑳芥簮鐨勫綋鍓嶅�煎拰鍘诲勾鐨勫��
         for (String s : energyType) {
-            final double value = getValues(energyMap, upCarbonEmission,energyType);
-            final double lastYearValueNum = getValues(energyMap, upLastCarbonEmission,energyType);
+            final double value = getValues(energyMap, upCarbonEmission, s);
+            final double lastYearValueNum = getValues(energyMap, upLastCarbonEmission, s);
             allValue += value;
             allLastValue += lastYearValueNum;
             final CarbonEmissionRankVO carbonEmissionRankVO = new CarbonEmissionRankVO();
@@ -105,7 +105,7 @@
         upData.add(carbonEmissionRankVOAll);
 
         // 璁$畻涓嬫柟鐨勭⒊鎺掓斁骞舵帓搴�
-        List<CarbonEmissionRankVO> carbonEmissionRankVOS = calculateDownCarbonEmission(beginTime, endTime, carbonEmissionDTO, energyMap,sysEnergies);
+        List<CarbonEmissionRankVO> carbonEmissionRankVOS = calculateDownCarbonEmission(beginTime, endTime, carbonEmissionDTO, energyMap, sysEnergies);
         carbonEmissionRankVOS.sort(Comparator.comparing(CarbonEmissionRankVO::getAllValue).reversed());
         stringObjectMap.put("down", carbonEmissionRankVOS);
         stringObjectMap.put("upData", upData);
@@ -115,7 +115,7 @@
 
     // 璁$畻鍚屾瘮澧為暱鐜�
     private double calculateYOY(double current, double last) {
-        if(last !=0.0) {
+        if (last != 0.0) {
             return (current - last) / last * 100;
         }
         return 0;
@@ -123,7 +123,7 @@
     }
 
     // 璁$畻涓嬫柟鐨勭⒊鎺掓斁
-    private List<CarbonEmissionRankVO> calculateDownCarbonEmission(Date beginTime, Date endTime, CarbonEmissionDTO carbonEmissionDTO, Map<String, SysEnergy> energyMap,List<SysEnergy> sysEnergies) {
+    private List<CarbonEmissionRankVO> calculateDownCarbonEmission(Date beginTime, Date endTime, CarbonEmissionDTO carbonEmissionDTO, Map<String, SysEnergy> energyMap, List<SysEnergy> sysEnergies) {
         List<CarbonEmission> downCarbonEmission = dataItemMapper.getDownCarbonEmission(beginTime, endTime, carbonEmissionDTO.getTimeType(), carbonEmissionDTO.getNodeId());
         List<CarbonEmissionRankVO> carbonEmissionRankVOS = new ArrayList<>();
 
@@ -144,8 +144,8 @@
                         throw new RuntimeException("鑾峰彇纰虫帓鏀捐浆鎹㈢巼鏃跺嚭閿�: 绯荤粺鑳芥簮鏁版嵁涓笉瀛樺湪" + s + "鑳芥簮绫诲瀷");
                     }
                     double value = v.stream().filter(ec -> ec.getEnergyId().equals(s))
-                        .mapToDouble(CarbonEmission::getValue)
-                        .sum();
+                            .mapToDouble(CarbonEmission::getValue)
+                            .sum();
                     double calculatedValue = Double.parseDouble(df.format(sysEnergy.getCoefficient().doubleValue() * value));
 
                     switch (s) {
@@ -225,12 +225,12 @@
             // 涓婁竴鏃堕棿娈电殑纰虫帓鏀炬暟鎹�
             final List<CarbonEmission> lastCarbonEmissions = lastCollect.get(XAxis[i]);
             // 鎬诲��
-            double totalValue = getValues(energyMap, carbonEmissions,energyType);
+            double totalValue = getValues(energyMap, carbonEmissions, energyType);
             // 涓婁竴鏃堕棿娈电殑鎬诲��
-            double totalLastValue = getValues(energyMap, lastCarbonEmissions,energyType);
+            double totalLastValue = getValues(energyMap, lastCarbonEmissions, energyType);
             // 鍓嶄竴娆$殑鎬诲��
-            double totalFrontValue = (i == 0) ? 0.0 : getValues(energyMap, collect.get(XAxis[i - 1]),energyType);
-            final carbonEmissionYQVO carbonEmissionYQVO = new carbonEmissionYQVO(XAxis[i] ,  String.format("%.2f", totalValue) ,String.format("%.2f", calculateYOY(totalValue, totalLastValue)) , String.format("%.2f", calculateYOY(totalValue, totalFrontValue)));
+            double totalFrontValue = (i == 0) ? 0.0 : getValues(energyMap, collect.get(XAxis[i - 1]), energyType);
+            final carbonEmissionYQVO carbonEmissionYQVO = new carbonEmissionYQVO(XAxis[i], String.format("%.2f", totalValue), String.format("%.2f", calculateYOY(totalValue, totalLastValue)), String.format("%.2f", calculateYOY(totalValue, totalFrontValue)));
             carbonEmissionYQVOS.add(carbonEmissionYQVO);
         }
         return carbonEmissionYQVOS;
@@ -253,35 +253,61 @@
     }
 
 
-    public static double getValues(Map<String, SysEnergy> energyMap, List<CarbonEmission> carbonEmissions,List<String> energyType) {
+    public static double getValues(Map<String, SysEnergy> energyMap, List<CarbonEmission> carbonEmissions, List<String> energyTypeList) {
         if (CollectionUtils.isEmpty(carbonEmissions)) {
             return 0.0;
         }
-
         // 鍒濆鍖栨�诲��
         double allValue = 0.0;
-
         // 鎸夎兘婧怚D鍒嗙粍
         final Map<String, List<CarbonEmission>> energyValueMap = carbonEmissions.stream()
                 .collect(Collectors.groupingBy(CarbonEmission::getEnergyId));
-//        final List<String> energyType = sysEnergies.stream().map(SysEnergy::getEnersno).collect(Collectors.toList());
-// 璁$畻姣忕鑳芥簮鐨勫綋鍓嶅��
-        for (String s : energyType) {
-            SysEnergy sysEnergy = energyMap.get(s);
+
+        for (String energyType : energyTypeList) {
+            // 璁$畻姣忕鑳芥簮鐨勫綋鍓嶅��
+            SysEnergy sysEnergy = energyMap.get(energyType);
 
             // 纭繚鑳芥簮瀛樺湪涓旂郴鏁颁笉涓虹┖
             if (sysEnergy == null || sysEnergy.getCoefficient() == null) {
-                throw new RuntimeException("鑾峰彇纰虫帓鏀捐浆鎹㈢巼鏃跺嚭閿�: 绯荤粺鑳芥簮鏁版嵁涓笉瀛樺湪鎴栫郴鏁颁负绌�" + s + "鑳芥簮绫诲瀷");
+                throw new RuntimeException("鑾峰彇纰虫帓鏀捐浆鎹㈢巼鏃跺嚭閿�: 绯荤粺鑳芥簮鏁版嵁涓笉瀛樺湪鎴栫郴鏁颁负绌�" + energyType + "鑳芥簮绫诲瀷");
             }
 
             // 鑾峰彇瀵瑰簲鑳芥簮鐨勫��
-            double value = energyValueMap.getOrDefault(s, Collections.emptyList()).stream()
+            double value = energyValueMap.getOrDefault(energyType, Collections.emptyList()).stream()
                     .mapToDouble(CarbonEmission::getValue)
                     .sum();
 
             // 鐩存帴璁$畻鎬诲�硷紝閬垮厤鍐椾綑鐨勮浆鎹�
             allValue += sysEnergy.getCoefficient().doubleValue() * value;
         }
+        // 鏍煎紡鍖栨渶缁堢粨鏋�
+        return Double.parseDouble(new DecimalFormat("#.00").format(allValue));
+    }
+
+    public static double getValues(Map<String, SysEnergy> energyMap, List<CarbonEmission> carbonEmissions, String energyType) {
+        if (CollectionUtils.isEmpty(carbonEmissions)) {
+            return 0.0;
+        }
+        // 鍒濆鍖栨�诲��
+        double allValue = 0.0;
+        // 鎸夎兘婧怚D鍒嗙粍
+        final Map<String, List<CarbonEmission>> energyValueMap = carbonEmissions.stream()
+                .collect(Collectors.groupingBy(CarbonEmission::getEnergyId));
+        // 璁$畻姣忕鑳芥簮鐨勫綋鍓嶅��
+        SysEnergy sysEnergy = energyMap.get(energyType);
+
+        // 纭繚鑳芥簮瀛樺湪涓旂郴鏁颁笉涓虹┖
+        if (sysEnergy == null || sysEnergy.getCoefficient() == null) {
+            throw new RuntimeException("鑾峰彇纰虫帓鏀捐浆鎹㈢巼鏃跺嚭閿�: 绯荤粺鑳芥簮鏁版嵁涓笉瀛樺湪鎴栫郴鏁颁负绌�" + energyType + "鑳芥簮绫诲瀷");
+        }
+
+        // 鑾峰彇瀵瑰簲鑳芥簮鐨勫��
+        double value = energyValueMap.getOrDefault(energyType, Collections.emptyList()).stream()
+                .mapToDouble(CarbonEmission::getValue)
+                .sum();
+
+        // 鐩存帴璁$畻鎬诲�硷紝閬垮厤鍐椾綑鐨勮浆鎹�
+        allValue += sysEnergy.getCoefficient().doubleValue() * value;
 
         // 鏍煎紡鍖栨渶缁堢粨鏋�
         return Double.parseDouble(new DecimalFormat("#.00").format(allValue));
diff --git a/zhitan-system/src/main/java/com/zhitan/home/service/HomePageServiceImpl.java b/zhitan-system/src/main/java/com/zhitan/home/service/HomePageServiceImpl.java
index a785a08..d6079dc 100644
--- a/zhitan-system/src/main/java/com/zhitan/home/service/HomePageServiceImpl.java
+++ b/zhitan-system/src/main/java/com/zhitan/home/service/HomePageServiceImpl.java
@@ -378,7 +378,7 @@
         if (ObjectUtils.isEmpty(parentNode)) {
             return energyDataList;
         }
-        List<String> nodeIds = modelNodeList.stream().filter(x -> ObjectUtils.isNotEmpty(x.getParentId()))
+        List<String> nodeIds = modelNodeList.stream().filter(x -> ObjectUtils.isNotEmpty(x.getParentId()) && parentNode.getNodeId().equals(x.getParentId()))
                 .map(ModelNode::getNodeId).collect(Collectors.toList());
         if (ObjectUtils.isEmpty(nodeIds)) {
             return energyDataList;

--
Gitblit v1.9.3