| | |
| | | |
| | | @Override |
| | | public EmissionReductionVO emissionReduction(List<Integer> siteIds) { |
| | | ScreenTopVO top = top(Arrays.asList(25, 26)); |
| | | //需调用接口 计算光伏减排 |
| | | EmissionReductionVO vo = new EmissionReductionVO(); |
| | | //获取总电量 计算累计充电二氧化碳减排量 |
| | | BigDecimal charge = top.getCarCharge(); |
| | | BigDecimal multiplier = new BigDecimal("1.564"); |
| | | //获取总电量 计算累计充电二氧化碳减排量(与大屏累计充电量同口径: 已结束+已支付订单) |
| | | BigDecimal charge = BigDecimal.ZERO; |
| | | R<BigDecimal> r = chargingOrderClient.getLargeScreenTotalCapacity(siteIds); |
| | | if (r.getCode() == 200 && r.getData() != null) { |
| | | charge = r.getData(); |
| | | } |
| | | BigDecimal multiplier = new BigDecimal("0.1564"); |
| | | //计算累计充电二氧化碳减排量 |
| | | if (charge.compareTo(BigDecimal.ZERO) != 0) { |
| | | // 定义乘数和除数 |
| | | // 0.1404 |
| | | // 计算:charge × 0.1404 ÷ 1000 |
| | | // 计算:charge × 0.1564 ÷ 1000 |
| | | charge = charge |
| | | .multiply(multiplier) // 乘以 0.1404 |
| | | .divide(new BigDecimal("10000"), 2, RoundingMode.HALF_DOWN); // 除以 1000,保留6位小数,四舍五入 |
| | | .multiply(multiplier) // 乘以 0.1564 |
| | | .divide(new BigDecimal("1000"), 2, RoundingMode.HALF_DOWN); // 除以 1000,保留2位小数,四舍五入 |
| | | } |
| | | vo.setCharge(charge); |
| | | |
| | |
| | | //百分比计算 |
| | | public static BigDecimal calculateRatio(BigDecimal part, BigDecimal total) { |
| | | if (total.compareTo(BigDecimal.ZERO) == 0) { |
| | | throw new ArithmeticException("分母不能为零"); |
| | | return BigDecimal.ZERO; |
| | | } |
| | | return part.divide(total, 4, RoundingMode.HALF_UP); |
| | | } |
| | |
| | | BigDecimal carCharge = new BigDecimal("0.00"); |
| | | BigDecimal greenElectricity = new BigDecimal("0.00"); |
| | | if (siteIds != null && !siteIds.isEmpty()) { |
| | | //获取充电量 |
| | | R<BigDecimal> r = chargingOrderClient.getSumDegreeBySiteIds(Arrays.asList(25, 26)); |
| | | if (r.getCode() == 200) { |
| | | //获取充电量(与大屏累计充电量同口径: 已结束+已支付订单) |
| | | R<BigDecimal> r = chargingOrderClient.getLargeScreenTotalCapacity(siteIds); |
| | | if (r.getCode() == 200 && r.getData() != null) { |
| | | charge = r.getData(); |
| | | } |
| | | //汽车放电量 |