xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/automaticPilot/PushOrderDto.java
@@ -26,12 +26,18 @@ @ApiModelProperty("订单id") private String orderId; @ApiModelProperty("起点点位id") private Long startWaypointId; @ApiModelProperty("起点经度") private Double startLongitude; @ApiModelProperty("起点纬度") private Double startLatitude; @ApiModelProperty("起点点位id") private Long endWaypointId; @ApiModelProperty("终点经度") private Double endLongitude; xp-robotaxi-api/src/main/java/com/xiaopeng/api/dto/pushMessage/PushOrderRouteDTO.java
@@ -29,6 +29,9 @@ @ApiModelProperty(value = "剩余时间") private Double duration; @ApiModelProperty(value = "时速") private Float speed; @NotNull(message = "订单类型不能为空") @ApiModelProperty(value = "订单类型 1=实时订单 2=巡游订单 3=测试单") private Integer routeType; xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/vehicleConvoy/VehiclesCommandEnum.java
@@ -10,7 +10,7 @@ DOOR_TRUNK_OPEN("DOOR_TRUNK_OPEN", "后备箱开启"), DOOR_TRUNK_CLOSE("DOOR_TRUNK_CLOSE", "后备箱关闭"), DOOR_UNLOCK("DOOR_UNLOCK", "车门开锁"), HVAC_TEMP_SET_FLOAT("HVAC_TEMP_SET_FLOAT", "设定温度"), LEFT_REAR_HVAC_TEMP_SET_FLOAT("LEFT_REAR_HVAC_TEMP_SET_FLOAT", "设定温度"), STATUS_REPORT_NOW("STATUS_REPORT_NOW", "上报实时车况"), HVAC_ON("HVAC_ON", "空调开启"), HVAC_OFF("HVAC_OFF", "空调关闭"); 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); @@ -654,6 +652,7 @@ dto.setLatitude(latitude); dto.setDuration(10.0); dto.setDistance(2.0); dto.setSpeed(2.0); dto.setDirection(60); dto.setMessageType(PushMessageTypeEnum.ORDER_ROUTE.getDesc()); xpPushMessageClient.pushOrderRoute(dto); @@ -836,6 +835,7 @@ dto.setLatitude(latitude); dto.setDuration(20.0); dto.setDistance(10.0); dto.setSpeed(10.0); dto.setDirection(60); dto.setMessageType(PushMessageTypeEnum.ORDER_ROUTE.getDesc()); R<String> stringR = xpPushMessageClient.pushOrderRoute(dto); xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
@@ -445,6 +445,7 @@ dto.setRouteType(1); dto.setLongitude(longitude); dto.setLatitude(latitude); dto.setSpeed(dynamicStatus.getSpeed()); if (rtTripInfo.hasCurrentTask() && rtTripInfo.getCurrentTask().hasNaviProgressInfo()) { dto.setDuration(rtTripInfo.getCurrentTask().getNaviProgressInfo().getRouteRemainTime()); dto.setDistance(rtTripInfo.getCurrentTask().getNaviProgressInfo().getRouteRemainDist()); @@ -661,7 +662,7 @@ LonLatDto origin = new LonLatDto(); RouteVo routeVo = null; String key = ""; Float speed = 0f; //添加redis锁,用于在发生偏航后重新规划线路与正常推送剩余导航数据之间的冲突 RLock lock = redissonClient.getLock("PUSH_ORDER_ROUTE_LOCK:" + orderId); @@ -700,6 +701,13 @@ } else if(orderId.contains("TEST")){ R<XpTestOrder> cruiseOrder = testOrderClient.queryOrderById(Long.parseLong(orderId.substring(4))); XpTestOrder testOrder = cruiseOrder.getData(); XpVehicle xpVehicle = xpVehicleClient.queryById(testOrder.getVehicleId()).getData(); VehiclePosition vehiclePosition = mongoTemplate.findOne(Query.query(Criteria.where("vin").is(xpVehicle.getVehicleVin())), VehiclePosition.class); if(null != vehiclePosition){ speed = vehiclePosition.getSpeed(); } //区分测试单和测试巡游单 if(1 == testOrder.getOrderType()){ orderType = OrderType.TEST_ORDER; @@ -778,6 +786,10 @@ } XpOrder xpOrder = xpOrderR.getData(); XpVehicle xpVehicle = xpVehicleClient.queryById(xpOrder.getVehicleId()).getData(); VehiclePosition vehiclePosition = mongoTemplate.findOne(Query.query(Criteria.where("vin").is(xpVehicle.getVehicleVin())), VehiclePosition.class); if(null != vehiclePosition){ speed = vehiclePosition.getSpeed(); } //驶往上车点的行程 if (3 == xpOrder.getStatus()) { //查询司机当前位置到起点的线路 @@ -833,6 +845,7 @@ dto.setRouteType(1); dto.setLongitude(longitude); dto.setLatitude(latitude); dto.setSpeed(speed); if (null != routeVo) { dto.setDuration(null == routeVo.getDuration() ? 0 : routeVo.getDuration().doubleValue()); dto.setDistance(null == routeVo.getDistance() ? 0 : routeVo.getDistance().doubleValue()); xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
@@ -407,6 +407,8 @@ PushOrderDto pushOrderDto = new PushOrderDto(); pushOrderDto.setVin(priorityVin); pushOrderDto.setOrderId(orderCheck.getData().getId().toString()); pushOrderDto.setStartWaypointId(orderCheck.getData().getStartPointId()); pushOrderDto.setEndWaypointId(orderCheck.getData().getEndPointId()); pushOrderDto.setStartLatitude(orderCheck.getData().getStartLat()); pushOrderDto.setStartLongitude(orderCheck.getData().getStartLon()); pushOrderDto.setEndLatitude(orderCheck.getData().getEndLat()); @@ -1092,6 +1094,8 @@ PushOrderDto pushOrderDto = new PushOrderDto(); pushOrderDto.setVin(vehiclePosition.getVehicleVin()); pushOrderDto.setOrderId(xpOrder.getId().toString()); pushOrderDto.setStartWaypointId(xpOrder.getStartPointId()); pushOrderDto.setEndWaypointId(xpOrder.getEndPointId()); pushOrderDto.setStartLatitude(xpOrder.getStartLat()); pushOrderDto.setStartLongitude(xpOrder.getStartLon()); pushOrderDto.setEndLatitude(xpOrder.getEndLat()); @@ -1157,6 +1161,8 @@ PushOrderDto pushOrderDto = new PushOrderDto(); pushOrderDto.setVin(vehiclePosition.getVin()); pushOrderDto.setOrderId(xpOrder.getId().toString()); pushOrderDto.setStartWaypointId(xpOrder.getStartPointId()); pushOrderDto.setEndWaypointId(xpOrder.getEndPointId()); pushOrderDto.setStartLatitude(xpOrder.getStartLat()); pushOrderDto.setStartLongitude(xpOrder.getStartLon()); pushOrderDto.setEndLatitude(xpOrder.getEndLat()); @@ -1347,6 +1353,8 @@ pushOrderDto.setStartTaskId(orderCheck.getData().getXpuStartTaskId()); pushOrderDto.setEndTaskId(orderCheck.getData().getXpuEndTaskId()); pushOrderDto.setOrderId(orderCheck.getData().getId().toString()); pushOrderDto.setStartWaypointId(orderCheck.getData().getStartPointId()); pushOrderDto.setEndWaypointId(orderCheck.getData().getEndPointId()); pushOrderDto.setStartLatitude(orderCheck.getData().getStartLat()); pushOrderDto.setStartLongitude(orderCheck.getData().getStartLon()); pushOrderDto.setEndLatitude(orderCheck.getData().getEndLat()); @@ -2025,6 +2033,8 @@ pushOrderDto.setEndTaskId(xpOrder.getXpuEndTaskId()); pushOrderDto.setVin(vehiclePosition.getVehicleVin()); pushOrderDto.setOrderId(xpOrder.getId().toString()); pushOrderDto.setStartWaypointId(xpOrder.getStartPointId()); pushOrderDto.setEndWaypointId(xpOrder.getEndPointId()); pushOrderDto.setStartLatitude(xpOrder.getStartLat()); pushOrderDto.setStartLongitude(xpOrder.getStartLon()); pushOrderDto.setEndLatitude(xpOrder.getEndLat()); @@ -2093,6 +2103,8 @@ pushOrderDto.setEndTaskId(xpOrder.getXpuEndTaskId()); pushOrderDto.setVin(vehiclePosition.getVin()); pushOrderDto.setOrderId(xpOrder.getId().toString()); pushOrderDto.setStartWaypointId(xpOrder.getStartPointId()); pushOrderDto.setEndWaypointId(xpOrder.getEndPointId()); pushOrderDto.setStartLatitude(xpOrder.getStartLat()); pushOrderDto.setStartLongitude(xpOrder.getStartLon()); pushOrderDto.setEndLatitude(xpOrder.getEndLat()); @@ -2216,6 +2228,8 @@ private static PushOrderDto buildPushOrderDto(XpOrder xpOrder) { PushOrderDto pushOrderDto = new PushOrderDto(); pushOrderDto.setOrderId(xpOrder.getId().toString()); pushOrderDto.setStartWaypointId(xpOrder.getStartPointId()); pushOrderDto.setEndWaypointId(xpOrder.getEndPointId()); pushOrderDto.setStartLatitude(xpOrder.getStartLat()); pushOrderDto.setStartLongitude(xpOrder.getStartLon()); pushOrderDto.setEndLatitude(xpOrder.getEndLat()); @@ -2399,6 +2413,8 @@ pushOrderDto.setEndTaskId(data.getXpuEndTaskId()); pushOrderDto.setVin(vehiclePosition.getVin()); pushOrderDto.setOrderId(data.getId().toString()); pushOrderDto.setStartWaypointId(data.getStartPointId()); pushOrderDto.setEndWaypointId(data.getEndPointId()); pushOrderDto.setStartLatitude(data.getStartLat()); pushOrderDto.setStartLongitude(data.getStartLon()); pushOrderDto.setEndLatitude(data.getEndLat()); xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpCruiseOrderController.java
@@ -118,6 +118,8 @@ pushOrderDto.setEndTaskId(order.getXpuTaskId()); pushOrderDto.setVin(order.getVehicleVin()); pushOrderDto.setOrderId("XU" + order.getId()); pushOrderDto.setStartWaypointId(order.getStartPointId()); pushOrderDto.setEndWaypointId(order.getEndPointId()); pushOrderDto.setStartLatitude(order.getStartLat()); pushOrderDto.setStartLongitude(order.getStartLon()); pushOrderDto.setEndLatitude(order.getEndLat()); xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/job/jobs/PushChainReactionOrderJob.java
@@ -55,6 +55,8 @@ pushOrderDto.setStartTaskId(xpOrder.getXpuStartTaskId()); pushOrderDto.setEndTaskId(xpOrder.getXpuEndTaskId()); pushOrderDto.setOrderId(xpOrder.getId().toString()); pushOrderDto.setStartWaypointId(xpOrder.getStartPointId()); pushOrderDto.setEndWaypointId(xpOrder.getEndPointId()); pushOrderDto.setStartLatitude(xpOrder.getStartLat()); pushOrderDto.setStartLongitude(xpOrder.getStartLon()); pushOrderDto.setEndLatitude(xpOrder.getEndLat()); xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -1190,6 +1190,8 @@ pushOrderDto.setEndTaskId(order.getXpuEndTaskId()); pushOrderDto.setVin(newVehicle.getVehicleVin()); pushOrderDto.setOrderId(order.getId().toString()); pushOrderDto.setStartWaypointId(order.getStartPointId()); pushOrderDto.setEndWaypointId(order.getEndPointId()); pushOrderDto.setStartLatitude(order.getStartLat()); pushOrderDto.setStartLongitude(order.getStartLon()); pushOrderDto.setEndLatitude(order.getEndLat()); @@ -1325,6 +1327,8 @@ pushOrderDto.setEndTaskId(returnOrder.getXpuTaskId()); pushOrderDto.setVin(oldVehicle.getVehicleVin()); pushOrderDto.setOrderId("XU" + returnOrder.getId()); pushOrderDto.setStartWaypointId(returnOrder.getStartPointId()); pushOrderDto.setEndWaypointId(returnOrder.getEndPointId()); pushOrderDto.setStartLatitude(returnOrder.getStartLat()); pushOrderDto.setStartLongitude(returnOrder.getStartLon()); pushOrderDto.setEndLatitude(returnOrder.getEndLat()); @@ -2892,6 +2896,8 @@ pushOrderDto.setEndTaskId(xpCruiseOrder.getXpuTaskId()); pushOrderDto.setVin(xpCruiseOrder.getVehicleVin()); pushOrderDto.setOrderId("XU" + xpCruiseOrder.getId()); pushOrderDto.setStartWaypointId(xpCruiseOrder.getStartPointId()); pushOrderDto.setEndWaypointId(xpCruiseOrder.getEndPointId()); pushOrderDto.setStartLatitude(xpCruiseOrder.getStartLat()); pushOrderDto.setStartLongitude(xpCruiseOrder.getStartLon()); pushOrderDto.setEndLatitude(xpCruiseOrder.getEndLat()); @@ -3012,6 +3018,8 @@ pushOrderDto.setEndTaskId(xpCruiseOrder.getXpuTaskId()); pushOrderDto.setVin(xpCruiseOrder.getVehicleVin()); pushOrderDto.setOrderId("XU" + xpCruiseOrder.getId()); pushOrderDto.setStartWaypointId(xpCruiseOrder.getStartPointId()); pushOrderDto.setEndWaypointId(xpCruiseOrder.getEndPointId()); pushOrderDto.setStartLatitude(xpCruiseOrder.getStartLat()); pushOrderDto.setStartLongitude(xpCruiseOrder.getStartLon()); pushOrderDto.setEndLatitude(xpCruiseOrder.getEndLat()); xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpTestOrderServiceImpl.java
@@ -275,6 +275,8 @@ pushOrderDto.setEndTaskId(xpOrder.getXpuEndTaskId()); pushOrderDto.setVin(xpVehicle.getVehicleVin()); pushOrderDto.setOrderId("TEST" + xpOrder.getId()); pushOrderDto.setStartWaypointId(xpOrder.getStartTestPointId()); pushOrderDto.setEndWaypointId(xpOrder.getEndTestPointId()); pushOrderDto.setStartLatitude(xpOrder.getStartLat()); pushOrderDto.setStartLongitude(xpOrder.getStartLon()); pushOrderDto.setEndLatitude(xpOrder.getEndLat()); @@ -838,6 +840,8 @@ pushOrderDto.setEndTaskId(order.getXpuEndTaskId()); pushOrderDto.setVin(newVehicle.getVehicleVin()); pushOrderDto.setOrderId("TEST" + order.getId()); pushOrderDto.setStartWaypointId(order.getStartTestPointId()); pushOrderDto.setEndWaypointId(order.getEndTestPointId()); pushOrderDto.setStartLatitude(order.getStartLat()); pushOrderDto.setStartLongitude(order.getStartLon()); pushOrderDto.setEndLatitude(order.getEndLat()); xp-robotaxi-push-message-boot/src/main/java/com/xiaopeng/pushMessage/controller/PushOrderRouteController.java
@@ -89,6 +89,7 @@ Integer distance = dto.getDistance().intValue(); Integer duration = dto.getDuration().intValue(); Integer speed = dto.getDuration().intValue(); // 计算实时点位到线段的最优截取 Map<String, List<LonLatDto>> remainingNavigation = MapMatchingUtil.getRemainingNavigation(routeVo.getPolyline(), dto.getLongitude(), dto.getLatitude()); log.info("remainingNavigation {}", JSON.toJSONString(remainingNavigation)); @@ -113,6 +114,7 @@ // 封装路由详情 Map<String, Object> route = new HashMap<>(); route.put("speed",speed); route.put("distance",distance); route.put("duration",duration); route.put("polyline",JSONObject.toJSONString(lonLatDtos)); xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java
@@ -525,7 +525,7 @@ // 设定温度 VehiclesCommandVo vehiclesCommandVo = new VehiclesCommandVo(); vehiclesCommandVo.setVin(xpVehicle.getVehicleVin()); vehiclesCommandVo.setCommandCode(VehiclesCommandEnum.HVAC_TEMP_SET_FLOAT.getCommand()); vehiclesCommandVo.setCommandCode(VehiclesCommandEnum.LEFT_REAR_HVAC_TEMP_SET_FLOAT.getCommand()); VehiclesCommandParamVo vehiclesCommandParamVo = new VehiclesCommandParamVo(); vehiclesCommandParamVo.setDegree(dto.getTargetTemperature()); vehiclesCommandVo.setParam(vehiclesCommandParamVo); @@ -1617,6 +1617,7 @@ dto1.setLatitude(latitude); dto1.setDuration(dto.getDuration()); dto1.setDistance(dto.getDistance()); dto1.setSpeed(dto.getSpeed()); dto1.setDirection(dto.getCourse().intValue()); OrderTrajectoryVo orderTrajectory = new OrderTrajectoryVo();