liujie
2026-02-13 fcd206dae9ce45f7ba5a85694882a87249a68234
fix(order): 修复订单处理和车辆服务调用问题

- 修复Redis任务订单状态更新逻辑,添加状态标记位处理
- 修复车辆服务接口调用参数注解缺失问题
- 修复订单取消服务调用参数传递问题
- 修复历史订单查询条件,添加删除状态和完成状态过滤
- 修复订单取消记录创建时间设置问题
- 优化车辆查找逻辑并添加调试日志输出
- 修复乘客绑定服务返回值空指针检查问题
10个文件已修改
30 ■■■■■ 已修改文件
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/order/XpOrderClient.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/vehicleConvoy/XpVehicleClient.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/order/XpOrderCancel.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/VehiclePosition.java 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/model/query/XpHistoryOrderListQuery.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/resources/mapper/order/XpOrderMapper.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-vehicleConvoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/order/XpOrderClient.java
@@ -61,7 +61,7 @@
     * @param orderId 订单id
     */
    @PostMapping("/inner/order/cancelOrder")
    R<?> cancelOrder(String orderId);
    R<?> cancelOrder(@RequestParam("orderId") String orderId);
    /**
xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/vehicleConvoy/XpVehicleClient.java
@@ -40,7 +40,7 @@
     * @return 车辆
     */
    @GetMapping("/inner/vehicle/queryById")
    R<XpVehicle> queryById(Long id);
    R<XpVehicle> queryById(@RequestParam Long id);
    /**
     * 修改车辆信息
     *
@@ -80,5 +80,5 @@
     * @return
     */
    @GetMapping("/inner/vehicle/findByVehicleVin")
    R<XpVehicle> findByVehicleVin(String vehicleVin);
    R<XpVehicle> findByVehicleVin(@RequestParam("vehicleVin") String vehicleVin);
}
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/order/XpOrderCancel.java
@@ -31,7 +31,7 @@
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "主键")
    @TableId(value = "id", type = IdType.AUTO)
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private Long id;
    @ApiModelProperty(value = "订单id")
xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/automaticPilot/VehiclePosition.java
@@ -24,7 +24,6 @@
    /**
     * 车辆VIN
     */
    @Id
    private String vin;
    /**
     * 车辆所属围栏id
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
@@ -100,10 +100,11 @@
            String firstElement = redisService.getFirstElement(name);
            if (firstElement != null) {
                String[] split = firstElement.toString().split("_");
                // 如果市未处理 创建新任务
                // 如果未处理 创建新任务
                if (split[2].equals("0")) {
                    String value = split[0] + "_" + split[1] + "_1" + "_"+split[3] + "_"+ split[4] + "_"+ split[5] + "_"+ split[6] + "_"+ split[7];
                    // 状态改为处理中
//                    redisService.updateFirst(name, split[0] + "_" + split[1] + "_1"+split[3]+split[4]+split[5]+split[6]);
                    redisService.updateFirst(name, value);
                    threadPoolTaskExecutor.submit(() -> {
                        orderProcess(name, firstElement.toString());
                    });
@@ -611,8 +612,11 @@
//
//                    VehiclePositionVo vehiclePositionVo1 = vehiclePositionVo;
                    RLock lock = redissonClient.getLock("FIND_CAR_" + vehiclePositionVo.getVin());
                    lock.lock(10, TimeUnit.SECONDS);
                    System.err.println("队列:"+quoteName+"  车辆:"+vehiclePositionVo.getVin()+"订单"+orderNo);
                    try {
//                        VehiclePosition vehiclePosition = vehiclePositionService.findByVehicleId(vehiclePositionVo.getVehicle_id());
                        R<XpVehicle> vehiclePositionR = xpVehicleClient.findByVehicleVin(vehiclePositionVo.getVin());
@@ -635,7 +639,7 @@
                        BaseVehicleUserDto baseVehicleUserDto = userVehicleClient.addTaxiPassenger(addTaxiPassengerVo);
                        if (baseVehicleUserDto.getCode() == 200) {
                        if (baseVehicleUserDto!=null && baseVehicleUserDto.getCode() == 200) {
                            // TODO 下单
                            // 绑定成功  弹出这个队列第一个订单
                            redisService.popFirstElement(quoteName);
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java
@@ -138,7 +138,7 @@
     * @return 操作结果
     */
    @PostMapping("/inner/order/cancelOrder")
    public R<?> cancelOrder(String orderId){
    public R<?> cancelOrder(@RequestParam("orderId") String orderId){
        xpOrderService.cancelOrder(orderId);
        return R.ok();
    }
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/model/query/XpHistoryOrderListQuery.java
@@ -9,6 +9,6 @@
@ApiModel(value = "XpHistoryOrderListQuery", description = "历史订单列表查询参数")
public class XpHistoryOrderListQuery extends BasePage {
    @ApiModelProperty(value = "订单状态 0=已取消,6=待支付,8=已完成")
    @ApiModelProperty(value = "订单状态9=待评价,10=已完成")
    private Integer status;
}
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -757,6 +757,7 @@
        xpOrderCancel.setUserId(1l);
        xpOrderCancel.setCancelSource(4);
        xpOrderCancel.setCancelReason("系统取消订单");
        xpOrderCancel.setCreateTime(LocalDateTime.now());
        xpOrderCancelService.save(xpOrderCancel);
xp-robotaxi-order-boot/src/main/resources/mapper/order/XpOrderMapper.xml
@@ -47,7 +47,7 @@
    <select id="getHistoryOrderList" resultType="com.xiaopeng.order.model.vo.XpOrderHistoryListVO">
        select start_point_name as originAddress, end_point_name as destinationAddress,
        DATE_FORMAT(create_time, '%H:%i') AS orderTime, pay_money as amount,create_time as time,
        id as orderId from xp_order where app_user_id = #{uid}
        id as orderId from xp_order where app_user_id = #{uid} and is_deleted = 0 and status in (9,10)
        <if test="query.status != null">
            and status = #{query.status}
        </if>
xp-robotaxi-vehicleConvoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/XpVehicleController.java
@@ -90,7 +90,7 @@
     * @return 车辆列表
     */
    @GetMapping("/inner/vehicle/queryById")
    public R<XpVehicle> queryById(Long id) {
    public R<XpVehicle> queryById(@RequestParam Long id) {
        return R.ok(xpVehicleService.getById(id));
    }
    /**
@@ -402,7 +402,7 @@
     * @return
     */
    @GetMapping("/inner/vehicle/findByVehicleVin")
    public R<XpVehicle> findByVehicleVin(String vehicleVin){
    public R<XpVehicle> findByVehicleVin(@RequestParam("vehicleVin") String vehicleVin){
        XpVehicle xpVehicle = xpVehicleService.getOne(new LambdaQueryWrapper<XpVehicle>().eq(XpVehicle::getVehicleVin, vehicleVin));
        return R.ok(xpVehicle);
    }