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