From ecbe7038c6b8f838ddd7031899dbe979629221b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A3=B7=E5=8F=B6?= <14103883+leaf-phos@user.noreply.gitee.com> Date: Thu, 17 Oct 2024 09:05:17 +0800 Subject: [PATCH] =?UTF-8?q?debug:=E6=99=BA=E8=83=BD=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=9C=AA=E5=BC=80=E5=A7=8B=E4=BD=BF=E7=94=A8=E6=97=B6=E7=9A=84?= =?UTF-8?q?=E9=87=91=E9=A2=9D=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/TransactionBillServiceImpl.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/impl/TransactionBillServiceImpl.java b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/impl/TransactionBillServiceImpl.java index 2010fbc6..c1cd60e6 100644 --- a/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/impl/TransactionBillServiceImpl.java +++ b/smart-switch-service/src/main/java/com/ruoyi/ss/transactionBill/service/impl/TransactionBillServiceImpl.java @@ -1404,6 +1404,10 @@ public class TransactionBillServiceImpl implements TransactionBillService, After // 计算智能计量使用金额 private BigDecimal calcSmartCountAmount(TransactionBillVO order, BigDecimal totalEle) { + // 若订单不存在,或者 订单开始电量为空,表示未开始使用,则直接返回0 + if (order == null || order.getSuitStartEle() == null) { + return BigDecimal.ZERO; + } BigDecimal startEle = order.getSuitStartEle(); BigDecimal usedEle = totalEle.subtract(startEle); // 已使用的电量 BigDecimal suitEle = new BigDecimal(order.getSuitTime()); // 套餐每周期的电量 @@ -1419,11 +1423,11 @@ public class TransactionBillServiceImpl implements TransactionBillService, After // 计算智能时长的使用金额 private BigDecimal calcSmartTimeAmount(TransactionBillVO order, LocalDateTime endTime) { - LocalDateTime startTime = order.getSuitStartTime(); - if (startTime == null) { - startTime = LocalDateTime.now(); + // 若订单不存在,或者 订单开始时间为空,表示未开始使用,则直接返回0 + if (order == null || order.getSuitStartTime() == null) { + return BigDecimal.ZERO; } - Duration between = Duration.between(startTime, endTime); + Duration between = Duration.between(order.getSuitStartTime(), endTime); SuitTimeUnit unit = SuitTimeUnit.getByValue(order.getSuitTimeUnit()); ServiceUtil.assertion(unit == null, "订单套餐单位无效"); @@ -1473,7 +1477,11 @@ public class TransactionBillServiceImpl implements TransactionBillService, After // 计算分时段计时金额 private BigDecimal calcTimingTimeAmount(TransactionBillVO order, LocalDateTime endTime) { - LocalDateTime startTime = order.getSuitStartTime() == null ? LocalDateTime.now() : order.getSuitStartTime(); + // 订单不存在 或者 开始时间为空,则表示未开始使用,返回0 + if (order == null || order.getSuitStartTime() == null) { + return BigDecimal.ZERO; + } + LocalDateTime startTime = order.getSuitStartTime(); List<BigDecimal> suitGearAmount = order.getSuitGearAmount(); List<Integer> suitGearTime = order.getSuitGearTime();