puzhibing
2026-05-11 b7bb5daa5f4ffe1764a363a051a5d6f868168cf9
xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/OrderMissionController.java
@@ -79,7 +79,7 @@
            taskBuilder.setTaskId(StringUtils.isNotEmpty(dto.getEndTaskId()) ? dto.getEndTaskId() : snowflake.nextId() + "");
            taskBuilder.setTaskType(OrderType.ORDER_TYPE_CRUISE);
            //构建起点坐标数据
            pointBuilderStart.setWaypointId(dto.getOrderId() + "-001");
            pointBuilderStart.setWaypointId(dto.getStartWaypointId() + "");
            pointBuilderStart.setPointType(PointType.START_POINT);
            pointBuilderStart.setSequence(1);
            pointBuilderStart.setActionType(ActionType.ACTION_UNSPECIFIED);
@@ -90,7 +90,7 @@
            taskBuilder.addPoints(pointBuilderStart);
            //构建终点数据
            pointBuilderEnd.setWaypointId(dto.getOrderId() + "-002");
            pointBuilderEnd.setWaypointId(dto.getEndWaypointId() + "");
            pointBuilderEnd.setPointType(PointType.CRUISE_END_POINT);
            pointBuilderEnd.setSequence(2);
            pointBuilderEnd.setActionType(ActionType.DRIVE_THROUGH);
@@ -121,7 +121,6 @@
                    taskBuilder.setTaskType(OrderType.ORDER_TYPE_ROBOTAXI);
                    VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(dto.getVin())), VehiclePosition.class);
                    //构建车辆当前位置数据
                    pointBuilderStart.setWaypointId(dto.getOrderId() + "-JJ-001");
                    pointBuilderStart.setPointType(PointType.START_POINT);
                    pointBuilderStart.setActionType(ActionType.ACTION_UNSPECIFIED);
                    pointBuilderStart.setSequence(1);
@@ -132,7 +131,7 @@
                    taskBuilder.addPoints(pointBuilderStart);
                    //构建上车点位置信息
                    pointBuilderEnd.setWaypointId(dto.getOrderId() + "-JJ-002");
                    pointBuilderEnd.setWaypointId(dto.getStartWaypointId() + "");
                    pointBuilderEnd.setPointType(PointType.PICK_UP_POINT);
                    pointBuilderEnd.setActionType(ActionType.PICK_UP);
                    pointBuilderEnd.setSequence(2);
@@ -159,7 +158,7 @@
                    taskBuilder.setTaskId(StringUtils.isNotEmpty(dto.getEndTaskId()) ? dto.getEndTaskId() : snowflake.nextId() + "");
                    taskBuilder.setTaskType(OrderType.ORDER_TYPE_ROBOTAXI);
                    //构建上车点位置信息
                    pointBuilderStart.setWaypointId(dto.getOrderId() + "-SD-001");
                    pointBuilderStart.setWaypointId(dto.getStartWaypointId() + "");
                    pointBuilderStart.setPointType(PointType.PICK_UP_POINT);
                    pointBuilderStart.setActionType(ActionType.PICK_UP);
                    pointBuilderStart.setSequence(1);
@@ -170,7 +169,7 @@
                    taskBuilder.addPoints(pointBuilderStart);
                    //构建下车点位置信息
                    pointBuilderEnd.setWaypointId(dto.getOrderId() + "-SD-002");
                    pointBuilderEnd.setWaypointId(dto.getEndWaypointId() + "");
                    pointBuilderEnd.setPointType(PointType.END_POINT);
                    pointBuilderEnd.setActionType(ActionType.DROP_OFF);
                    pointBuilderEnd.setSequence(2);
@@ -204,7 +203,6 @@
                    taskBuilder.setTaskType(OrderType.ORDER_TYPE_ROBOTAXI);
                    VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(dto.getVin())), VehiclePosition.class);
                    //构建车辆当前位置数据
                    pointBuilderStart.setWaypointId(dto.getOrderId() + "-JJ-001");
                    pointBuilderStart.setPointType(PointType.START_POINT);
                    pointBuilderStart.setActionType(ActionType.ACTION_UNSPECIFIED);
                    pointBuilderStart.setSequence(1);
@@ -215,7 +213,7 @@
                    taskBuilder.addPoints(pointBuilderStart);
                    //构建上车点位置信息
                    pointBuilderEnd.setWaypointId(dto.getOrderId() + "-JJ-002");
                    pointBuilderEnd.setWaypointId(dto.getStartWaypointId() + "");
                    pointBuilderEnd.setPointType(PointType.PICK_UP_POINT);
                    pointBuilderEnd.setActionType(ActionType.PICK_UP);
                    pointBuilderEnd.setSequence(2);
@@ -243,7 +241,7 @@
                    taskBuilder.setTaskId(StringUtils.isNotEmpty(dto.getEndTaskId()) ? dto.getEndTaskId() : snowflake.nextId() + "");
                    taskBuilder.setTaskType(OrderType.ORDER_TYPE_ROBOTAXI);
                    //构建上车点位置信息
                    pointBuilderStart.setWaypointId(dto.getOrderId() + "-SD-001");
                    pointBuilderStart.setWaypointId(dto.getStartWaypointId() + "");
                    pointBuilderStart.setPointType(PointType.PICK_UP_POINT);
                    pointBuilderStart.setActionType(ActionType.PICK_UP);
                    pointBuilderStart.setSequence(1);
@@ -254,7 +252,7 @@
                    taskBuilder.addPoints(pointBuilderStart);
                    //构建下车点位置信息
                    pointBuilderEnd.setWaypointId(dto.getOrderId() + "-SD-002");
                    pointBuilderEnd.setWaypointId(dto.getEndWaypointId() + "");
                    pointBuilderEnd.setPointType(PointType.END_POINT);
                    pointBuilderEnd.setActionType(ActionType.DROP_OFF);
                    pointBuilderEnd.setSequence(2);
@@ -284,7 +282,7 @@
            taskBuilder.setTaskId(StringUtils.isNotEmpty(dto.getEndTaskId()) ? dto.getEndTaskId() : snowflake.nextId() + "");
            taskBuilder.setTaskType(OrderType.ORDER_TYPE_CRUISE);
            //构建起点坐标数据
            pointBuilderStart.setWaypointId(dto.getOrderId() + "-001");
            pointBuilderStart.setWaypointId(dto.getStartWaypointId() + "");
            pointBuilderStart.setPointType(PointType.START_POINT);
            pointBuilderStart.setSequence(1);
            pointBuilderStart.setActionType(ActionType.ACTION_UNSPECIFIED);
@@ -295,7 +293,7 @@
            taskBuilder.addPoints(pointBuilderStart);
            //构建终点数据
            pointBuilderEnd.setWaypointId(dto.getOrderId() + "-002");
            pointBuilderEnd.setWaypointId(dto.getEndWaypointId() + "");
            pointBuilderEnd.setPointType(PointType.CRUISE_END_POINT);
            pointBuilderEnd.setSequence(2);
            pointBuilderEnd.setActionType(ActionType.DRIVE_THROUGH);
@@ -474,6 +472,41 @@
        if(StringUtils.isNotEmpty(code)){
            xpOrder = xpOrderClient.queryOrderByOrderNo(code).getData();
        }
        //保存车辆实时信息到mongodb
        VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(xpVehicle.getVehicleVin())), VehiclePosition.class);
        if (null == vehiclePosition) {
            log.info("【模拟接单】MongoDB无车辆位置记录,新建,vin={}", xpVehicle.getVehicleVin());
            vehiclePosition = new VehiclePosition();
            vehiclePosition.setVin(xpVehicle.getVehicleVin());
            vehiclePosition.setPoint(new GeoJsonPoint(startLon, startLat));
            vehiclePosition.setCourse(60D);
            vehiclePosition.setAlt(100F);
            vehiclePosition.setSpeed(50F);
            vehiclePosition.setCurrentElectricity(80);
            vehiclePosition.setMileageRange(300f);
            vehiclePosition.setHasOrder(0);
            vehiclePosition.setOrderId(orderId);
            vehiclePosition.setTotalOdometer(10000L);
            vehiclePosition.setAddTime(System.currentTimeMillis());
            mongoTemplate.save(vehiclePosition);
        }else{
            log.info("【模拟接单】更新MongoDB车辆位置记录,vin={}", xpVehicle.getVehicleVin());
            vehiclePosition.setOrderId(orderId);
            Update update = new Update()
                    .set("point", new GeoJsonPoint(startLon, startLat))
                    .set("course", 60D)
                    .set("alt", 100F)
                    .set("speed", 50F)
                    .set("currentElectricity", 80)
                    .set("mileageRange", 300f)
                    .set("hasOrder", 0)
                    .set("orderId", orderId)
                    .set("totalOdometer", 10000L)
                    .set("addTime", System.currentTimeMillis());
            mongoTemplate.updateFirst(new Query(Criteria.where("vin").is(xpVehicle.getVehicleVin())), update, VehiclePosition.class);
        }
        orderId = xpOrder.getId();
        OrderRouteAndFareDto dto = new OrderRouteAndFareDto();
        dto.setOrderId(orderId);
@@ -619,6 +652,7 @@
                    dto.setLatitude(latitude);
                    dto.setDuration(10.0);
                    dto.setDistance(2.0);
                    dto.setSpeed(2.0f);
                    dto.setDirection(60);
                    dto.setMessageType(PushMessageTypeEnum.ORDER_ROUTE.getDesc());
                    xpPushMessageClient.pushOrderRoute(dto);
@@ -801,6 +835,7 @@
                    dto.setLatitude(latitude);
                    dto.setDuration(20.0);
                    dto.setDistance(10.0);
                    dto.setSpeed(10.0f);
                    dto.setDirection(60);
                    dto.setMessageType(PushMessageTypeEnum.ORDER_ROUTE.getDesc());
                    R<String> stringR = xpPushMessageClient.pushOrderRoute(dto);