longz
2026-08-03 4393d3cba374f3c914336c6038c3ee84e13463dc
修复光伏碳减排统计
3个文件已修改
17 ■■■■■ 已修改文件
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TStationEarnServiceImpl.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/StationEarnStatisticsVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/test/java/com/ruoyi/other/service/impl/TStationEarnServiceImplTest.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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")));
    }
}