xp-robotaxi-api/src/main/java/com/xiaopeng/api/factory/order/XpCruiseOrderClientFallbackFactory.java
@@ -43,20 +43,20 @@ } @Override public R<Long> updateCruiseOrder(String vin) { log.error("订单服务调用失败: {}", cause.getMessage()); return R.fail("根据车辆VIN查询取消订单失败:" + cause.getMessage()); public R<Long> cancelCruiseOrderByVin(String vin) { log.error("根据车辆VIN码取消订单失败: {}", cause.getMessage()); return R.fail("根据车辆VIN码取消订单失败:" + cause.getMessage()); } @Override public R<Long> updateCruiseOrderId(Long orderId) { public R<?> cancelCruiseOrderById(Long orderId) { return R.fail("根据订单ID查询取消订单失败:" + cause.getMessage()); } @Override public R<Long> closeCruiseOrder(String vin) { log.error("订单服务调用失败: {}", cause.getMessage()); return R.fail("根据VIN码关闭巡游单失败"); public R<?> completeCruiseOrder(Long orderId) { log.error("完成巡游订单失败: {}", cause.getMessage()); return R.fail("完成巡游订单失败"); } @Override xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/order/XpCruiseOrderClient.java
@@ -48,12 +48,12 @@ /** * 查询并关闭订单信息 返回id信息 * 根据车辆VIN码取消订单 * * @param vin 订单信息 */ @PostMapping("/inner/cruiseOrder/updateCruiseOrder") R<Long> updateCruiseOrder(@RequestParam String vin); @PostMapping("/inner/cruiseOrder/cancelCruiseOrderByVin") R<Long> cancelCruiseOrderByVin(@RequestParam String vin); /** @@ -61,15 +61,15 @@ * @param orderId * @return */ @PostMapping("/inner/cruiseOrder/updateCruiseOrderId") R<Long> updateCruiseOrderId(@RequestParam Long orderId); @PostMapping("/inner/cruiseOrder/cancelCruiseOrderById") R<?> cancelCruiseOrderById(@RequestParam Long orderId); /** * 关闭 * 完成巡游订单 */ @PostMapping("/inner/cruiseOrder/closeCruiseOrder") R<Long> closeCruiseOrder(@RequestParam String vin); @PostMapping("/inner/cruiseOrder/completeCruiseOrder") R<?> completeCruiseOrder(@RequestParam Long orderId); /** xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/order/XpCruiseOrder.java
@@ -58,7 +58,7 @@ @ApiModelProperty(value = "目的地纬度") private Double endLat; @ApiModelProperty(value = "状态 1进行中 2已停止") @ApiModelProperty(value = "状态 1进行中 2已停止 3已完成") private Integer status; @ApiModelProperty(value = "下单站点id") xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/OrderMissionController.java
@@ -92,7 +92,7 @@ pointBuilderEnd.setActionType(ActionType.DRIVE_THROUGH); geoPointBuilder = GeoPoint.newBuilder(); geoPointBuilder.setLatitude(dto.getEndLatitude()); geoPointBuilder.setLongitude(dto.getEndLatitude()); geoPointBuilder.setLongitude(dto.getEndLongitude()); pointBuilderEnd.setPoint(geoPointBuilder.build()); taskBuilder.addPoints(pointBuilderEnd); taskBuilder.setSequence(1); @@ -148,7 +148,7 @@ pointBuilderEnd.setSequence(2); geoPointBuilder = GeoPoint.newBuilder(); geoPointBuilder.setLatitude(dto.getEndLatitude()); geoPointBuilder.setLongitude(dto.getEndLatitude()); geoPointBuilder.setLongitude(dto.getEndLongitude()); pointBuilderEnd.setPoint(geoPointBuilder.build()); taskBuilder.addPoints(pointBuilderEnd); taskBuilder.setSequence(i); xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
@@ -390,7 +390,7 @@ String orderId = systemRuntimeStatus.getRunningOrderStatusInfo().getOrderId(); if(!orderId.contains("XU")){ //巡游订单,需要关闭订单 xpCruiseOrderClient.updateCruiseOrderId(Long.parseLong(orderId.substring(2))); xpCruiseOrderClient.cancelCruiseOrderById(Long.parseLong(orderId.substring(2))); XpCruiseOrder cruiseOrder = xpCruiseOrderClient.getCruiseOrder(Long.parseLong(orderId.substring(2))).getData(); vehicle = xpVehicleClient.queryById(cruiseOrder.getVehicleId()).getData(); if (vehicle != null) { @@ -889,22 +889,16 @@ //响应消息 // TODO 1.处理结束当前巡游订单 2.创建新的巡游订单 返航 3.调用xpu车机接口 (判断是返航还是正常 返航需要存储之前的订单id) responseMessage(sequence, ""); //前往目的地 if(OrderStatusEnum.IN_SERVICE.equals(status)){ } //到达目的地 if(OrderStatusEnum.COMPLETED.equals(status)){ // 返程找到目前的订单 -》之前的订单 查询生成一个 正常巡游 找到下一个点位 若到达最后点位 则反向找点位 每次判断是否收车状态 是则不进行处理了 // 找到这个订单 R<XpCruiseOrder> cruiseOrder = xpCruiseOrderClient.getCruiseOrder(Long.parseLong(orderId.substring(2))); if(cruiseOrder!=null){ XpCruiseOrder xpCruiseOrder = cruiseOrder.getData(); Long vehicleId = xpCruiseOrder.getVehicleId(); // 完成当前巡游单子 已完成 xpCruiseOrderClient.closeCruiseOrder(xpCruiseOrder.getVehicleVin()); xpCruiseOrderClient.completeCruiseOrder(Long.parseLong(orderId.substring(2))); R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(vehicleId); XpVehicle xpVehicle = xpVehicleR.getData(); // 运营中 继续执行 xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleOperationsController.java
@@ -90,9 +90,7 @@ } }else if(dto.getDepartureStatus()==3){ // 收车 关闭当前巡游单子 生成新的返程单子 找到收车站点 R<Long> r = xpCruiseOrderClient.updateCruiseOrder(xpVehicle.getVehicleVin()); // redis 获取当前最新经纬度位置 xpCruiseOrderClient.cancelCruiseOrderByVin(xpVehicle.getVehicleVin()); XpCruiseOrder xpCruiseOrder = new XpCruiseOrder(); if(vehiclePosition!=null){ xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/schedule/VehicleCollectionScheduleTask.java
@@ -201,7 +201,7 @@ */ private void sendCollectionCommand(XpVehicle xpVehicle) { // 收车 关闭当前巡游单子 生成新的返程单子 找到收车站点 R<Long> r = xpCruiseOrderClient.updateCruiseOrder(xpVehicle.getVehicleVin()); R<Long> r = xpCruiseOrderClient.cancelCruiseOrderByVin(xpVehicle.getVehicleVin()); // mongodb 获取当前最新经纬度位置 VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(xpVehicle.getVehicleVin())), VehiclePosition.class); xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/utils/GDMapGeocodingUtil.java
@@ -7,6 +7,7 @@ import com.xiaopeng.api.vo.operation.RouteVo; import com.xiaopeng.common.core.utils.HttpUtils; import com.xiaopeng.map.mangodb.service.XpGeoFencingPolygonService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @@ -18,6 +19,7 @@ /** * 高德地图的地理编码工具类 */ @Slf4j @Component @Lazy public class GDMapGeocodingUtil { @@ -117,7 +119,7 @@ params.put("sdkVersion", "9.850.152.3.532"); params.put("encoderVersion", "5.1"); String post = HttpUtils.post(url, JSON.toJSONString(params)); System.out.println("高德地图返回结果:"+ post); log.info("高德地图返回结果:"+ post); return post; } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
@@ -811,7 +811,7 @@ continue; } // 关闭巡游单子 R<Long> stringR = xpCruiseOrderClient.updateCruiseOrder(vehiclePosition.getVehicleVin()); R stringR = xpCruiseOrderClient.cancelCruiseOrderByVin(vehiclePosition.getVehicleVin()); if (stringR == null || stringR.getCode() != 200) { log.info("关闭巡游单子失败 车牌号 {}", vehiclePosition.getPlateNumber()); continue; @@ -860,7 +860,7 @@ continue; } // 关闭巡游单子 R<Long> stringR = xpCruiseOrderClient.updateCruiseOrder(vehicleId1.getVehicleVin()); R<?> stringR = xpCruiseOrderClient.cancelCruiseOrderByVin(vehicleId1.getVehicleVin()); if (stringR == null || stringR.getCode() != 200) { log.info("关闭巡游单子失败 车牌号 {}", vehicleId1.getPlateNumber()); continue; @@ -944,7 +944,7 @@ continue; } // 关闭巡游单子 R<Long> stringR = xpCruiseOrderClient.updateCruiseOrder(vehicleId1.getVehicleVin()); R<?> stringR = xpCruiseOrderClient.cancelCruiseOrderByVin(vehicleId1.getVehicleVin()); if (stringR == null || stringR.getData() == null) { log.info("关闭巡游单子失败"); continue; @@ -963,7 +963,7 @@ orderMissionClient.pushOrder(pushOrderDto); } catch (Exception e) { throw new RuntimeException(e); } finally { lock.unlock(); } xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpCruiseOrderController.java
@@ -41,24 +41,24 @@ /** * 查询并终止订单信息 返回id信息 * * 根据车辆VIN码取消订单 * 发送取消订单XPU报文 * @param */ @PostMapping("/inner/cruiseOrder/updateCruiseOrder") public R<Long> updateCruiseOrder(@RequestParam String vin) { Long id = xpCruiseOrderService.updateCruiseOrder(vin); @PostMapping("/inner/cruiseOrder/cancelCruiseOrderByVin") public R<Long> cancelCruiseOrderByVin(@RequestParam String vin) { Long id = xpCruiseOrderService.cancelCruiseOrderByVin(vin); return R.ok(id); } /** * 查询并完成订单信息 返回id信息 * 完成订单 * * @param */ @PostMapping("/inner/cruiseOrder/closeCruiseOrder") public R<Long> closeCruiseOrder(@RequestParam String vin) { Long id = xpCruiseOrderService.closeCruiseOrder(vin); return R.ok(id); @PostMapping("/inner/cruiseOrder/completeCruiseOrder") public R<?> completeCruiseOrder(@RequestParam Long orderId) { xpCruiseOrderService.completeCruiseOrder(orderId); return R.ok(); } @@ -67,9 +67,9 @@ * @param orderId * @return */ @PostMapping("/inner/cruiseOrder/updateCruiseOrderId") public R<Long> updateCruiseOrderId(@RequestParam Long orderId){ return xpCruiseOrderService.updateCruiseOrderId(orderId); @PostMapping("/inner/cruiseOrder/cancelCruiseOrderById") public R<?> cancelCruiseOrderById(@RequestParam Long orderId){ return xpCruiseOrderService.cancelCruiseOrderById(orderId); } xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/IXpCruiseOrderService.java
@@ -38,13 +38,13 @@ */ public interface IXpCruiseOrderService extends IService<XpCruiseOrder> { Long updateCruiseOrder(String vin); Long cancelCruiseOrderByVin(String vin); R updateCruiseOrderId(Long orderId); R cancelCruiseOrderById(Long orderId); Long closeCruiseOrder(String vin); void completeCruiseOrder(Long id); xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpCruiseOrderServiceImpl.java
@@ -52,29 +52,33 @@ * @param vin */ @Override public Long updateCruiseOrder(String vin) { public Long cancelCruiseOrderByVin(String vin) { LambdaQueryWrapper<XpCruiseOrder> wrapper = new LambdaQueryWrapper<XpCruiseOrder>().eq(XpCruiseOrder::getVehicleVin, vin).eq(XpCruiseOrder::getStatus, 1); XpCruiseOrder xpCruiseOrder = this.getOne(wrapper); if (xpCruiseOrder != null) { xpCruiseOrder.setStatus(2); this.update(xpCruiseOrder, wrapper); PushOrderDto pushOrderDto = new PushOrderDto(); pushOrderDto.setVin(vin); pushOrderDto.setOrderId("XU" + xpCruiseOrder.getId()); pushOrderDto.setOperation_type(OrderOperationType.CLOUD_CANCEL_ORDER); R<Boolean> booleanR = orderMissionClient.cancelOrder(pushOrderDto); if(booleanR==null || !booleanR.getData()){ log.info("XPU取消巡游订单失败"); return null; List<XpCruiseOrder> xpCruiseOrder = this.list(wrapper.orderByDesc(XpCruiseOrder::getCreateTime)); if (xpCruiseOrder != null && !xpCruiseOrder.isEmpty()) { xpCruiseOrder.forEach(s->{ s.setStatus(2); s.setVehicleId(null); }); this.updateBatchById(xpCruiseOrder); for (XpCruiseOrder cruiseOrder : xpCruiseOrder) { PushOrderDto pushOrderDto = new PushOrderDto(); pushOrderDto.setVin(vin); pushOrderDto.setOrderId("XU" + cruiseOrder.getId()); pushOrderDto.setOperation_type(OrderOperationType.CLOUD_CANCEL_ORDER); R<Boolean> booleanR = orderMissionClient.cancelOrder(pushOrderDto); if(booleanR==null || !booleanR.getData()){ log.info("XPU取消巡游订单失败"); } } return xpCruiseOrder.getId(); return xpCruiseOrder.get(0).getId(); } return null; } @Override public R updateCruiseOrderId(Long orderId) { public R cancelCruiseOrderById(Long orderId) { XpCruiseOrder xpCruiseOrder = this.getById(orderId); if (xpCruiseOrder != null) { xpCruiseOrder.setStatus(2); @@ -95,15 +99,13 @@ } @Override public Long closeCruiseOrder(String vin) { LambdaQueryWrapper<XpCruiseOrder> wrapper = new LambdaQueryWrapper<XpCruiseOrder>().eq(XpCruiseOrder::getVehicleVin, vin).eq(XpCruiseOrder::getStatus, 1); XpCruiseOrder xpCruiseOrder = this.getOne(wrapper); public void completeCruiseOrder(Long id) { XpCruiseOrder xpCruiseOrder = this.getById(id); if (xpCruiseOrder != null) { xpCruiseOrder.setStatus(3); this.update(xpCruiseOrder, wrapper); return xpCruiseOrder.getId(); xpCruiseOrder.setVehicleId(null); this.updateById(xpCruiseOrder); } return null; }