| | |
| | | |
| | | // 计算每种能源的当前值和去年的值 |
| | | 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(); |
| | |
| | | } |
| | | |
| | | |
| | | 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; |
| | | |
| | | // 按能源ID分组 |
| | | 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 energyType : energyTypeList) { |
| | | // 计算每种能源的当前值 |
| | | for (String s : energyType) { |
| | | SysEnergy sysEnergy = energyMap.get(s); |
| | | 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; |
| | | // 按能源ID分组 |
| | | 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)); |