From 66e7a83f20944f1285bd869110e123564c7f9867 Mon Sep 17 00:00:00 2001
From: yyy <1083599556@qq.com>
Date: 星期三, 29 四月 2026 14:12:07 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/1.0' into 1.0
---
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java | 31 ++++++++++++++++++++++++++-----
1 files changed, 26 insertions(+), 5 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 caeb89a..53023d0 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
@@ -46,6 +46,7 @@
import com.xiaopeng.api.model.vehicleConvoy.XpFleet;
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.api.vo.OrderType;
+import com.xiaopeng.api.vo.account.CalculateDiscountAmountVo;
import com.xiaopeng.api.vo.account.UserCouponVo;
import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
import com.xiaopeng.api.vo.automaticPilot.protobuf.OrderOperationType;
@@ -266,8 +267,8 @@
}
List<XpOrder> list = this.list(wrapper);
- BigDecimal orderMoney = list.stream().map(XpOrder::getOrderMoney).collect(Collectors.toList()).stream().reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
- BigDecimal couponMoney = list.stream().map(XpOrder::getCouponMoney).collect(Collectors.toList()).stream().reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
+ BigDecimal orderMoney = list.stream().filter(order -> Objects.nonNull(order.getOrderMoney())).map(XpOrder::getOrderMoney).collect(Collectors.toList()).stream().reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
+ BigDecimal couponMoney = list.stream().filter(order -> Objects.nonNull(order.getCouponMoney())).map(XpOrder::getCouponMoney).collect(Collectors.toList()).stream().reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
// 2. 分页查询
Page<XpOrder> page = new Page<>(query.getPageNum(), query.getPageSize());
@@ -1013,6 +1014,16 @@
if (Objects.isNull(newVehicle.getState()) || newVehicle.getState() != 0) {
throw new ServiceException("新车辆已接单,请重新选择", I18nKeyConstant.ORDER_REASSIGN_NEW_VEHICLE_NOT_FREE);
+ }
+ if (newVehicle.getOperatingStatus() != 1){
+ throw new ServiceException("新车辆状态为非运营状态,请重新选择", I18nKeyConstant.ORDER_REASSIGN_NEW_VEHICLE_NOT_OPERATIONAL);
+ }
+ VehiclePosition vehiclePosition = mongoTemplate.findOne(Query.query(Criteria.where("vin").is(newVehicle.getVehicleVin())), VehiclePosition.class);
+ if(null == vehiclePosition){
+ throw new ServiceException("未能获取到新车的定位数据,请重新选择", I18nKeyConstant.ORDER_REASSIGN_NEW_VEHICLE_NOT_POSITION);
+ }
+ if(vehiclePosition.getCurrentElectricity() < 20){
+ throw new ServiceException("新车电量不足,请重新选择", I18nKeyConstant.ORDER_REASSIGN_NEW_VEHICLE_BATTERY_LOW);
}
// 6. 保存原车辆和车队信息
@@ -3096,8 +3107,15 @@
}
@Override
- public R<FareBreakdownVo> fareBreakdown(Long orderId, String uid) {
- XpOrder order = this.getById(orderId);
+ public R<FareBreakdownVo> fareBreakdown(com.xiaopeng.order.vo.FareBreakdownVo vo, String uid) {
+ XpOrder order = this.getById(vo.getOrderId());
+ //根据新的优惠券计算优惠金额
+ if(null != order.getCouponId()){
+ CalculateDiscountAmountVo discountAmountVo = new CalculateDiscountAmountVo();
+ BigDecimal data = xpAppUserCouponClient.calculateDiscountAmount(discountAmountVo).getData();
+ order.setCouponId(vo.getUserCouponId());
+ order.setCouponMoney(data);
+ }
order.setAppUserId(null);
FareBreakdownVo res = new FareBreakdownVo();
res.setChangeMoneyFlag(order.getChangeMoneyFlag());
@@ -3107,7 +3125,7 @@
List<FareBreakdownDetailVo> duration = new ArrayList<>();
List<FareBreakdownDetailVo> longDistance = new ArrayList<>();
- List<XpOrderDetail> xpOrderDetails = xpOrderDetailMapper.selectList(new LambdaQueryWrapper<XpOrderDetail>().eq(XpOrderDetail::getOrderId, orderId));
+ List<XpOrderDetail> xpOrderDetails = xpOrderDetailMapper.selectList(new LambdaQueryWrapper<XpOrderDetail>().eq(XpOrderDetail::getOrderId, vo.getOrderId()));
for (XpOrderDetail xpOrderDetail : xpOrderDetails) {
FareBreakdownDetailVo detail = new FareBreakdownDetailVo();
detail.setType(xpOrderDetail.getType());
@@ -3131,6 +3149,7 @@
res.setDuration(duration);
res.setLongDistance(longDistance);
res.setRedPacketMoney(order.getRedPacketMoney());
+ res.setUserCouponId(order.getCouponId());
res.setCouponMoney(order.getCouponMoney());
res.setOrderMoney(order.getOrderMoney());
res.setKilometer(order.getMileageKilometers() == null ? BigDecimal.ZERO : BigDecimal.valueOf(order.getMileageKilometers()).multiply(BigDecimal.valueOf(1000)));
@@ -3149,6 +3168,8 @@
return R.ok(res);
}
+
+
@Override
public R payment(XpOrderPayDto dto, String uid) {
// mvp版本不做支付 使用优惠券抵扣为0元订单处理 处理订单状态即可
--
Gitblit v1.7.1