longz
2026-08-07 c643d549a2d6a801a5fc9d11663599eaa00bb1ed
fix: correct franchisee order amount
2个文件已修改
20 ■■■■■ 已修改文件
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/controller/TChargingOrderControllerTest.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -220,7 +220,7 @@
        LocalDateTime[] range = franchiseeRange(params);
        List<FranchiseeDayStat> dayStats = franchiseeDayStats(siteIds, range);
        Map<String, Object> summary = new LinkedHashMap<>();
        summary.put("orderAmountWan", sum(dayStats, FranchiseeDayStat::getChargingIncome).divide(BigDecimal.valueOf(10000), 4, RoundingMode.HALF_UP));
        summary.put("orderAmountWan", franchiseeOrderAmountWan(dayStats));
        summary.put("serviceFeeWan", sum(dayStats, FranchiseeDayStat::getServiceFee).divide(BigDecimal.valueOf(10000), 4, RoundingMode.HALF_UP));
        summary.put("chargingPowerWan", sum(dayStats, FranchiseeDayStat::getCapacity).divide(BigDecimal.valueOf(10000), 4, RoundingMode.HALF_UP));
        summary.put("chargingAmount", sum(dayStats, FranchiseeDayStat::getChargingIncome));
@@ -649,6 +649,13 @@
        return new LocalDateTime[]{today.atStartOfDay(), today.plusDays(1).atStartOfDay()};
    }
    static BigDecimal franchiseeOrderAmountWan(List<FranchiseeDayStat> stats) {
        return stats.stream().map(FranchiseeDayStat::getPaymentAmount)
                .map(value -> value == null ? BigDecimal.ZERO : value)
                .reduce(BigDecimal.ZERO, BigDecimal::add)
                .divide(BigDecimal.valueOf(10000), 4, RoundingMode.HALF_UP);
    }
    private <T> BigDecimal sum(List<T> items, java.util.function.Function<T, BigDecimal> getter) { return items.stream().map(getter).map(this::value).reduce(BigDecimal.ZERO, BigDecimal::add); }
    private BigDecimal value(BigDecimal value) { return value == null ? BigDecimal.ZERO : value; }
    private Map<LocalDate, FranchiseeDayStat> dayStatByDay(List<FranchiseeDayStat> stats) {
ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/controller/TChargingOrderControllerTest.java
@@ -10,6 +10,7 @@
import com.ruoyi.order.api.vo.TCharingOrderVO;
import com.ruoyi.order.dto.SixChargingDto;
import com.ruoyi.order.dto.EnterpriseChargingDetailVO;
import com.ruoyi.order.dto.FranchiseeDayStat;
import com.ruoyi.order.dto.FranchiseeUserAgg;
import com.ruoyi.order.export.EnterpriseChargingDetailExport;
import com.ruoyi.order.service.TChargingOrderService;
@@ -35,6 +36,16 @@
class TChargingOrderControllerTest {
    @Test
    void franchiseeOrderAmountWanUsesActualPaymentInsteadOfOperatingIncome() {
        FranchiseeDayStat discountedOrder = new FranchiseeDayStat();
        discountedOrder.setPaymentAmount(new BigDecimal("90"));
        discountedOrder.setChargingIncome(new BigDecimal("104"));
        assertEquals(new BigDecimal("0.0090"),
                TChargingOrderController.franchiseeOrderAmountWan(Arrays.asList(discountedOrder)));
    }
    @Test
    void appUserIdsBySiteIdsDelegatesToOrderService() {
        TChargingOrderService chargingOrderService = mock(TChargingOrderService.class);
        TChargingOrderController controller = new TChargingOrderController();