| | |
| | | @Resource |
| | | private XpVehicleClient xpVehicleClient; |
| | | |
| | | |
| | | @PostMapping("/inner/pushOrder") |
| | | public R<Boolean> pushOrder(@RequestBody PushOrderDto dto) { |
| | | RtTask.Builder taskBuilder = RtTask.newBuilder(); |
| | |
| | | }else { |
| | | taskBuilder.setTaskType(OrderType.ORDER_TYPE_ROBOTAXI); |
| | | } |
| | | //构建点位信息 |
| | | Waypoint.Builder pointBuilder = Waypoint.newBuilder(); |
| | | //巡游订单 |
| | | if(dto.getOrderType().equals(com.xiaopeng.api.vo.OrderType.CRUISE_ORDER)){ |
| | | pointBuilder.setPointType(PointType.CRUISE_END_POINT); |
| | | pointBuilder.setSequence(1); |
| | | //构建终点坐标 |
| | | GeoPoint.Builder geoPointBuilder = GeoPoint.newBuilder(); |
| | | geoPointBuilder.setLatitude(dto.getEndLatitude()); |
| | | geoPointBuilder.setLongitude(dto.getEndLatitude()); |
| | | // geoPointBuilder.setPoiName("Start Point"); // GeoPoint might not have poi_name |
| | | pointBuilder.setPoint(geoPointBuilder.build()); |
| | | }else{ |
| | | //用户订单 |
| | | if(dto.getStage() == 1){ |
| | | //开往上车点 |
| | | pointBuilder.setPointType(PointType.START_POINT); |
| | | pointBuilder.setActionType(ActionType.PICK_UP); |
| | | pointBuilder.setSequence(1); |
| | | //构建起点坐标 |
| | | GeoPoint.Builder geoPointBuilder = GeoPoint.newBuilder(); |
| | | geoPointBuilder.setLatitude(dto.getStartLatitude()); |
| | | geoPointBuilder.setLongitude(dto.getStartLongitude()); |
| | | // geoPointBuilder.setPoiName("Start Point"); // GeoPoint might not have poi_name |
| | | pointBuilder.setPoint(geoPointBuilder.build()); |
| | | }else{ |
| | | //开往终点 |
| | | pointBuilder.setPointType(PointType.END_POINT); |
| | | pointBuilder.setActionType(ActionType.PICK_UP); |
| | | pointBuilder.setSequence(1); |
| | | //构建起点坐标 |
| | | GeoPoint.Builder geoPointBuilder = GeoPoint.newBuilder(); |
| | | geoPointBuilder.setLatitude(dto.getEndLatitude()); |
| | | geoPointBuilder.setLongitude(dto.getEndLatitude()); |
| | | // 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()); |
| | | |
| | |
| | | * @return |
| | | */ |
| | | @GetMapping("/base/v1/order/acceptingOrder") |
| | | public R acceptingOrder(Long orderId, Long vehicleId, Double startLon, Double startLat){ |
| | | public R acceptingOrder(Long orderId, String code, Long vehicleId, Double startLon, Double startLat){ |
| | | if(null == vehicleId){ |
| | | vehicleId = 1L; |
| | | } |
| | | if(null == startLat || null == startLon){ |
| | | startLat = 23.157155D; |
| | | startLon = 113.382373D; |
| | | } |
| | | XpVehicle xpVehicle = xpVehicleClient.queryById(vehicleId).getData(); |
| | | XpOrder xpOrder = xpOrderClient.queryOrderById(orderId).getData(); |
| | | XpOrder xpOrder = null; |
| | | if(null != orderId){ |
| | | xpOrder = xpOrderClient.queryOrderById(orderId).getData(); |
| | | } |
| | | if(StringUtils.isNotEmpty(code)){ |
| | | xpOrder = xpOrderClient.queryOrderByOrderNo(code).getData(); |
| | | } |
| | | orderId = xpOrder.getId(); |
| | | OrderRouteAndFareDto dto = new OrderRouteAndFareDto(); |
| | | dto.setOrderId(orderId); |
| | | LonLatDto origin = new LonLatDto(); |
| | |
| | | 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); |
| | | // dto3.setDirection(60); |
| | | // xpPushMessageClient.pushOrderRoute(dto3); |
| | | |
| | | return r; |
| | | } |
| | | |
| | |
| | | * @param orderId |
| | | */ |
| | | @GetMapping("/base/v1/order/pushStartDriverLocation") |
| | | private void pushStartDriverLocation(Long vehicleId, Long orderId){ |
| | | private void pushStartDriverLocation(Long vehicleId, Long orderId, String code){ |
| | | if(null == vehicleId){ |
| | | vehicleId = 1L; |
| | | } |
| | | XpVehicle xpVehicle = xpVehicleClient.queryById(vehicleId).getData(); |
| | | XpOrder xpOrder = xpOrderClient.queryOrderById(orderId).getData(); |
| | | XpOrder xpOrder = null; |
| | | if(null != orderId){ |
| | | xpOrder = xpOrderClient.queryOrderById(orderId).getData(); |
| | | } |
| | | if(StringUtils.isNotEmpty(code)){ |
| | | xpOrder = xpOrderClient.queryOrderByOrderNo(code).getData(); |
| | | } |
| | | orderId = xpOrder.getId(); |
| | | String vin = xpVehicle.getVehicleVin(); |
| | | Long appUserId = xpOrder.getAppUserId(); |
| | | Object cacheObject = redisService.getCacheObject("ORDER_NAVIGATION_START_DATA:" + xpOrder.getAppUserId()); |
| | | RouteVo routeVo = JSON.parseObject(cacheObject.toString(), RouteVo.class); |
| | | |
| | | ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(1000)); |
| | | Long finalOrderId = orderId; |
| | | threadPoolExecutor.execute(() -> { |
| | | //等待10秒后开始执行车子位移 |
| | | try { |
| | | Thread.sleep(10000); |
| | | Thread.sleep(1000); |
| | | } catch (InterruptedException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | |
| | | vehiclePosition.setSpeed(50F); |
| | | vehiclePosition.setCurrentElectricity(80); |
| | | vehiclePosition.setMileageRange(300f); |
| | | vehiclePosition.setOrderId(orderId); |
| | | vehiclePosition.setOrderId(finalOrderId); |
| | | mongoTemplate.save(vehiclePosition); |
| | | //调用推送服务接口 |
| | | if (null != orderId) { |
| | | if (null != finalOrderId) { |
| | | PushOrderRouteDTO dto = new PushOrderRouteDTO(); |
| | | dto.setOrderId(orderId); |
| | | dto.setOrderId(finalOrderId); |
| | | dto.setRouteType(1); |
| | | dto.setLongitude(longitude); |
| | | dto.setLatitude(latitude); |
| | |
| | | //构建推送消息 |
| | | Map<String, Object> params = new HashMap<>(); |
| | | Map<String, Object> content = new HashMap<>(); |
| | | content.put("orderId", orderId.toString()); |
| | | content.put("orderId", finalOrderId.toString()); |
| | | content.put("status", 4); |
| | | params.put("type", PushMessageTypeEnum.ORDER_STATUS.getDesc()); |
| | | params.put("content", JSONObject.toJSONString(content)); |
| | |
| | | if (R.isError(stringR)) { |
| | | log.error("推送消息失败:{}", stringR.getMsg()); |
| | | } |
| | | xpOrderClient.updateOrderStatus(orderId, OrderStatusEnum.PICK_UP_GUESTS.getCode()); |
| | | xpOrderClient.updateOrderStatus(finalOrderId, OrderStatusEnum.PICK_UP_GUESTS.getCode()); |
| | | }); |
| | | |
| | | } |
| | |
| | | * @return |
| | | */ |
| | | @GetMapping("/base/v1/order/updateOrderStatus") |
| | | public R updateOrderStatus(Long orderId, Integer status) { |
| | | XpOrder xpOrder = xpOrderClient.queryOrderById(orderId).getData(); |
| | | public R updateOrderStatus(Long orderId, String code, Integer status) { |
| | | XpOrder xpOrder = null; |
| | | if(null != orderId){ |
| | | xpOrder = xpOrderClient.queryOrderById(orderId).getData(); |
| | | } |
| | | if(StringUtils.isNotEmpty(code)){ |
| | | xpOrder = xpOrderClient.queryOrderByOrderNo(code).getData(); |
| | | } |
| | | orderId = xpOrder.getId(); |
| | | //构建推送消息 |
| | | Map<String, Object> params = new HashMap<>(); |
| | | Map<String, Object> content = new HashMap<>(); |
| | |
| | | * @param orderId |
| | | */ |
| | | @GetMapping("/base/v1/order/pushEndDriverLocation") |
| | | private void pushEndDriverLocation(Long vehicleId, Long orderId){ |
| | | private void pushEndDriverLocation(Long vehicleId, Long orderId, String code){ |
| | | if(null == vehicleId){ |
| | | vehicleId = 1L; |
| | | } |
| | | XpVehicle xpVehicle = xpVehicleClient.queryById(vehicleId).getData(); |
| | | XpOrder xpOrder = xpOrderClient.queryOrderById(orderId).getData(); |
| | | XpOrder xpOrder = null; |
| | | if(null != orderId){ |
| | | xpOrder = xpOrderClient.queryOrderById(orderId).getData(); |
| | | } |
| | | if(StringUtils.isNotEmpty(code)){ |
| | | xpOrder = xpOrderClient.queryOrderByOrderNo(code).getData(); |
| | | } |
| | | orderId = xpOrder.getId(); |
| | | String vin = xpVehicle.getVehicleVin(); |
| | | Long appUserId = xpOrder.getAppUserId(); |
| | | Object cacheObject = redisService.getCacheObject("ORDER_NAVIGATION_END_DATA:" + xpOrder.getAppUserId()); |
| | | RouteVo routeVo = JSON.parseObject(cacheObject.toString(), RouteVo.class); |
| | | |
| | | ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(1000)); |
| | | Long finalOrderId = orderId; |
| | | threadPoolExecutor.execute(() -> { |
| | | //等待10秒后开始执行车子位移 |
| | | try { |
| | | Thread.sleep(10000); |
| | | Thread.sleep(1000); |
| | | } catch (InterruptedException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | |
| | | vehiclePosition.setSpeed(50F); |
| | | vehiclePosition.setCurrentElectricity(80); |
| | | vehiclePosition.setMileageRange(300f); |
| | | vehiclePosition.setOrderId(orderId); |
| | | vehiclePosition.setOrderId(finalOrderId); |
| | | mongoTemplate.save(vehiclePosition); |
| | | //调用推送服务接口 |
| | | if (null != orderId) { |
| | | if (null != finalOrderId) { |
| | | PushOrderRouteDTO dto = new PushOrderRouteDTO(); |
| | | dto.setOrderId(orderId); |
| | | dto.setOrderId(finalOrderId); |
| | | dto.setRouteType(1); |
| | | dto.setLongitude(longitude); |
| | | dto.setLatitude(latitude); |
| | |
| | | |
| | | //存储历史轨迹 |
| | | OrderTrajectoryVo orderTrajectory = new OrderTrajectoryVo(); |
| | | orderTrajectory.setOrderId(orderId); |
| | | orderTrajectory.setOrderId(finalOrderId); |
| | | orderTrajectory.setLocation(longitude + "," + latitude); |
| | | orderTrajectory.setDirection(dto.getDirection()); |
| | | orderTrajectory.setSpeed(0D); |
| | |
| | | //构建推送消息 |
| | | Map<String, Object> params = new HashMap<>(); |
| | | Map<String, Object> content = new HashMap<>(); |
| | | content.put("orderId", orderId.toString()); |
| | | content.put("orderId", finalOrderId.toString()); |
| | | content.put("status", 7); |
| | | params.put("type", PushMessageTypeEnum.ORDER_STATUS.getDesc()); |
| | | params.put("content", JSONObject.toJSONString(content)); |
| | |
| | | if (R.isError(stringR)) { |
| | | log.error("推送消息失败:{}", stringR.getMsg()); |
| | | } |
| | | xpOrderClient.updateOrderStatus(orderId, OrderStatusEnum.SEE_OFF_GUESTS.getCode()); |
| | | xpOrderClient.updateOrderStatus(finalOrderId, OrderStatusEnum.SEE_OFF_GUESTS.getCode()); |
| | | }); |
| | | } |
| | | |