puzhibing
2026-03-11 c98d3f2fc620b3f5d699e2be34eaabc1033b42b2
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpCruiseOrderServiceImpl.java
@@ -52,34 +52,50 @@
     * @param vin
     */
    @Override
    public String updateCruiseOrder(String vin) {
    public Long updateCruiseOrder(String vin) {
        LambdaQueryWrapper<XpCruiseOrder> wrapper = new LambdaQueryWrapper<XpCruiseOrder>().eq(XpCruiseOrder::getVehicleVin, vin).eq(XpCruiseOrder::getStatus, 1);
        XpCruiseOrder xpCruiseOrder = this.getOne(wrapper);
        if (xpCruiseOrder != null) {
            xpCruiseOrder.setStatus(2);
            this.update(xpCruiseOrder, wrapper);
            // todo 给XPU下发订单取消报文,如果取消不成功需要重试。两次不成功,则需要换车
            PushOrderDto pushOrderDto = new PushOrderDto();
            pushOrderDto.setVin(vin);
            pushOrderDto.setOrderId(xpCruiseOrder.getId());
            pushOrderDto.setOperation_type(OrderOperationType.VEHICLE_CANCEL_ORDER);
            pushOrderDto.setOrderId("XU" + xpCruiseOrder.getId());
            pushOrderDto.setOperation_type(OrderOperationType.CLOUD_CANCEL_ORDER);
            R<Boolean> booleanR = orderMissionClient.cancelOrder(pushOrderDto);
            if(booleanR==null || !booleanR.getData()){
                log.error("下发失败重试一次");
                R<Boolean> booleanR1 = orderMissionClient.cancelOrder(pushOrderDto);
                if(booleanR1==null || !booleanR1.getData()){
                    log.error("换车");
                    return null;
                }
                log.error("XPU取消巡游订单失败");
                return null;
            }
            return xpCruiseOrder.getId();
        }
        return null;
    }
    @Override
    public String closeCruiseOrder(String vin) {
    public R updateCruiseOrderId(Long orderId) {
        XpCruiseOrder xpCruiseOrder = this.getById(orderId);
        if (xpCruiseOrder != null) {
            xpCruiseOrder.setStatus(2);
            xpCruiseOrder.setVehicleId(null);
            this.updateById(xpCruiseOrder);
            PushOrderDto pushOrderDto = new PushOrderDto();
            pushOrderDto.setVin(xpCruiseOrder.getVehicleVin());
            pushOrderDto.setOrderId("XU" + xpCruiseOrder.getId());
            pushOrderDto.setOperation_type(OrderOperationType.CLOUD_CANCEL_ORDER);
            R<Boolean> booleanR = orderMissionClient.cancelOrder(pushOrderDto);
            if(booleanR==null || !booleanR.getData()){
                log.error("XPU取消巡游订单失败");
                return R.fail("XPU取消巡游订单失败");
            }
            return R.ok();
        }
        return R.fail("获取订单失败");
    }
    @Override
    public Long closeCruiseOrder(String vin) {
        LambdaQueryWrapper<XpCruiseOrder> wrapper = new LambdaQueryWrapper<XpCruiseOrder>().eq(XpCruiseOrder::getVehicleVin, vin).eq(XpCruiseOrder::getStatus, 1);
        XpCruiseOrder xpCruiseOrder = this.getOne(wrapper);
        if (xpCruiseOrder != null) {
@@ -90,6 +106,8 @@
        return null;
    }
    @Override
    public PageInfo<XpCruiseOrderPageVO> pageList(XpCruiseOrderPageQuery query) {
        PageInfo<XpCruiseOrderPageVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());