package com.ruoyi.order.service.impl;
|
|
import com.ruoyi.order.api.model.AccountingStrategyDetailOrder;
|
import com.ruoyi.order.api.vo.TransactionRecordMessageVO;
|
import org.junit.jupiter.api.Test;
|
|
import java.math.BigDecimal;
|
import java.time.LocalDateTime;
|
import java.util.Arrays;
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
class ChargingSimulationSupportTest {
|
|
@Test
|
void buildsOneKwhRecordForSelectedTariffPeriod() {
|
AccountingStrategyDetailOrder first = detail(1, 1, "00:00", "12:00");
|
AccountingStrategyDetailOrder second = detail(2, 3, "12:00", "23:59");
|
LocalDateTime endTime = LocalDateTime.of(2026, 7, 11, 15, 30, 0);
|
|
ChargingSimulationSupport.PreparedSimulation prepared = ChargingSimulationSupport.prepare(
|
"CD202607110001",
|
Arrays.asList(first, second),
|
new BigDecimal("0.03"),
|
new BigDecimal("0.02"),
|
endTime);
|
|
assertEquals(second, prepared.getTariff());
|
assertEquals(new BigDecimal("0.03"), second.getElectrovalence());
|
assertEquals(new BigDecimal("0.02"), second.getServiceCharge());
|
assertEquals(new BigDecimal("0.02"), second.getCostServiceCharge());
|
|
TransactionRecordMessageVO record = prepared.getRecord();
|
assertEquals("CD202607110001", record.getTransaction_serial_number());
|
assertEquals(BigDecimal.ONE, record.getTotal_electricity());
|
assertEquals(BigDecimal.ONE, record.getLoss_total_electricity());
|
assertEquals(BigDecimal.ONE, record.getFlat_charge2());
|
assertEquals(new BigDecimal("0.05"), record.getPayment_amount());
|
}
|
|
private AccountingStrategyDetailOrder detail(int id, int type, String start, String end) {
|
AccountingStrategyDetailOrder detail = new AccountingStrategyDetailOrder();
|
detail.setId(id);
|
detail.setType(type);
|
detail.setStartTime(start);
|
detail.setEndTime(end);
|
return detail;
|
}
|
}
|