Selaa lähdekoodia

优化分类能耗统计(按能源类型关联产品,调用 TSDB 分项汇总)接口,增加等量植树、上期等量植树和同期等量植树三个字段值的采集

james 3 päivää sitten
vanhempi
commit
bd32c9dc08

+ 17 - 5
service-ems/service-ems-biz/src/main/java/com/usky/ems/service/impl/EmsOverviewServiceImpl.java

@@ -389,43 +389,52 @@ public class EmsOverviewServiceImpl implements EmsOverviewService {
         if (pariPassuData == null) {
             pariPassuData = BigDecimal.ZERO;
         }
+        BigDecimal cost = BigDecimal.ZERO;
 
         BigDecimal coalAmount = data.multiply(coal).setScale(2, RoundingMode.UP);
         BigDecimal co2Amount = coalAmount.multiply(co2Factor).setScale(2, RoundingMode.UP);
 
+        BigDecimal plantTree = BigDecimal.ZERO;
+        if (co2Amount.compareTo(BigDecimal.ZERO) > 0) {
+            plantTree = co2Amount.divide(new BigDecimal("18"), 2, RoundingMode.UP);
+        }
+
         BigDecimal sequentialCon = BigDecimal.ZERO;
         BigDecimal sequentialCost = BigDecimal.ZERO;
         BigDecimal sequentialCoal = BigDecimal.ZERO;
         BigDecimal sequentialCo2 = BigDecimal.ZERO;
+        BigDecimal sequentialPlantTree = BigDecimal.ZERO;
         if (sequentialData.compareTo(BigDecimal.ZERO) != 0) {
             BigDecimal sequentialCoalAmountData = sequentialData.multiply(coal).setScale(2, RoundingMode.UP);
             BigDecimal sequentialCo2AmountData = sequentialCoalAmountData.multiply(co2Factor)
                     .setScale(2, RoundingMode.UP);
+            BigDecimal sequentialPlantTreeAmountData = sequentialCo2AmountData.divide(new BigDecimal("18"), 2, RoundingMode.UP);
             sequentialCon = data.subtract(sequentialData).divide(sequentialData, 2, RoundingMode.UP);
             sequentialCoal = coalAmount.subtract(sequentialCoalAmountData)
                     .divide(sequentialCoalAmountData, 2, RoundingMode.UP);
             sequentialCo2 = co2Amount.subtract(sequentialCo2AmountData)
                     .divide(sequentialCo2AmountData, 2, RoundingMode.UP);
+            sequentialPlantTree = plantTree.subtract(sequentialPlantTreeAmountData)
+                    .divide(sequentialPlantTreeAmountData, 2, RoundingMode.UP);
         }
 
         BigDecimal pariPassCon = BigDecimal.ZERO;
         BigDecimal pariPassCost = BigDecimal.ZERO;
         BigDecimal pariPassCoal = BigDecimal.ZERO;
         BigDecimal pariPassCo2 = BigDecimal.ZERO;
+        BigDecimal pariPassPlantTree = BigDecimal.ZERO;
         if (pariPassuData.compareTo(BigDecimal.ZERO) != 0) {
             BigDecimal pariPassCoalAmountData = pariPassuData.multiply(coal).setScale(2, RoundingMode.UP);
             BigDecimal pariPassCo2AmountData = pariPassCoalAmountData.multiply(co2Factor)
                     .setScale(2, RoundingMode.UP);
+            BigDecimal pariPassPlantTreeAmount = pariPassCo2AmountData.divide(new BigDecimal("18"), 2, RoundingMode.UP);
             pariPassCon = data.subtract(pariPassuData).divide(pariPassuData, 2, RoundingMode.UP);
             pariPassCoal = coalAmount.subtract(pariPassCoalAmountData)
                     .divide(pariPassCoalAmountData, 2, RoundingMode.UP);
             pariPassCo2 = co2Amount.subtract(pariPassCo2AmountData)
                     .divide(pariPassCo2AmountData, 2, RoundingMode.UP);
-        }
-
-        BigDecimal cost = BigDecimal.ZERO;
-        if (co2Amount.compareTo(BigDecimal.ZERO) > 0) {
-            cost = co2Amount.divide(new BigDecimal("18"), 2, RoundingMode.UP);
+            pariPassPlantTree = plantTree.subtract(pariPassPlantTreeAmount)
+                    .divide(pariPassPlantTreeAmount, 2, RoundingMode.UP);
         }
 
         Map<String, Object> map = new HashMap<>();
@@ -443,6 +452,9 @@ public class EmsOverviewServiceImpl implements EmsOverviewService {
         map.put("co2Amount", co2Amount);
         map.put("sequentialCo2", sequentialCo2);
         map.put("pariPassCo2", pariPassCo2);
+        map.put("plantTree", plantTree);
+        map.put("sequentialPlantTree", sequentialPlantTree);
+        map.put("pariPassPlantTree", pariPassPlantTree);
         return map;
     }