Browse Source

总时长大于宽容度

loemkie 2 weeks ago
parent
commit
eae4e41352
1 changed files with 6 additions and 5 deletions
  1. 6 5
      src/main/java/com/qmrb/parking/fee/ParkingFeeCalculator.java

+ 6 - 5
src/main/java/com/qmrb/parking/fee/ParkingFeeCalculator.java

@@ -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);