longz
2026-07-21 83b85ebe8d7c5cd66e88d61d5bbc95c9e256a352
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package com.ruoyi.order.service.impl;
 
import org.junit.jupiter.api.Test;
 
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
 
import static org.junit.jupiter.api.Assertions.assertEquals;
 
class ChargingBillIncomeIndexTest {
 
    @Test
    void calculatesIncomeFromSettlementRowsWithoutSharingThirdPartyServiceFees() {
        TChargingBillServiceImpl service = new TChargingBillServiceImpl();
        Map<Integer, BigDecimal> ratios = new HashMap<>();
        ratios.put(1, new BigDecimal("15"));
        ratios.put(2, new BigDecimal("50"));
 
        Map<String, Map<String, BigDecimal>> incomeIndex = service.buildChargingBillIncomeIndex(
                Arrays.asList(
                        settlementRow(1, "2026-06", "6.12", "1.85", "0.00"),
                        settlementRow(2, "2026-06", "1.00", "1.00", "0.20")
                ),
                ratios
        );
 
        assertEquals(new BigDecimal("7.69"), incomeIndex.get("1|2026-06").get("platformIncome"));
        assertEquals(new BigDecimal("0.28"), incomeIndex.get("1|2026-06").get("partnerIncome"));
        assertEquals(new BigDecimal("1.80"), incomeIndex.get("2|2026-06").get("platformIncome"));
        assertEquals(new BigDecimal("0.00"), incomeIndex.get("2|2026-06").get("partnerIncome"));
        assertEquals(new BigDecimal("9.49"), incomeIndex.get("0|2026-06").get("platformIncome"));
        assertEquals(new BigDecimal("0.28"), incomeIndex.get("0|2026-06").get("partnerIncome"));
    }
 
    private Map<String, Object> settlementRow(Integer siteId, String billingCycle, String electricAmount,
                                               String serviceAmount, String tripartiteCommission) {
        Map<String, Object> row = new HashMap<>();
        row.put("site_id", siteId);
        row.put("billingCycle", billingCycle);
        row.put("total_electricity_charge", new BigDecimal(electricAmount));
        row.put("total_service_fee", new BigDecimal(serviceAmount));
        row.put("tripartite_commission", new BigDecimal(tripartiteCommission));
        return row;
    }
}