xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/OrderMissionController.java
@@ -32,6 +32,7 @@ import com.xiaopeng.common.redis.service.RedisService; import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; import org.springframework.data.geo.Point; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.geo.GeoJsonPoint; import org.springframework.data.mongodb.core.query.Criteria; @@ -196,14 +197,6 @@ log.error("推送消息失败:{}", stringR.getMsg()); } xpOrderClient.updateOrderStatus(orderId, OrderStatusEnum.PICK_UP.getCode()); PushOrderRouteDTO dto3 = new PushOrderRouteDTO(); dto3.setOrderId(orderId); dto3.setRouteType(1); dto3.setLongitude(startLon); dto3.setLatitude(startLat); dto3.setDuration(10); dto3.setDistance(2); xpPushMessageClient.pushOrderRoute(dto3); return r; } @@ -236,7 +229,7 @@ Double longitude = lonLatDto.getLongitude(); //保存车辆实时位置到redis redisTemplate.opsForGeo().add("vehiclePosition:" + vin, new GeoJsonPoint(longitude, latitude), vin); redisTemplate.opsForGeo().add("vehiclePosition:" + vin, new Point(longitude, latitude), vin); //保存车辆实时信息到mongodb VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(vin)), VehiclePosition.class); @@ -262,10 +255,11 @@ dto.setLatitude(latitude); dto.setDuration(10); dto.setDistance(2); dto.setDirection(60); xpPushMessageClient.pushOrderRoute(dto); } //5秒钟循环一次 //2秒钟循环一次 try { Thread.sleep(2000); } catch (InterruptedException e) { @@ -354,7 +348,7 @@ Double longitude = lonLatDto.getLongitude(); //保存车辆实时位置到redis redisTemplate.opsForGeo().add("vehiclePosition:" + vin, new GeoJsonPoint(longitude, latitude), vin); redisTemplate.opsForGeo().add("vehiclePosition:" + vin, new Point(longitude, latitude), vin); //保存车辆实时信息到mongodb VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(vin)), VehiclePosition.class); @@ -380,6 +374,7 @@ dto.setLatitude(latitude); dto.setDuration(20); dto.setDistance(10); dto.setDirection(60); xpPushMessageClient.pushOrderRoute(dto); } xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
@@ -51,7 +51,7 @@ import com.xiaopeng.common.core.utils.uuid.UUID; import com.xiaopeng.common.redis.service.RedisService; import lombok.extern.slf4j.Slf4j; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.geo.Point;import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.geo.GeoJsonPoint; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; @@ -277,7 +277,7 @@ long sequence = msgContent.getHeader().getSequence(); responseMessage(sequence, vin); //保存车辆实时位置到redis redisTemplate.opsForGeo().add("vehiclePosition:" + vin, new GeoJsonPoint(longitude, latitude), vin); redisTemplate.opsForGeo().add("vehiclePosition:" + vin, new Point(longitude, latitude), vin); //保存车辆实时信息到mongodb VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(vin)), VehiclePosition.class); xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/schedule/InsuranceInspectionScheduleTask.java
@@ -350,7 +350,7 @@ } // 设置任务状态为待到达 task.setStatus(TaskScheduleConstants.TASK_STATUS_PENDING_ARRIVE); task.setStatus(TaskScheduleConstants.TASK_STATUS_PENDING); // 设置任务接收人(配置角色下的所有运维人员都可以看到) task.setHandleUserId(belongUserIds); xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/schedule/RoutinePreparationScheduleTask.java
@@ -370,7 +370,7 @@ } // 设置任务状态为待到达 task.setStatus(TaskScheduleConstants.TASK_STATUS_PENDING_ARRIVE); task.setStatus(TaskScheduleConstants.TASK_STATUS_PENDING); // 设置任务接收人(配置角色下的所有运维人员都可以看到) task.setHandleUserId(belongUserIds); xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/schedule/VehicleCleanScheduleTask.java
@@ -370,7 +370,7 @@ } // 设置任务状态为待到达 task.setStatus(TaskScheduleConstants.TASK_STATUS_PENDING_ARRIVE); task.setStatus(TaskScheduleConstants.TASK_STATUS_PENDING); // 设置任务接收人(配置角色下的所有运维人员都可以看到) task.setHandleUserId(belongUserIds); xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/schedule/VehicleInspectionScheduleTask.java
@@ -330,7 +330,7 @@ } // 设置任务状态为待到达 task.setStatus(TaskScheduleConstants.TASK_STATUS_PENDING_ARRIVE); task.setStatus(TaskScheduleConstants.TASK_STATUS_PENDING); // 设置任务接收人(配置角色下的所有运维人员都可以看到) task.setHandleUserId(belongUserIds); xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/schedule/VehicleMaintenanceScheduleTask.java
@@ -356,7 +356,7 @@ } // 设置任务状态为待到达 task.setStatus(TaskScheduleConstants.TASK_STATUS_PENDING_ARRIVE); task.setStatus(TaskScheduleConstants.TASK_STATUS_PENDING); // 设置任务接收人(配置角色下的所有运维人员都可以看到) task.setHandleUserId(belongUserIds); xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -51,6 +51,7 @@ import com.xiaopeng.api.vo.OrderType; import com.xiaopeng.api.vo.account.GetUserListByUidsVo; import com.xiaopeng.api.vo.account.UserCouponVo; import com.xiaopeng.api.vo.automaticPilot.VehiclePosition; import com.xiaopeng.api.vo.automaticPilot.proto.down.cloudOrderOperation.OrderOperationType; import com.xiaopeng.api.vo.operation.RouteVo; import com.xiaopeng.api.vo.order.*; @@ -1987,8 +1988,9 @@ //乘客单处理逻辑 if(OrderType.USER_ORDER.equals(orderType)){ XpOrder order = this.getById(orderId); Long appUserId = order.getAppUserId(); //订单为待接单状态 if(order.getStatus() == 1){ if(order.getStatus() < 4){ AddTaxiPassengerVo addTaxiPassengerVo = new AddTaxiPassengerVo(); order.setAcceptanceTime(LocalDateTime.now()); R<XpVehicle> byVehicleVin = xpVehicleClient.findByVehicleVin(dto.getXpVehicleVin()); @@ -2008,8 +2010,7 @@ String[] split = popFirstElement.split("_"); xpGeoQueryEntity.setOrderId(split[0]); // 存mongo数据 xpPricingClient.updateXpGeoQueryEntity(split[0]); order.setAppUserId(null); xpPricingClient.updateXpGeoQueryEntity(order.getId().toString()); // 修改车辆信息 @@ -2017,18 +2018,19 @@ xpVehicleClient.updateVehicleById(vehicle); //绑定用户和车辆关系 addTaxiPassengerVo.setUid(order.getAppUserId().toString()); addTaxiPassengerVo.setUid(appUserId.toString()); order.setAppUserId(null); this.updateById(order); addTaxiPassengerVo.setOrderNo(order.getOrderNumber()); // TODO appid addTaxiPassengerVo.setAppId(""); userVehicleClient.addTaxiPassenger(addTaxiPassengerVo); //推送乘客车辆到达预约点的导航数据 sendRoute(order.getAppUserId().toString(), orderId, "ORDER_NAVIGATION_START_DATA"); sendRoute(addTaxiPassengerVo.getUid(), orderId, "ORDER_NAVIGATION_START_DATA", dto.getXpVehicleVin()); }else{ //推送行起点到终点的驶轨迹给乘客端 sendRoute(order.getAppUserId().toString(), orderId, "ORDER_NAVIGATION_END_DATA"); sendRoute(appUserId.toString(), orderId, "ORDER_NAVIGATION_END_DATA", dto.getXpVehicleVin()); } } } @@ -2039,7 +2041,8 @@ * @param appUserId * @param keyStr */ public void sendRoute(String appUserId, Long orderId, String keyStr){ public void sendRoute(String appUserId, Long orderId, String keyStr, String vin){ VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(vin)), VehiclePosition.class); Object cacheObject = redisService.getCacheObject(keyStr + ":" + appUserId); if(null != cacheObject){ RouteVo routeVo = JSON.parseObject(cacheObject.toString(), RouteVo.class); @@ -2047,8 +2050,9 @@ jsonObject.put("type", "ORDER_ROUTE"); jsonObject.put("timestamp", System.currentTimeMillis()); JSONObject content = new JSONObject(); content.put("orderId", orderId); content.put("orderId", orderId.toString()); content.put("routeType", "ORDER_NAVIGATION_START_DATA".equals(keyStr) ? 1 : 2); content.put("direction", null != vehiclePosition ? vehiclePosition.getCourse() : 90); JSONObject route = new JSONObject(); route.put("distance", routeVo.getDistance()); route.put("duration", routeVo.getDuration()); @@ -2061,12 +2065,13 @@ return point; }).collect(Collectors.toList()); route.put("polyline", collect); route.put("polyline", collect.toArray()); content.put("route", route.toJSONString()); jsonObject.put("content", content.toJSONString()); SendMessageDTO messageDTO = new SendMessageDTO(); messageDTO.setAppUserId(appUserId); messageDTO.setMessage(jsonObject.toJSONString()); System.err.println(messageDTO); xpPushMessageClient.sendRoute(messageDTO); } } xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java
@@ -38,6 +38,7 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.data.geo.Point; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.geo.GeoJsonPoint; import org.springframework.data.mongodb.core.query.Criteria; @@ -149,11 +150,11 @@ } for (XpVehicleVO xpVehicleVO : list) { GeoJsonPoint geoJsonPoint = redisService.getCacheObject("vehiclePosition:" + xpVehicleVO.getVehicleVin()); if (Objects.nonNull(geoJsonPoint)){ Point point = redisService.getCacheObject("vehiclePosition:" + xpVehicleVO.getVehicleVin()); if (Objects.nonNull(point)){ // 获取经纬度 xpVehicleVO.setLongitude(geoJsonPoint.getX()); xpVehicleVO.setLatitude(geoJsonPoint.getY()); xpVehicleVO.setLongitude(point.getX()); xpVehicleVO.setLatitude(point.getY()); } // 查询车辆的续航里程 VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(xpVehicleVO.getVehicleVin())), VehiclePosition.class);