From eb290fd6e70b6523ea0889936dba4d9f2d5c4b53 Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期二, 10 三月 2026 18:58:39 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java | 101 +++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 78 insertions(+), 23 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 5ccd271..0aa963b 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
@@ -25,6 +25,7 @@
import com.xiaopeng.api.dto.statistics.OrderStatisticsDTO;
import com.xiaopeng.api.dto.statistics.StatisticsQueryDTO;
import com.xiaopeng.api.dto.vehicleConvoy.BaseVehicleUserDto;
+import com.xiaopeng.api.dto.vehicleConvoy.UpdateVehicleStateDto;
import com.xiaopeng.api.feignClient.account.UserResourcesClient;
import com.xiaopeng.api.feignClient.account.XpAppUserCouponClient;
import com.xiaopeng.api.feignClient.automaticPilot.OrderMissionClient;
@@ -46,8 +47,7 @@
import com.xiaopeng.api.vo.OrderType;
import com.xiaopeng.api.vo.account.UserCouponVo;
import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
-// import com.xiaopeng.api.vo.automaticPilot.protobuf.OrderOperationType;
-import com.xiaopeng.api.vo.automaticPilot.proto.down.cloudOrderOperation.OrderOperationType;
+import com.xiaopeng.api.vo.automaticPilot.protobuf.OrderOperationType;
import com.xiaopeng.api.vo.operation.RouteVo;
import com.xiaopeng.api.vo.order.*;
import com.xiaopeng.api.vo.vehicleConvoy.AddTaxiPassengerVo;
@@ -95,6 +95,7 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
@@ -152,8 +153,10 @@
private MongoTemplate mongoTemplate;
@Autowired
private HolidayUtil holidayUtil;
-// @Autowired
-// private XpPricingUtil xpPricingUtil;
+
+ @Value("${robotaxi.appId:xp_robotaxi_api}")
+ private String appid;
+
@Override
public OrderStatisticsDTO getOrderStatistics(StatisticsQueryDTO query) {
@@ -571,6 +574,27 @@
* 取消订单
*/
private void cancelOrder(XpOrder order) {
+ redisService.removeByPattern(order.getQueueName(),order.getOrderNumber());
+ //判断还原车辆状态
+ if(null == order.getVehicleId()){
+ Object cacheObject1 = redisService.getCacheObject("CREATE_ORDER:" + order.getId().toString());
+ if(null != cacheObject1){
+ com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSON.parseObject(cacheObject1.toString());
+ String vin = jsonObject.getString("vin");
+ XpVehicle vehicle = xpVehicleClient.findByVehicleVin(vin).getData();
+ if(null != vehicle && 0 != vehicle.getState()){
+ vehicle.setState(0);
+ xpVehicleClient.updateVehicleById(vehicle);
+ }
+ }
+ }
+
+ if (order.getStatus() == 1) {
+ order.setStatus(0);
+ order.setAppUserId(null);
+ baseMapper.updateById(order);
+ return;
+ }
// 1. 更新订单状态为已取消(0)
lambdaUpdate().set(XpOrder::getStatus, 0)
.eq(XpOrder::getId, order.getId()).update();
@@ -585,12 +609,32 @@
//查询车辆信息
R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(order.getId());
if (xpVehicleR.getCode() == HttpStatus.SUCCESS && Objects.nonNull(xpVehicleR.getData())) {
+ XpVehicle xpVehicle = xpVehicleR.getData();
+ // 组装调用车机参数
+ CancelTaxiPassengerVo cancelTaxiPassengerVo = new CancelTaxiPassengerVo();
+ cancelTaxiPassengerVo.setVin(xpVehicle.getVehicleVin());
+ cancelTaxiPassengerVo.setUid(order.getAppUserId().toString());
+ cancelTaxiPassengerVo.setOrderNo(order.getOrderNumber());
+ // TODO 加配置文件取
+ cancelTaxiPassengerVo.setAppId(appid);
+
+ BaseVehicleUserDto baseVehicleUserDto = userVehicleClient.cancelTaxiPassenger(cancelTaxiPassengerVo);
+ if (baseVehicleUserDto == null) {
+ // TODO 本地无法调通
+// throw new RuntimeException("取消订单失败");
+ }
+
+ //还原车辆状态
+ if(1 == xpVehicle.getState()){
+ xpVehicleClient.updateVehicleStatus(new UpdateVehicleStateDto(xpVehicle.getVehicleVin(), 0));
+ }
+
// 下发命令
if (order.getStatus() > 1) {
PushOrderDto pushOrderDto = new PushOrderDto();
pushOrderDto.setOrderId(order.getId().toString());
- pushOrderDto.setVin(xpVehicleR.getData().getVehicleVin());
- // pushOrderDto.setOperation_type(com.xiaopeng.api.vo.automaticPilot.protobuf.OrderOperationType.CLOUD_CANCEL_ORDER);
+ pushOrderDto.setVin(xpVehicle.getVehicleVin());
+ pushOrderDto.setOperation_type(com.xiaopeng.api.vo.automaticPilot.protobuf.OrderOperationType.CLOUD_CANCEL_ORDER);
orderMissionClient.cancelOrder(pushOrderDto);
}
} else {
@@ -676,7 +720,7 @@
PushOrderDto cancelDto = new PushOrderDto();
cancelDto.setOrderId(order.getId().toString());
cancelDto.setVin(oldVehicle.getVehicleVin());
- // cancelDto.setOperation_type(com.xiaopeng.api.vo.automaticPilot.protobuf.OrderOperationType.CLOUD_CANCEL_ORDER);
+ cancelDto.setOperation_type(com.xiaopeng.api.vo.automaticPilot.protobuf.OrderOperationType.CLOUD_CANCEL_ORDER);
orderMissionClient.cancelOrder(cancelDto);
log.info("已取消原车辆订单指令,订单ID: {}, VIN: {}", orderId, oldVehicle.getVehicleVin());
@@ -686,7 +730,7 @@
cancelVo.setVin(oldVehicle.getVehicleVin());
cancelVo.setUid(order.getAppUserId().toString());
cancelVo.setOrderNo(order.getOrderNumber());
- cancelVo.setAppId("");
+ cancelVo.setAppId(appid);
userVehicleClient.cancelTaxiPassenger(cancelVo);
log.info("已解绑乘客与原车辆关系,用户ID: {}, VIN: {}", order.getAppUserId(), oldVehicle.getVehicleVin());
}
@@ -768,7 +812,7 @@
addVo.setVin(newVehicle.getVehicleVin());
addVo.setUid(order.getAppUserId().toString());
addVo.setOrderNo(order.getOrderNumber());
- addVo.setAppId(""); // TODO 获取appId
+ addVo.setAppId(appid); // TODO 获取appId
userVehicleClient.addTaxiPassenger(addVo);
log.info("已绑定乘客与新车辆关系,用户ID: {}, VIN: {}", order.getAppUserId(), newVehicle.getVehicleVin());
}
@@ -1056,6 +1100,22 @@
if (order.getStatus() > 5 || order.getStatus() < 1) {
throw new ServiceException("订单状态错误", I18nKeyConstant.ORDER_STATUS_ERROR);
}
+
+ redisService.removeByPattern(order.getQueueName(),order.getOrderNumber());
+ //判断还原车辆状态
+ if(null == order.getVehicleId()){
+ Object cacheObject1 = redisService.getCacheObject("CREATE_ORDER:" + order.getId().toString());
+ if(null != cacheObject1){
+ com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSON.parseObject(cacheObject1.toString());
+ String vin = jsonObject.getString("vin");
+ XpVehicle vehicle = xpVehicleClient.findByVehicleVin(vin).getData();
+ if(null != vehicle && 0 != vehicle.getState()){
+ vehicle.setState(0);
+ xpVehicleClient.updateVehicleById(vehicle);
+ }
+ }
+ }
+
if (order.getStatus() == 1) {
order.setStatus(0);
order.setAppUserId(null);
@@ -1081,7 +1141,7 @@
cancelTaxiPassengerVo.setUid(order.getAppUserId().toString());
cancelTaxiPassengerVo.setOrderNo(order.getOrderNumber());
// TODO 加配置文件取
- cancelTaxiPassengerVo.setAppId("");
+ cancelTaxiPassengerVo.setAppId(appid);
BaseVehicleUserDto baseVehicleUserDto = userVehicleClient.cancelTaxiPassenger(cancelTaxiPassengerVo);
if (baseVehicleUserDto == null) {
@@ -1096,16 +1156,9 @@
xpOrderCancel.setCancelSource(1);
xpOrderCancel.setCancelReason("用户取消订单");
xpOrderCancelService.save(xpOrderCancel);
- //判断还原车辆状态
- Object cacheObject1 = redisService.getCacheObject("CREATE_ORDER:" + order.getId().toString());
- if(null != cacheObject1){
- com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSON.parseObject(cacheObject1.toString());
- String vin = jsonObject.getString("vin");
- XpVehicle vehicle = xpVehicleClient.findByVehicleVin(vin).getData();
- if(null != vehicle && 0 != vehicle.getState()){
- vehicle.setState(0);
- xpVehicleClient.updateVehicleById(vehicle);
- }
+ //还原车辆状态
+ if(1 == xpVehicle.getState()){
+ xpVehicleClient.updateVehicleStatus(new UpdateVehicleStateDto(xpVehicle.getVehicleVin(), 0));
}
// 设置当天的取消次数缓存
@@ -1140,7 +1193,7 @@
PushOrderDto pushOrderDto = new PushOrderDto();
pushOrderDto.setOrderId(order.getId().toString());
pushOrderDto.setVin(xpVehicle.getVehicleVin());
- // pushOrderDto.setOperation_type(com.xiaopeng.api.vo.automaticPilot.protobuf.OrderOperationType.VEHICLE_CANCEL_ORDER);
+ pushOrderDto.setOperation_type(com.xiaopeng.api.vo.automaticPilot.protobuf.OrderOperationType.VEHICLE_CANCEL_ORDER);
orderMissionClient.cancelOrder(pushOrderDto);
}
@@ -1163,6 +1216,8 @@
xpOrderCancel.setCancelReason("系统取消订单");
xpOrderCancel.setCreateTime(LocalDateTime.now());
xpOrderCancelService.save(xpOrderCancel);
+
+ redisService.removeByPattern(order.getQueueName(),order.getOrderNumber());
R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(order.getVehicleId());
@@ -1327,7 +1382,7 @@
cancelTaxiPassengerVo.setUid(uid);
cancelTaxiPassengerVo.setOrderNo(order.getOrderNumber());
// TODO 加配置文件取
- cancelTaxiPassengerVo.setAppId("");
+ cancelTaxiPassengerVo.setAppId(appid);
userVehicleClient.cancelTaxiPassenger(cancelTaxiPassengerVo);
// 修改车辆接单状态
@@ -2234,7 +2289,7 @@
this.updateById(order);
addTaxiPassengerVo.setOrderNo(order.getOrderNumber());
// TODO appid
- addTaxiPassengerVo.setAppId("");
+ addTaxiPassengerVo.setAppId(appid);
userVehicleClient.addTaxiPassenger(addTaxiPassengerVo);
//推送乘客车辆到达预约点的导航数据
sendRoute(addTaxiPassengerVo.getUid(), orderId, "ORDER_NAVIGATION_START_DATA", dto.getXpVehicleVin());
--
Gitblit v1.7.1