From d429cb0403aed7f2b3e205d75d9b55df08c5fbb6 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期二, 10 三月 2026 18:49:39 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java | 88 +++++++++++++++++++++++++++++++++++---------
1 files changed, 70 insertions(+), 18 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 f1eab77..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;
@@ -94,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;
@@ -151,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) {
@@ -570,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();
@@ -584,11 +609,31 @@
//查询车辆信息
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.setVin(xpVehicle.getVehicleVin());
pushOrderDto.setOperation_type(com.xiaopeng.api.vo.automaticPilot.protobuf.OrderOperationType.CLOUD_CANCEL_ORDER);
orderMissionClient.cancelOrder(pushOrderDto);
}
@@ -685,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());
}
@@ -767,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());
}
@@ -1057,6 +1102,20 @@
}
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);
@@ -1082,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) {
@@ -1097,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));
}
// 设置当天的取消次数缓存
@@ -1330,7 +1382,7 @@
cancelTaxiPassengerVo.setUid(uid);
cancelTaxiPassengerVo.setOrderNo(order.getOrderNumber());
// TODO 加配置文件取
- cancelTaxiPassengerVo.setAppId("");
+ cancelTaxiPassengerVo.setAppId(appid);
userVehicleClient.cancelTaxiPassenger(cancelTaxiPassengerVo);
// 修改车辆接单状态
@@ -2237,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