From 79805d16fdec4905deac5a8474c155234e0b3ea7 Mon Sep 17 00:00:00 2001
From: zjk <852185829@qq.com>
Date: 星期二, 14 四月 2026 21:32:31 +0800
Subject: [PATCH] 1.车辆接驾中异常处理 2.行驶中,用户去掉订单异常处理 3.行驶中,车辆故障异常处理

---
 xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java |   55 ++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 40 insertions(+), 15 deletions(-)

diff --git a/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java b/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
index 5f7f1c3..e5685b7 100644
--- a/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
+++ b/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
@@ -498,7 +498,13 @@
                     log.info("车辆故障,车辆状态修改0 {}", vehicle.getPlateNumber());
                 }
             }else {
-                //正常订单
+                //正常订单 车辆故障
+                /*
+                1.将订单信息车辆的 查询出来 设置故障状态
+                2.解除用户和车的关系
+                3.如果是 接驾中的车需要重新派车
+                4.如果是行驶中的车需要将订单结束 计算金额
+                 */
                 XpOrder xpOrder = xpOrderClient.queryOrderById(Long.parseLong(orderId)).getData();
                 vehicle = xpVehicleClient.queryById(xpOrder.getVehicleId()).getData();
                 if (vehicle != null) {
@@ -517,18 +523,33 @@
                     cancelTaxiPassengerVo.setAppId(appid);
                     userVehicleClient.cancelTaxiPassenger(cancelTaxiPassengerVo);
                 }
-                // TODO 重新派单
-                ReassignOrderDTO reassignOrderDTO = new ReassignOrderDTO();
-                reassignOrderDTO.setUid(xpOrder.getAppUserId().toString());
-                reassignOrderDTO.setOrderNo(xpOrder.getOrderNumber());
-                reassignOrderDTO.setCount(10);
-                RealtimePose pose = systemRuntimeStatus.getPose();
-                Wgs naviPose = pose.getNaviPose();
-                Double latitude = naviPose.getLatitude();
-                Double longitude = naviPose.getLongitude();
-                reassignOrderDTO.setLongitude(longitude);
-                reassignOrderDTO.setLatitude(latitude);
-                reassignOrderClient.reassignOrder(reassignOrderDTO);
+                //status 状态 0=已取消,1=待接单,2=待出发,3=接驾中,4=待客上车,5=乘客已上车,6=服务中,7=待客下车,8=待付款,9=待评价,10=已完成
+                List<Integer> notDrive = new ArrayList<Integer>(){{ //未行驶的情况下订单故障状态点
+                    add(OrderStatusEnum.READY_DEPART.getCode());add(OrderStatusEnum.PICK_UP.getCode());
+                    add(OrderStatusEnum.PICK_UP_GUESTS.getCode());add(OrderStatusEnum.PASSENGER_BOARDED.getCode());
+                }};
+
+                if(xpOrder.getStatus().equals(OrderStatusEnum.IN_SERVICE.getCode())
+                        || xpOrder.getStatus().equals(OrderStatusEnum.SEE_OFF_GUESTS.getCode()) ){ //6=服务中 7=待客下车 在行驶中 修改订单-已完成  需要处理订单金额
+                    //单独写个修改订单的方法。
+//                    ff
+                    xpOrderClient.carAbnormalUpdateOrderStatus(Long.parseLong(orderId));
+
+                }else if(notDrive.contains(xpOrder.getStatus())){//在接驾中 车辆出现故障 重新派单
+
+                    // TODO 重新派单
+                    ReassignOrderDTO reassignOrderDTO = new ReassignOrderDTO();
+                    reassignOrderDTO.setUid(xpOrder.getAppUserId().toString());
+                    reassignOrderDTO.setOrderNo(xpOrder.getOrderNumber());
+                    reassignOrderDTO.setCount(10);
+                    RealtimePose pose = systemRuntimeStatus.getPose();
+                    Wgs naviPose = pose.getNaviPose();
+                    Double latitude = naviPose.getLatitude();
+                    Double longitude = naviPose.getLongitude();
+                    reassignOrderDTO.setLongitude(longitude);
+                    reassignOrderDTO.setLatitude(latitude);
+                    reassignOrderClient.reassignOrder(reassignOrderDTO);
+                }
             }
             //添加车辆异常任务和发送消息
             xpTaskClient.saveVehicleAccidentError(vehicle.getId());
@@ -1284,8 +1305,12 @@
                             if(xpOrder.getStatus() == 0 || xpOrder.getStatus() >= 8){
                                 return;
                             }
-                            if(xpOrder.getStatus() > 5 && xpOrder.getStatus() < 8){
-                                //行程中取消订单,按照行程结束处理
+
+                            List<Integer>  xczqx = new ArrayList<Integer>(){{
+                                add(OrderStatusEnum.IN_SERVICE.getCode());//服务中
+                                add(OrderStatusEnum.SEE_OFF_GUESTS.getCode());//SEE_OFF_GUESTS
+                            }};
+                            if(xczqx.contains(xpOrder.getStatus())){//行程中取消订单,按照行程结束处理
                                 buildPushOrderStatus(cmd, orderId, OrderStatusEnum.SEE_OFF_GUESTS, sequence);
                                 xpOrderClient.updateOrderStatus(Long.parseLong(orderId), OrderStatusEnum.SEE_OFF_GUESTS.getCode());
                                 redisService.setCacheObject("ORDER_STATUS:" + orderId, OrderStatusEnum.SEE_OFF_GUESTS.getCode(), 24L, TimeUnit.HOURS);

--
Gitblit v1.7.1