From 40336cf9405d83bb045cc703e1a8f98264a1a0d5 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期一, 02 三月 2026 14:16:35 +0800
Subject: [PATCH] update
---
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java | 235 ++++++++++++++++++++++++++++++++++++++--------------------
1 files changed, 155 insertions(+), 80 deletions(-)
diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
index 0c6ed38..b85b47f 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -1469,93 +1469,168 @@
// 修改车辆状态
vehicle.setState(0);
- // 获取配置 根据配置判断是否该收车 如果是则找到收车点位进行收车操作
- R<XpTaskRule> xpTaskRuleR = xpTaskRuleClient.queryDetail();
- XpTaskRule xpTaskRule = xpTaskRuleR.getData();
- // 生成新的巡游单子 回到最新巡游的初始起点位置
- XpCruiseOrder xpCruiseOrders = xpCruiseOrderMapper.selectOne(new LambdaQueryWrapper<XpCruiseOrder>().eq(XpCruiseOrder::getVehicleId, vehicle.getId()).eq(XpCruiseOrder::getStatus, 2).orderByDesc(BaseModel::getCreateTime).last("limit 1"));
- int temp=0;
- if(xpCruiseOrders==null){
- temp=1;
- //特殊情况 可能没有产生终止的订单 (到站点就被正常接单了)所以找正常订单
- xpCruiseOrders=xpCruiseOrderMapper.selectOne(new LambdaQueryWrapper<XpCruiseOrder>().eq(XpCruiseOrder::getVehicleId, vehicle.getId()).eq(XpCruiseOrder::getStatus, 3).orderByDesc(BaseModel::getCreateTime).last("limit 1"));
- }
- XpCruiseOrder xpCruiseOrder = new XpCruiseOrder();
- xpCruiseOrder.setVehicleId(vehicle.getId());
- xpCruiseOrder.setFleetId(vehicle.getFleetId());
- xpCruiseOrder.setVehicleVin(vehicle.getVehicleVin());
- xpCruiseOrder.setOrderType(2);
- // 返程起点是当前正常订单的终点
- xpCruiseOrder.setStartPointId(order.getEndPointId());
- xpCruiseOrder.setStartPointName(order.getEndPointName());
- xpCruiseOrder.setStartLon(order.getEndLon());
- xpCruiseOrder.setStartLat(order.getEndLat());
-
- // 完成的直接走终点 终止的走起点
- if(temp==0){
- xpCruiseOrder.setEndPointId(xpCruiseOrders.getStartPointId());
- xpCruiseOrder.setEndPointName(xpCruiseOrders.getStartPointName());
- xpCruiseOrder.setEndLon(xpCruiseOrders.getStartLon());
- xpCruiseOrder.setEndLat(xpCruiseOrders.getStartLat());
- }else {
- xpCruiseOrder.setEndPointId(xpCruiseOrders.getEndPointId());
- xpCruiseOrder.setEndPointName(xpCruiseOrders.getEndPointName());
- xpCruiseOrder.setEndLon(xpCruiseOrders.getEndLon());
- xpCruiseOrder.setEndLat(xpCruiseOrders.getEndLat());
- }
-
-
- xpCruiseOrder.setStatus(0);
- xpCruiseOrder.setLastOrderId(xpCruiseOrders.getId());
- xpCruiseOrder.setCreateTime(LocalDateTime.now());
- xpCruiseOrder.setId("XU"+ IdUtil.fastUUID());
-
- // 判断当前时分秒是否大于收车时间
- LocalTime vehicleCollectionTime = xpTaskRule.getVehicleCollectionTime();
- if (vehicleCollectionTime.isBefore(LocalTime.now())) {
- vehicle.setOperatingStatus(3);
- //找到车辆的收车点位 更新终点点位
- R<XpCruiseOrder> returnCruisePoint = xpCruisePlanClient.findReturnCruisePoint(xpCruiseOrder);
- xpCruiseOrder = returnCruisePoint.getData();
- }
- xpVehicleClient.updateVehicleById(vehicle);
-
- xpCruiseOrderMapper.insert(xpCruiseOrder);
-
-
- R<XpPoint> xpPointR = xpPointClient.queryById(order.getEndPointId());
- XpPoint data = xpPointR.getData();
- //下发命令
- // 添加自动结束行程定时任务job
- Map<String, ? extends Object> jobMaps =
- new ImmutableMap.Builder<String, String>().
- put("id", xpCruiseOrder.getId())
- .build();
- QuartzManager.addJob(
- AddCruiseMissionJob.class,
- (AddCruiseMissionJob.name + xpCruiseOrder.getId()).toUpperCase(),
- TimeJobType.ADD_CRUISE_MISSION,
- DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(data.getParkingTimeLimit())),
- jobMaps
- );
+ addCruiseMission(vehicle,order);
+// // 获取配置 根据配置判断是否该收车 如果是则找到收车点位进行收车操作
+// R<XpTaskRule> xpTaskRuleR = xpTaskRuleClient.queryDetail();
+// XpTaskRule xpTaskRule = xpTaskRuleR.getData();
+//
+// // 生成新的巡游单子 回到最新巡游的初始起点位置
+// XpCruiseOrder xpCruiseOrders = xpCruiseOrderMapper.selectOne(new LambdaQueryWrapper<XpCruiseOrder>().eq(XpCruiseOrder::getVehicleId, vehicle.getId()).eq(XpCruiseOrder::getStatus, 2).orderByDesc(BaseModel::getCreateTime).last("limit 1"));
+// int temp=0;
+// if(xpCruiseOrders==null){
+// temp=1;
+// //特殊情况 可能没有产生终止的订单 (到站点就被正常接单了)所以找正常订单
+// xpCruiseOrders=xpCruiseOrderMapper.selectOne(new LambdaQueryWrapper<XpCruiseOrder>().eq(XpCruiseOrder::getVehicleId, vehicle.getId()).eq(XpCruiseOrder::getStatus, 3).orderByDesc(BaseModel::getCreateTime).last("limit 1"));
+// }
+// XpCruiseOrder xpCruiseOrder = new XpCruiseOrder();
+// xpCruiseOrder.setVehicleId(vehicle.getId());
+// xpCruiseOrder.setFleetId(vehicle.getFleetId());
+// xpCruiseOrder.setVehicleVin(vehicle.getVehicleVin());
+// xpCruiseOrder.setOrderType(2);
+// // 返程起点是当前正常订单的终点
+// xpCruiseOrder.setStartPointId(order.getEndPointId());
+// xpCruiseOrder.setStartPointName(order.getEndPointName());
+// xpCruiseOrder.setStartLon(order.getEndLon());
+// xpCruiseOrder.setStartLat(order.getEndLat());
+//
+// // 完成的直接走终点 终止的走起点
+// if(temp==0){
+// xpCruiseOrder.setEndPointId(xpCruiseOrders.getStartPointId());
+// xpCruiseOrder.setEndPointName(xpCruiseOrders.getStartPointName());
+// xpCruiseOrder.setEndLon(xpCruiseOrders.getStartLon());
+// xpCruiseOrder.setEndLat(xpCruiseOrders.getStartLat());
+// }else {
+// xpCruiseOrder.setEndPointId(xpCruiseOrders.getEndPointId());
+// xpCruiseOrder.setEndPointName(xpCruiseOrders.getEndPointName());
+// xpCruiseOrder.setEndLon(xpCruiseOrders.getEndLon());
+// xpCruiseOrder.setEndLat(xpCruiseOrders.getEndLat());
+// }
+//
+//
+// xpCruiseOrder.setStatus(0);
+// xpCruiseOrder.setLastOrderId(xpCruiseOrders.getId());
+// xpCruiseOrder.setCreateTime(LocalDateTime.now());
+// xpCruiseOrder.setId("XU"+ IdUtil.fastUUID());
+//
+// // 判断当前时分秒是否大于收车时间
+// LocalTime vehicleCollectionTime = xpTaskRule.getVehicleCollectionTime();
+// if (vehicleCollectionTime.isBefore(LocalTime.now())) {
+// vehicle.setOperatingStatus(3);
+// //找到车辆的收车点位 更新终点点位
+// R<XpCruiseOrder> returnCruisePoint = xpCruisePlanClient.findReturnCruisePoint(xpCruiseOrder);
+// xpCruiseOrder = returnCruisePoint.getData();
+// }
+// xpVehicleClient.updateVehicleById(vehicle);
+//
+// xpCruiseOrderMapper.insert(xpCruiseOrder);
+//
+//
+// R<XpPoint> xpPointR = xpPointClient.queryById(order.getEndPointId());
+// XpPoint data = xpPointR.getData();
+// //下发命令
+// // 添加自动结束行程定时任务job
+// Map<String, ? extends Object> jobMaps =
+// new ImmutableMap.Builder<String, String>().
+// put("id", xpCruiseOrder.getId())
+// .build();
+// QuartzManager.addJob(
+// AddCruiseMissionJob.class,
+// (AddCruiseMissionJob.name + xpCruiseOrder.getId()).toUpperCase(),
+// TimeJobType.ADD_CRUISE_MISSION,
+// DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(data.getParkingTimeLimit())),
+// jobMaps
+// );
}
-
-
-
-
-
-
-
-
-
-
-
}
+ /**
+ * 添加巡游任务下发命令
+ * @param vehicle
+ * @param order
+ */
+
+ public void addCruiseMission(XpVehicle vehicle, XpOrder order) {
+
+ if(order.getStatus()!=8){
+ return;
+ }
+
+ // 获取配置 根据配置判断是否该收车 如果是则找到收车点位进行收车操作
+ R<XpTaskRule> xpTaskRuleR = xpTaskRuleClient.queryDetail();
+ XpTaskRule xpTaskRule = xpTaskRuleR.getData();
+
+ // 生成新的巡游单子 回到最新巡游的初始起点位置
+ XpCruiseOrder xpCruiseOrders = xpCruiseOrderMapper.selectOne(new LambdaQueryWrapper<XpCruiseOrder>().eq(XpCruiseOrder::getVehicleId, vehicle.getId()).eq(XpCruiseOrder::getStatus, 2).orderByDesc(BaseModel::getCreateTime).last("limit 1"));
+ int temp=0;
+ if(xpCruiseOrders==null){
+ temp=1;
+ //特殊情况 可能没有产生终止的订单 (到站点就被正常接单了)所以找正常订单
+ xpCruiseOrders=xpCruiseOrderMapper.selectOne(new LambdaQueryWrapper<XpCruiseOrder>().eq(XpCruiseOrder::getVehicleId, vehicle.getId()).eq(XpCruiseOrder::getStatus, 3).orderByDesc(BaseModel::getCreateTime).last("limit 1"));
+ }
+ XpCruiseOrder xpCruiseOrder = new XpCruiseOrder();
+ xpCruiseOrder.setVehicleId(vehicle.getId());
+ xpCruiseOrder.setFleetId(vehicle.getFleetId());
+ xpCruiseOrder.setVehicleVin(vehicle.getVehicleVin());
+ xpCruiseOrder.setOrderType(2);
+ // 返程起点是当前正常订单的终点
+ xpCruiseOrder.setStartPointId(order.getEndPointId());
+ xpCruiseOrder.setStartPointName(order.getEndPointName());
+ xpCruiseOrder.setStartLon(order.getEndLon());
+ xpCruiseOrder.setStartLat(order.getEndLat());
+
+ // 完成的直接走终点 终止的走起点
+ if(temp==0){
+ xpCruiseOrder.setEndPointId(xpCruiseOrders.getStartPointId());
+ xpCruiseOrder.setEndPointName(xpCruiseOrders.getStartPointName());
+ xpCruiseOrder.setEndLon(xpCruiseOrders.getStartLon());
+ xpCruiseOrder.setEndLat(xpCruiseOrders.getStartLat());
+ }else {
+ xpCruiseOrder.setEndPointId(xpCruiseOrders.getEndPointId());
+ xpCruiseOrder.setEndPointName(xpCruiseOrders.getEndPointName());
+ xpCruiseOrder.setEndLon(xpCruiseOrders.getEndLon());
+ xpCruiseOrder.setEndLat(xpCruiseOrders.getEndLat());
+ }
+
+
+ xpCruiseOrder.setStatus(0);
+ xpCruiseOrder.setLastOrderId(xpCruiseOrders.getId());
+ xpCruiseOrder.setCreateTime(LocalDateTime.now());
+ xpCruiseOrder.setId("XU"+ IdUtil.fastUUID());
+
+ // 判断当前时分秒是否大于收车时间
+ LocalTime vehicleCollectionTime = xpTaskRule.getVehicleCollectionTime();
+ if (vehicleCollectionTime.isBefore(LocalTime.now())) {
+ vehicle.setOperatingStatus(3);
+ //找到车辆的收车点位 更新终点点位
+ R<XpCruiseOrder> returnCruisePoint = xpCruisePlanClient.findReturnCruisePoint(xpCruiseOrder);
+ xpCruiseOrder = returnCruisePoint.getData();
+ }
+ xpVehicleClient.updateVehicleById(vehicle);
+
+ xpCruiseOrderMapper.insert(xpCruiseOrder);
+
+
+ R<XpPoint> xpPointR = xpPointClient.queryById(order.getEndPointId());
+ XpPoint data = xpPointR.getData();
+ //下发命令
+ // 添加自动结束行程定时任务job
+ Map<String, ? extends Object> jobMaps =
+ new ImmutableMap.Builder<String, String>().
+ put("id", xpCruiseOrder.getId())
+ .build();
+ QuartzManager.addJob(
+ AddCruiseMissionJob.class,
+ (AddCruiseMissionJob.name + xpCruiseOrder.getId()).toUpperCase(),
+ TimeJobType.ADD_CRUISE_MISSION,
+ DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(data.getParkingTimeLimit())),
+ jobMaps
+ );
+ }
+
private MileageDto mileageType(MileageDto param, JSONArray startingFareJsonArray, Date mileageDate, LocalDateTime begin, String num14, String num16, String num17, String num21, String num22, String num24, String num25, String num30, String num31) {
// 计算出是在哪个普通时间段内
for (Object o : startingFareJsonArray) {
--
Gitblit v1.7.1