xuhy
2026-04-16 498f946f8cb0a451bc21244fa1801215bb329156
[fix]连环派代-将连环派的订单流过程从事件监听处挪到orderService
3个文件已修改
67 ■■■■■ 已修改文件
xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/map/RouteAndFareDto.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/map/RouteAndFareDto.java
@@ -33,7 +33,4 @@
    @ApiModelProperty("车辆id")
    private Long vehicleId;
    public RouteAndFareDto() {
    }
}
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
@@ -443,7 +443,7 @@
                    // 给连环派单的用户推送
                    Long nextOrderId = redisService.getCacheObject(CacheConstants.nextOrder(order_id));
                    if (null != nextOrderId){
                        dto.setOrderId(orderId);
                        dto.setOrderId(nextOrderId);
                        xpPushMessageClient.pushOrderRoute(dto);
                    }
                    xpOrderClient.saveVehicleLocation(orderTrajectory);
@@ -1202,26 +1202,6 @@
                    log.info("到达目的地,不做任何处理:{}", orderId);
                    break;
                case ORDER_WAITING_FOR_DROPOFF:
                    Long id = redisService.getCacheObject(CacheConstants.nextOrder(orderId));
                    if(id != null){
                        scheduler.schedule(() -> {
                            XpOrder xpOrder = xpOrderClient.queryOrderById(id).getData();
                            XpVehicle xpVehicle = xpVehicleClient.queryById(xpOrder.getVehicleId()).getData();
                            PushOrderDto pushOrderDto = new PushOrderDto();
                            pushOrderDto.setOrderId(xpOrder.getId().toString());
                            pushOrderDto.setStartLatitude(xpOrder.getStartLat());
                            pushOrderDto.setStartLongitude(xpOrder.getStartLon());
                            pushOrderDto.setEndLatitude(xpOrder.getEndLat());
                            pushOrderDto.setEndLongitude(xpOrder.getEndLon());
                            pushOrderDto.setEndPoiName(xpOrder.getEndPointName());
                            pushOrderDto.setOrderType(OrderType.USER_ORDER);
                            pushOrderDto.setStage(1);
                            pushOrderDto.setVin(xpVehicle.getVehicleVin());
                            orderMissionClient.pushOrder(pushOrderDto);
                        }, 3, TimeUnit.MINUTES);
                        break;
                    }
                    //等待乘客下车,开始倒计时发下巡游单
                    if(!orderId.contains("XU")){
                        if(orderId.contains("TEST")){
@@ -1231,7 +1211,6 @@
                            xpOrderClient.updateOrderStatus(Long.parseLong(orderId), OrderStatusEnum.SEE_OFF_GUESTS.getCode());
                        }
                    }
                    break;
                case ORDER_DROPOFF_COMPLETED:
                    //下车完成,不需要处理状态,由后续的乘客主动触发或者定时任务触发
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -1918,6 +1918,8 @@
                        DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(arriveTime)),
                        endTripJobMaps
                );
                // 添加车辆到达终点后限停时间到后驶离的定时任务
                //时间到后将车辆状态回滚到空闲、添加巡游订单,解绑用户和车辆关系,车辆驶离点位
                XpPoint point = xpPointClient.queryById(xpOrder.getEndPointId()).getData();
@@ -1927,13 +1929,38 @@
                                .put("appid", appid)
                                .put("orderType", OrderType.USER_ORDER)
                                .build();
                QuartzManager.addJob(
                        AddCruiseMissionJob.class,
                        (AddCruiseMissionJob.name + xpOrder.getId()).toUpperCase(),
                        TimeJobType.ADD_CRUISE_MISSION,
                        DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(point.getParkingTimeLimit())),
                        jobMaps
                );
                Long id = redisService.getCacheObject(CacheConstants.nextOrder(xpOrder.getId().toString()));
                if(id != null){
                    XpOrder nextOrder = getById(id);
                    XpVehicle nextVehicle = xpVehicleClient.queryById(nextOrder.getVehicleId()).getData();
                    PushOrderDto pushOrderDto = new PushOrderDto();
                    pushOrderDto.setOrderId(nextOrder.getId().toString());
                    pushOrderDto.setStartLatitude(nextOrder.getStartLat());
                    pushOrderDto.setStartLongitude(nextOrder.getStartLon());
                    pushOrderDto.setEndLatitude(nextOrder.getEndLat());
                    pushOrderDto.setEndLongitude(nextOrder.getEndLon());
                    pushOrderDto.setEndPoiName(nextOrder.getEndPointName());
                    pushOrderDto.setOrderType(OrderType.USER_ORDER);
                    pushOrderDto.setStage(1);
                    pushOrderDto.setVin(nextVehicle.getVehicleVin());
                    orderMissionClient.pushOrder(pushOrderDto);
                    QuartzManager.addJob(
                            AddCruiseMissionJob.class,
                            (AddCruiseMissionJob.name + nextOrder.getId()).toUpperCase(),
                            TimeJobType.ADD_CRUISE_MISSION,
                            DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(point.getParkingTimeLimit())),
                            jobMaps
                    );
                } else {
                    QuartzManager.addJob(
                            AddCruiseMissionJob.class,
                            (AddCruiseMissionJob.name + xpOrder.getId()).toUpperCase(),
                            TimeJobType.ADD_CRUISE_MISSION,
                            DateUtils.localDateTimeToDate(LocalDateTime.now().plusMinutes(point.getParkingTimeLimit())),
                            jobMaps
                    );
                }
                break;
            default:
                break;