From 8ea02ca30907216aece38fda1ba918e5a5246abe Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 14 十月 2026 15:00:51 +0800
Subject: [PATCH] 修改bug
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 29 +++++++++++++++++++++++++----
1 files changed, 25 insertions(+), 4 deletions(-)
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
index eec9c0e..900dda3 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -2852,7 +2852,14 @@
.eq(TChargingOrder::getDelFlag, 0)
.orderByDesc(TChargingOrder::getCreateTime)
.last(" limit 0, 1"));
- if (null == one || !one.getAppUserId().equals(userId)) {
+ if (null != one && !userId.equals(one.getAppUserId())) {
+ one = null;
+ }
+ // 普通订单在充电中(2=启动中/3=充电中/4=停止中)时直接返回,保持原快路径不变;
+ // 普通订单已结束(5)或不存在时才与 VIN 码订单比较:未结束订单优先,其次取创建时间更近的一笔。
+ // 避免同一把枪先有普通订单完成、随后 VIN 码充电时,充电页被历史完成订单抢占而误入
+ // 「充电完成」弹窗,导致用户无法停止充电。
+ if (null == one || !isActiveStatus(one.getStatus())) {
// VIN 码充电订单兜底:VD 订单存于 t_vin_charging_order,且后付模式无支付动作,
// 不按 rechargePaymentStatus 过滤;TVinChargingOrder 继承 TChargingOrder,后续组装原样复用
// 状态同样包含已结束(5),保证 VIN 订单结束后前端仍能拿到完成态
@@ -2863,10 +2870,12 @@
.eq(TVinChargingOrder::getDelFlag, 0)
.orderByDesc(TVinChargingOrder::getCreateTime)
.last(" limit 0, 1"));
- if (null == vinOrder) {
- return null;
+ if (null != vinOrder && (isActiveStatus(vinOrder.getStatus()) || null == one || isNewerOrder(vinOrder, one))) {
+ one = vinOrder;
}
- one = vinOrder;
+ }
+ if (null == one) {
+ return null;
}
ChargingDetails chargingDetails = new ChargingDetails();
chargingDetails.setId(one.getId().toString());
@@ -2911,6 +2920,18 @@
}
+ /** 订单是否为未结束状态:2=启动中、3=充电中、4=停止中(5=已结束 不算未结束) */
+ private boolean isActiveStatus(Integer status) {
+ return null != status && status >= 2 && status <= 4;
+ }
+
+ /** candidate 订单创建时间是否晚于 current(createTime 缺失时按“不更晚”处理,保持普通订单优先的历史行为) */
+ private boolean isNewerOrder(TChargingOrder candidate, TChargingOrder current) {
+ return null != candidate.getCreateTime()
+ && (null == current.getCreateTime() || candidate.getCreateTime().isAfter(current.getCreateTime()));
+ }
+
+
/**
* 停止充电操作
*
--
Gitblit v1.7.1