ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TStationEarnServiceImpl.java
@@ -40,6 +40,8 @@ extends ServiceImpl<TStationEarnMapper, TStationEarn> implements TStationEarnService { private static final BigDecimal PHOTOVOLTAIC_CARBON_REDUCTION_FACTOR = new BigDecimal("0.0001564"); @Override @Transactional(rollbackFor = Exception.class) public boolean addStationEarn(TStationEarn stationEarn) { @@ -155,6 +157,7 @@ result.setDimension(dimension); result.setTotalGeneration(totalGeneration); result.setTotalEarn(totalEarn); result.setTotalCarbonReduction(calculateCarbonReduction(totalGeneration)); result.setItems(items); return result; } @@ -303,6 +306,11 @@ return value == null ? BigDecimal.ZERO : value; } static BigDecimal calculateCarbonReduction(BigDecimal generation) { return generation.multiply(PHOTOVOLTAIC_CARBON_REDUCTION_FACTOR) .setScale(2, RoundingMode.DOWN); } private static BigDecimal parseBigDecimal(String value) { if (StringUtils.isBlank(value)) { return BigDecimal.ZERO; ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/StationEarnStatisticsVO.java
@@ -20,6 +20,9 @@ @ApiModelProperty("合计收益(元)") private BigDecimal totalEarn; @ApiModelProperty("合计碳减排(吨)") private BigDecimal totalCarbonReduction; @ApiModelProperty("图表数据") private List<StationEarnStatisticsItemVO> items; } ruoyi-service/ruoyi-other/src/test/java/com/ruoyi/other/service/impl/TStationEarnServiceImplTest.java
@@ -37,4 +37,10 @@ assertEquals(new BigDecimal("694.2"), merged.get(1).getElecTotal()); assertEquals(null, merged.get(1).getId()); } @Test void calculatesPhotovoltaicCarbonReductionInTons() { assertEquals(new BigDecimal("0.18"), TStationEarnServiceImpl.calculateCarbonReduction(new BigDecimal("1200"))); } }