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;
|
}
|
}
|