puzhibing
2026-03-03 2b16a4c512804ed48825d272a996f0d31eb3d1a3
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
@@ -9,6 +9,7 @@
import com.xiaopeng.api.dto.operation.CruisePointDto;
import com.xiaopeng.api.dto.operation.LonLatDto;
import com.xiaopeng.api.dto.operation.ReassignOrderDTO;
import com.xiaopeng.api.dto.order.AddCruiseMissionDto;
import com.xiaopeng.api.dto.order.PopOrderDto;
import com.xiaopeng.api.dto.pushMessage.PushOrderRouteDTO;
import com.xiaopeng.api.dto.pushMessage.SendMessageDTO;
@@ -22,6 +23,7 @@
import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient;
import com.xiaopeng.api.model.order.XpCruiseOrder;
import com.xiaopeng.api.model.order.XpOrder;
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.SystemEventType;
@@ -107,6 +109,7 @@
    @Resource
    private XpCruisePlanClient xpCruisePlanClient;
@@ -786,6 +789,26 @@
                    //下车完成
                    buildPushOrderStatus(orderId, OrderStatusEnum.APPROVAL_REJECTION, sequence);
                    xpOrderClient.updateOrderStatus(Long.parseLong(orderId), OrderStatusEnum.APPROVAL_REJECTION.getCode());
                    // 下发巡游任务
                    R<XpOrder> xpOrderR = xpOrderClient.queryOrderById(Long.parseLong(orderId));
                    if(xpOrderR.getCode()==200){
                        XpOrder orderData = xpOrderR.getData();
                        Long vehicleId =orderData.getVehicleId();
                        R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(vehicleId);
                        if(xpVehicleR.getData()!=null){
                            XpVehicle xpVehicle = xpVehicleR.getData();
                            AddCruiseMissionDto addCruiseMissionDto = new AddCruiseMissionDto();
                            addCruiseMissionDto.setOrder(orderData);
                            addCruiseMissionDto.setVehicle(xpVehicle);
                            xpCruiseOrderClient.addCruiseMission(addCruiseMissionDto);
                        }
                    }
                    break;
                case ORDER_COMPLETED:
                    //已完成
@@ -850,24 +873,25 @@
                            lastXpCruiseOrder.setId("XU"+ IdUtil.fastUUID());
                            lastXpCruiseOrder.setStatus(1);
                            xpCruiseOrderClient.addCruiseOrder(lastXpCruiseOrder);
                            // 获取点位id
                            Long endPointId = xpCruiseOrder.getEndPointId();
                            // 获取点位信息 获取点位是否需要停车
//                            xpCruisePlanClient.getPlanPointInfo(endPointId);
                            //构建下发XPU订单报文数据
                            RtTask.Builder taskBuilder = RtTask.newBuilder();
                            taskBuilder.setOrderId(lastXpCruiseOrder.getId());
                            taskBuilder.setTaskId("MISSION_"+ IdUtil.fastUUID());
                            taskBuilder.setTaskType(com.xiaopeng.api.vo.automaticPilot.protobuf.OrderType.ORDER_TYPE_CRUISE);
                            //构建点位信息
                            Waypoint.Builder pointBuilder = Waypoint.newBuilder();
                            pointBuilder.setPointType(PointType.CRUISE_END_POINT);
                            pointBuilder.setSequence(1);
                            //构建终点坐标
                            GeoPoint.Builder geoPointBuilder = GeoPoint.newBuilder();
                            geoPointBuilder.setLatitude(lastXpCruiseOrder.getEndLat());
                            geoPointBuilder.setLongitude(lastXpCruiseOrder.getEndLat());
                            // geoPointBuilder.setPoiName("Start Point"); // GeoPoint might not have poi_name
                            pointBuilder.setPoint(geoPointBuilder.build());
                            taskBuilder.addPoints(pointBuilder);
                            RtTask task = taskBuilder.build();
                            RtTaskList taskList = RtTaskList.newBuilder().addTasks(task).build();
                            SnowFlake snowFlake = new SnowFlake(0, 0);
                            snowFlake.withStartTimestamp(1420041600000L);
@@ -902,10 +926,23 @@
                            if(cruisePoint!=null){
                                xpCruiseOrderClient.addCruiseOrder(cruisePoint.getData());
                                RtTask.Builder taskBuilder = RtTask.newBuilder();
                                //TODO 设置目标地点信息
                                taskBuilder.setOrderId(newXpCruiseOrder.getId());
                                taskBuilder.setTaskId("MISSION_"+ IdUtil.fastUUID());
                                taskBuilder.setTaskType(com.xiaopeng.api.vo.automaticPilot.protobuf.OrderType.ORDER_TYPE_CRUISE);
                                //构建点位信息
                                Waypoint.Builder pointBuilder = Waypoint.newBuilder();
                                pointBuilder.setPointType(PointType.CRUISE_END_POINT);
                                pointBuilder.setSequence(1);
                                //构建终点坐标
                                GeoPoint.Builder geoPointBuilder = GeoPoint.newBuilder();
                                geoPointBuilder.setLatitude(cruisePoint.getData().getEndLat());
                                geoPointBuilder.setLongitude(cruisePoint.getData().getEndLat());
                                // geoPointBuilder.setPoiName("Start Point"); // GeoPoint might not have poi_name
                                pointBuilder.setPoint(geoPointBuilder.build());
                                taskBuilder.addPoints(pointBuilder);
                                RtTaskList.Builder taskListBuilder = RtTaskList.newBuilder();
                                taskListBuilder.addTasks(taskBuilder.build());