|
@@ -70,7 +70,8 @@ public class ParkingFeeCalculator {
|
|
|
.orElse(null);
|
|
|
|
|
|
// 检查最后一次支付时间是否在离场时长宽容度内
|
|
|
- if (lastPaymentTime != null && Duration.between(lastPaymentTime, billingEndTime).toMinutes() <= feeRule.gracePeriodMinutes) {
|
|
|
+ if (lastPaymentTime != null && Duration.between(lastPaymentTime, billingEndTime).toMinutes() <= feeRule.gracePeriodMinutes
|
|
|
+ && billingDuration.toMinutes() > feeRule.gracePeriodMinutes) {//总时长 必须大于宽容度
|
|
|
billingDuration = billingDuration.minusMinutes(feeRule.gracePeriodMinutes);
|
|
|
}
|
|
|
}
|
|
@@ -144,7 +145,7 @@ public class ParkingFeeCalculator {
|
|
|
public static void e2(){
|
|
|
// 示例计费规则
|
|
|
FeeRule feeRule = new FeeRule();
|
|
|
- feeRule.freeDurationMinutes = 10;//免费时长
|
|
|
+ feeRule.freeDurationMinutes = 0;//免费时长
|
|
|
feeRule.firstCycleFee = 20.0;//首周期计费金额
|
|
|
feeRule.firstCycleDurationMinutes = 60;//首周期计费时长
|
|
|
feeRule.cycleDurationMinutes = 30;//计费周期
|
|
@@ -154,13 +155,13 @@ public class ParkingFeeCalculator {
|
|
|
|
|
|
// 示例停车记录
|
|
|
ParkingRecord parkingRecord = new ParkingRecord();
|
|
|
- parkingRecord.entryTime = LocalDateTime.of(2025, 3, 13, 15, 39);
|
|
|
- parkingRecord.exitTime = LocalDateTime.of(2025, 3, 13, 16, 45);
|
|
|
+ parkingRecord.entryTime = LocalDateTime.of(2025, 3, 14, 10, 0);
|
|
|
+ parkingRecord.exitTime = LocalDateTime.of(2025, 3, 14, 10, 20);
|
|
|
parkingRecord.monthlyCardExpiryTime = null;
|
|
|
parkingRecord.paidAmount = 0.01;//已支付金额
|
|
|
parkingRecord.paymentRecords=new ArrayList<>();
|
|
|
PaymentRecord paymentRecord = new PaymentRecord();
|
|
|
- paymentRecord.paymentTime = LocalDateTime.of(2025, 3, 13, 16, 29);
|
|
|
+ paymentRecord.paymentTime = LocalDateTime.of(2025, 3, 14, 10, 0);
|
|
|
parkingRecord.paymentRecords.add(paymentRecord);
|
|
|
// 计算费用
|
|
|
double fee = calculateParkingFee(parkingRecord, feeRule, false);
|