From 51c5d7b8ead89440d8d94acdfdd4c2232b4c7930 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期五, 27 二月 2026 11:42:28 +0800
Subject: [PATCH] 巡游订单处理

---
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpCruisePlanController.java |   66 +++++++++++++++++++++++++++++---
 1 files changed, 59 insertions(+), 7 deletions(-)

diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpCruisePlanController.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpCruisePlanController.java
index b88c508..76e66ec 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpCruisePlanController.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpCruisePlanController.java
@@ -1,8 +1,10 @@
 package com.xiaopeng.operation.controller;
 
 
+import cn.hutool.core.util.IdUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.xiaopeng.api.dto.operation.CruisePointDto;
+import com.xiaopeng.api.dto.operation.NewCruiseOrderDto;
 import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient;
 import com.xiaopeng.api.model.operation.XpCruisePlan;
 import com.xiaopeng.api.model.operation.XpCruisePlanPoint;
@@ -38,6 +40,7 @@
 import io.swagger.annotations.ApiParam;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -110,27 +113,32 @@
                 break;
             }
         }
+        XpCruiseOrder newXpCruiseOrder = dto.getNewXpCruiseOrder();
         XpCruisePlanPoint xpCruisePlanPoint = null;
         //   判断是否是最后一个 是则往前一个  否找下一个
         if (index == planPointList.size() - 1) {
             // 最后一个 找上一个
             xpCruisePlanPoint = planPointList.get(index - 1);
+            newXpCruiseOrder.setOrderReverse(2);
         } else if (index == 0) {
             // 第一个 找下一个
             xpCruisePlanPoint = planPointList.get(index + 1);
+            newXpCruiseOrder.setOrderReverse(1);
         } else {
             // 中间点位
             if (dto.getOrderReverse() == 1) {
                 // 正向 找下一个
                 xpCruisePlanPoint = planPointList.get(index + 1);
+                newXpCruiseOrder.setOrderReverse(1);
             } else {
                 // 反向找上一个
                 xpCruisePlanPoint = planPointList.get(index - 1);
+                newXpCruiseOrder.setOrderReverse(2);
             }
         }
         Long pointId = xpCruisePlanPoint.getPointId();
         XpPoint point = pointService.getById(pointId);
-        XpCruiseOrder newXpCruiseOrder = dto.getNewXpCruiseOrder();
+
         newXpCruiseOrder.setEndPointId(pointId);
         newXpCruiseOrder.setEndPointName(point.getPointName());
         newXpCruiseOrder.setEndLon(point.getPointLon());
@@ -142,27 +150,71 @@
     }
 
 
+    /**
+     * 获取巡游订单数据
+     * @return
+     */
     @PostMapping("/inner/cruise/getNewCruiseOrder")
-    public R<XpCruiseOrder> getNewCruiseOrder(@RequestParam Long vehicleId) {
-
-        // 获取车辆的车队id
+    public R<XpCruiseOrder> getNewCruiseOrder(@RequestBody NewCruiseOrderDto dto) {
 
         // 先找计划
-        XpCruisePlanVehicle plan = xpCruisePlanVehicleService.getOne(new LambdaQueryWrapper<XpCruisePlanVehicle>().eq(XpCruisePlanVehicle::getVehicleId, vehicleId));
+        XpCruisePlanVehicle plan = xpCruisePlanVehicleService.getOne(new LambdaQueryWrapper<XpCruisePlanVehicle>().eq(XpCruisePlanVehicle::getVehicleId, dto.getVehicleId()));
         // 找对应的多个点位
         List<XpCruisePlanPoint> planPointList = xpCruisePlanPointService.list(new LambdaQueryWrapper<XpCruisePlanPoint>().eq(XpCruisePlanPoint::getCruisePlanId, plan.getCruisePlanId()).orderByAsc(XpCruisePlanPoint::getSortOrder));
+
 
         XpCruisePlanPoint xpCruisePlanPoint = planPointList.get(0);
         Long pointId = xpCruisePlanPoint.getPointId();
         XpPoint point = pointService.getById(pointId);
         XpCruiseOrder newXpCruiseOrder = new XpCruiseOrder();
+        newXpCruiseOrder.setId("XU"+ IdUtil.fastUUID());
+        newXpCruiseOrder.setFleetId(dto.getFleetId());
+        newXpCruiseOrder.setVehicleId(dto.getVehicleId());
+        newXpCruiseOrder.setVehicleVin(dto.getVehicleVin());
+        newXpCruiseOrder.setOrderType(1);
+        newXpCruiseOrder.setMissionId(plan.getCruisePlanId());
+        newXpCruiseOrder.setStatus(1);
+        newXpCruiseOrder.setOrderReverse(1);
+
+        // 起点
         newXpCruiseOrder.setStartLon(point.getPointLon());
         newXpCruiseOrder.setStartLat(point.getPointLat());
         newXpCruiseOrder.setStartPointId(pointId);
         newXpCruiseOrder.setStartPointName(point.getPointName());
 
-        newXpCruiseOrder.setMissionId(xpCruisePlanPoint.getCruisePlanId());
-        return null;
+        // 终点
+
+        XpCruisePlanPoint endCruisePlanPoint = planPointList.get(1);
+        Long endPointId = endCruisePlanPoint.getPointId();
+        XpPoint endPoint = pointService.getById(endPointId);
+        newXpCruiseOrder.setEndPointId(endPointId);
+        newXpCruiseOrder.setEndPointName(endPoint.getPointName());
+        newXpCruiseOrder.setEndLon(endPoint.getPointLon());
+        newXpCruiseOrder.setEndLat(endPoint.getPointLat());
+
+
+        return R.ok(newXpCruiseOrder);
+    }
+
+
+    /**
+     * 获取车辆返回点位
+     * @param xpCruiseOrder
+     * @return
+     */
+    @PostMapping("/inner/cruise/findReturnCruisePoint")
+    public R<XpCruiseOrder> findReturnCruisePoint(@RequestBody XpCruiseOrder xpCruiseOrder){
+        // 先找计划
+        XpCruisePlanVehicle plan = xpCruisePlanVehicleService.getOne(new LambdaQueryWrapper<XpCruisePlanVehicle>().eq(XpCruisePlanVehicle::getVehicleId, xpCruiseOrder.getVehicleId()));
+        // 找对应的多个点位
+        List<XpCruisePlanPoint> planPointList = xpCruisePlanPointService.list(new LambdaQueryWrapper<XpCruisePlanPoint>().eq(XpCruisePlanPoint::getCruisePlanId, plan.getCruisePlanId()).orderByAsc(XpCruisePlanPoint::getSortOrder));
+
+        XpPoint xpPoint = pointService.list(new LambdaQueryWrapper<XpPoint>().eq(XpPoint::getParkingPoint, 1).in(XpPoint::getId, planPointList.stream().map(XpCruisePlanPoint::getPointId).collect(Collectors.toList()))).get(0);
+        xpCruiseOrder.setEndPointId(xpPoint.getId());
+        xpCruiseOrder.setEndPointName(xpPoint.getPointName());
+        xpCruiseOrder.setEndLon(xpPoint.getPointLon());
+        xpCruiseOrder.setEndLat(xpPoint.getPointLat());
+        return R.ok(xpCruiseOrder);
     }
 }
 

--
Gitblit v1.7.1