From eecc2a5240a4b9389d8396d36624055da808ad9b Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期六, 28 二月 2026 11:40:01 +0800
Subject: [PATCH] feat(management):订单改派逻辑完善、收车定时任务逻辑完善
---
xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java | 44 ++++++++++++++++++++++++++++++++++----------
1 files changed, 34 insertions(+), 10 deletions(-)
diff --git a/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java b/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java
index 4d98c05..8d09c4f 100644
--- a/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java
+++ b/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java
@@ -11,6 +11,7 @@
import com.xiaopeng.api.feignClient.operation.XpElectronicClient;
import com.xiaopeng.api.feignClient.order.XpOrderClient;
import com.xiaopeng.api.model.operation.XpElectronicFence;
+import com.xiaopeng.api.model.operation.XpElectronicFenceArea;
import com.xiaopeng.api.model.order.XpOrder;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicleAnnualRecord;
@@ -83,22 +84,45 @@
}
@Override
- public List<XpVehicle> listAvailableVehicles() {
- // 构建查询条件
- LambdaQueryWrapper<XpVehicle> wrapper = new LambdaQueryWrapper<>();
+ public List<XpVehicle> listAvailableVehicles(Long orderId) {
+ // 1. 通过订单ID查询订单信息,获取区域ID
+ R<XpOrder> orderResult = xpOrderClient.queryOrderById(orderId);
+ if (orderResult == null || orderResult.getData() == null) {
+ log.warn("查询订单失败,orderId: {}", orderId);
+ return Collections.emptyList();
+ }
- // 必要条件:可改派车辆的4个核心条件
- wrapper.ne(XpVehicle::getStatus, 3) // 状态不是保险/年检过期
- .isNotNull(XpVehicle::getStatus)
- .eq(XpVehicle::getOperatingStatus, 1) // 运营中
- .eq(XpVehicle::getAcceptOrTest, 1) // 接单模式
- .eq(XpVehicle::getAcceptOrTestStatus, 1); // 开始接单
+ XpOrder order = orderResult.getData();
+ Long areaId = order.getXpElectronicFenceAreaId();
+
+ if (areaId == null) {
+ log.warn("订单区域ID为空,orderId: {}", orderId);
+ return Collections.emptyList();
+ }
+
+ // 2. 通过区域ID查询围栏ID
+ R<XpElectronicFenceArea> areaResult = xpElectronicClient.queryElectronicFenceAreaById(areaId);
+ if (areaResult == null || areaResult.getData() == null) {
+ log.warn("查询围栏区域失败,areaId: {}", areaId);
+ return Collections.emptyList();
+ }
+
+ Long electronicId = areaResult.getData().getElectronicId();
+ if (electronicId == null) {
+ log.warn("围栏ID为空,areaId: {}", areaId);
+ return Collections.emptyList();
+ }
+
+ // 3. 根据围栏ID查询车辆列表 (operatingStatus=1 且 state=0)
+ LambdaQueryWrapper<XpVehicle> wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(XpVehicle::getElectronicId, electronicId)
+ .eq(XpVehicle::getOperatingStatus, 1)
+ .eq(XpVehicle::getState, 0);
// 排序:按电量降序、入库时间降序
wrapper.orderByDesc(XpVehicle::getCurrentElectricity)
.orderByDesc(XpVehicle::getWarehousingTime);
- // 执行查询
return this.list(wrapper);
}
--
Gitblit v1.7.1