From dc1e82defe59e851c97a3fe7d01971316ae2dbf7 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期四, 12 二月 2026 22:19:40 +0800
Subject: [PATCH] refactor(task-order): 优化任务订单中的车辆筛选逻辑
---
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java | 41 ++++++++++++++++++++++-------------------
1 files changed, 22 insertions(+), 19 deletions(-)
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
index 7814e57..36b8812 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
@@ -239,14 +239,14 @@
List<VehiclePosition> positionList = vehiclePositionService.findAvailableVehiclesNearby(Double.parseDouble(split[0]), Double.parseDouble(split[1]), xpTradingStrategy.getOnePushDistance(), xpTradingStrategy.getSimultaneouslyOrderCount());
// 获取车辆的区域信息
- if(positionList.isEmpty()){
+ if (positionList.isEmpty()) {
continue;
}
List<String> vinList = positionList.stream().map(VehiclePosition::getVin).collect(Collectors.toList());
// 获取车辆的信息 筛选出可用车辆
- R<List<String>> vehiclePositionVos = xpVehicleClient.queryVehiclePositionByVin(new VehiclePositionByVinDto(xpElectronicFence.getId(), vinList, xpTradingStrategy.getSimultaneouslyOrderCount()));
- if(vehiclePositionVos.getCode()!=200){
+ R<List<String>> vehiclePositionVos = xpVehicleClient.queryVehiclePositionByVin(new VehiclePositionByVinDto(xpElectronicFence.getId(), vinList, xpTradingStrategy.getSimultaneouslyOrderCount()));
+ if (vehiclePositionVos.getCode() != 200) {
continue;
}
@@ -254,7 +254,7 @@
List<String> data = vehiclePositionVos.getData();
// 找出符合条件的
- availableVehiclesNearby = availableVehiclesNearby.stream().filter(e->data.contains(e.getVin())).collect(Collectors.toList());
+ availableVehiclesNearby = availableVehiclesNearby.stream().filter(e -> data.contains(e.getVin())).collect(Collectors.toList());
// List<VehiclePositionVo> availableVehiclesNearby =vehiclePositionVos.getData();
@@ -384,7 +384,7 @@
if (max1.equals(weightElectricity)) {
// 计算车的分数 分数最大是车的size
- availableVehiclesNearby= availableVehiclesNearby.stream().sorted(Comparator.comparing(VehiclePositionVo::getCurrentElectricity).reversed()).collect(Collectors.toList());
+ availableVehiclesNearby = availableVehiclesNearby.stream().sorted(Comparator.comparing(VehiclePositionVo::getCurrentElectricity).reversed()).collect(Collectors.toList());
int size = tendencyElectricity;
// 做比对的分数
int temp = availableVehiclesNearby.get(0).getCurrentElectricity();
@@ -399,9 +399,9 @@
// 算出总分 再来排序计算
for (VehiclePositionVo vehiclePositionVo : availableVehiclesNearby) {
- vehiclePositionVo.setOrderValueTotal(vehiclePositionVo.getCurrentElectricityScore() + vehiclePositionVo.getDistanceScore() + vehiclePositionVo.getTimeScore() + vehiclePositionVo.getDistanceDifference()+ vehiclePositionVo.getTimeDifference());
+ vehiclePositionVo.setOrderValueTotal(vehiclePositionVo.getCurrentElectricityScore() + vehiclePositionVo.getDistanceScore() + vehiclePositionVo.getTimeScore() + vehiclePositionVo.getDistanceDifference() + vehiclePositionVo.getTimeDifference());
}
- availableVehiclesNearby= availableVehiclesNearby.stream().sorted(Comparator.comparing(VehiclePositionVo::getOrderValueTotal).reversed()).collect(Collectors.toList());
+ availableVehiclesNearby = availableVehiclesNearby.stream().sorted(Comparator.comparing(VehiclePositionVo::getOrderValueTotal).reversed()).collect(Collectors.toList());
int size = tendencyOrderValue;
@@ -517,7 +517,7 @@
Integer secondMax = values.get(1);
// 判断第二大的是哪个
- if(Objects.equals(secondMax, tendencyDistance)){
+ if (Objects.equals(secondMax, tendencyDistance)) {
for (VehiclePositionVo vehiclePosition : availableVehiclesNearby) {
RouteAndFareDto routeAndFareDto = new RouteAndFareDto();
LonLatDto lonLatDto = new LonLatDto();
@@ -551,7 +551,7 @@
}
- if(Objects.equals(secondMax, tendencyTime)){
+ if (Objects.equals(secondMax, tendencyTime)) {
for (VehiclePositionVo vehiclePosition : availableVehiclesNearby) {
RouteAndFareDto routeAndFareDto = new RouteAndFareDto();
LonLatDto lonLatDto = new LonLatDto();
@@ -586,7 +586,7 @@
// 订单价值
- if(Objects.equals(secondMax, tendencyOrderValue)){
+ if (Objects.equals(secondMax, tendencyOrderValue)) {
}
@@ -601,19 +601,24 @@
}
VehiclePositionVo vehiclePositionVo = availableVehiclesNearby.stream().sorted(Comparator.comparing(VehiclePositionVo::getTotal).reversed()).collect(Collectors.toList()).get(0);
-
- VehiclePositionVo vehiclePositionVo1 = vehiclePositionVo;
- RLock lock = redissonClient.getLock("FIND_CAR_" + vehiclePositionVo1.getVin());
+//
+// VehiclePositionVo vehiclePositionVo1 = vehiclePositionVo;
+ RLock lock = redissonClient.getLock("FIND_CAR_" + vehiclePositionVo.getVin());
lock.lock(10, TimeUnit.SECONDS);
try {
- VehiclePosition vehiclePosition = vehiclePositionService.findByVehicleId(vehiclePositionVo.getVehicle_id());
+// VehiclePosition vehiclePosition = vehiclePositionService.findByVehicleId(vehiclePositionVo.getVehicle_id());
+ R<VehiclePosition> vehiclePositionR = xpVehicleClient.findByVehicleVin(vehiclePositionVo.getVin());
+ if (vehiclePositionR.getCode() != 200) {
+ continue;
+ }
+ VehiclePosition vehiclePosition = vehiclePositionR.getData();
if (vehiclePosition.getStatus() != 1 || vehiclePosition.getState() != 0) {
lock.unlock();
continue;
}
- if (vehiclePosition.getHasOrder() == 1) {
- // 关闭巡游单子 TODO
- }
+ // 关闭巡游单子 TODO
+
+
AddTaxiPassengerVo addTaxiPassengerVo = new AddTaxiPassengerVo();
addTaxiPassengerVo.setVin(vehiclePosition.getVin());
addTaxiPassengerVo.setUid(uid);
@@ -622,10 +627,8 @@
addTaxiPassengerVo.setAppId("");
-
BaseVehicleUserDto baseVehicleUserDto = userVehicleClient.addTaxiPassenger(addTaxiPassengerVo);
if (baseVehicleUserDto.getCode() == 200) {
-
// TODO 下单
// 绑定成功 弹出这个队列第一个订单
redisService.popFirstElement(quoteName);
--
Gitblit v1.7.1