xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/OrderMissionController.java
@@ -143,9 +143,17 @@ SnowFlake snowFlake = new SnowFlake(0, 0); snowFlake.withStartTimestamp(1420041600000L); long sequence = snowFlake.nextId(); xpuUtil.cloudOrderOperation(operationBuilder.build(), dto.getVin(), sequence); redisService.setCacheObject(String.valueOf(sequence), "cancelOrder_" + dto.getOrderId() + "_" + dto.getVin(), 30l, TimeUnit.MINUTES); return R.ok(true); MqttPublishDto mqttPublishDto = xpuUtil.cloudOrderOperation(operationBuilder.build(), dto.getVin(), sequence); if (mqttPublishDto.getCode() == 200) { if(!dto.getOrderId().contains("XU")){ // 正常订单处理 redisService.setCacheObject(String.valueOf(sequence), "cancelOrder_" + dto.getOrderId() + "_" + dto.getVin(), 30l, TimeUnit.MINUTES); } return R.ok(true); } return R.ok(false); } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/utils/TaskOrderUtil.java
@@ -784,7 +784,11 @@ continue; } // 关闭巡游单子 xpCruiseOrderClient.updateCruiseOrder(vehiclePosition.getVehicleVin()); R<String> stringR = xpCruiseOrderClient.updateCruiseOrder(vehiclePosition.getVehicleVin()); if(stringR ==null || stringR.getData()==null){ log.info("关闭巡游单子失败"); continue; } // 下发命令 PushOrderDto pushOrderDto = new PushOrderDto(); @@ -830,7 +834,12 @@ continue; } // 关闭巡游单子 xpCruiseOrderClient.updateCruiseOrder(vehicleId1.getVehicleVin()); R<String> stringR = xpCruiseOrderClient.updateCruiseOrder(vehicleId1.getVehicleVin()); if(stringR ==null || stringR.getData()==null){ log.info("关闭巡游单子失败"); continue; } PushOrderDto pushOrderDto = new PushOrderDto(); pushOrderDto.setVin(vehiclePosition.getVin()); @@ -910,7 +919,11 @@ continue; } // 关闭巡游单子 xpCruiseOrderClient.updateCruiseOrder(vehicleId1.getVehicleVin()); R<String> stringR = xpCruiseOrderClient.updateCruiseOrder(vehicleId1.getVehicleVin()); if(stringR ==null || stringR.getData()==null){ log.info("关闭巡游单子失败"); continue; } PushOrderDto pushOrderDto = new PushOrderDto(); pushOrderDto.setVin(vehiclePosition.getVin()); xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpCruiseOrderServiceImpl.java
@@ -118,7 +118,7 @@ private final XpVehicleClient xpVehicleClient; private final XpFleetVehicleClient xpFleetVehicleClient; private final XpFleetClient xpFleetClient; private final OrderMissionClient orderMissionClient; /** * 关闭当前巡游单子 * @param vin @@ -131,6 +131,19 @@ xpCruiseOrder.setStatus(2); this.update(xpCruiseOrder, wrapper); // todo 给XPU下发订单取消报文,如果取消不成功需要重试。两次不成功,则需要换车 PushOrderDto pushOrderDto = new PushOrderDto(); pushOrderDto.setVin(vin); pushOrderDto.setOrderId(xpCruiseOrder.getId()); pushOrderDto.setOperation_type(OrderOperationType.VEHICLE_CANCEL_ORDER); R<Boolean> booleanR = orderMissionClient.cancelOrder(pushOrderDto); if(booleanR==null || !booleanR.getData()){ log.error("下发失败重试一次"); R<Boolean> booleanR1 = orderMissionClient.cancelOrder(pushOrderDto); if(booleanR1==null || !booleanR1.getData()){ log.error("换车"); return null; } } return xpCruiseOrder.getId(); }