From b91c1ee0a758cfa20ae5b0ed896a7281fb34622f Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期一, 23 三月 2026 17:33:03 +0800
Subject: [PATCH] bugfix

---
 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpCruiseOrderController.java |   97 ++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 85 insertions(+), 12 deletions(-)

diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpCruiseOrderController.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpCruiseOrderController.java
index 742fce1..7b13724 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpCruiseOrderController.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpCruiseOrderController.java
@@ -1,6 +1,8 @@
 package com.xiaopeng.order.controller;
 
-import cn.hutool.core.util.IdUtil;
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.entity.ExportParams;
+import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.xiaopeng.api.dto.automaticPilot.PushOrderDto;
 import com.xiaopeng.api.dto.order.AddCruiseMissionDto;
@@ -8,22 +10,29 @@
 import com.xiaopeng.api.model.order.XpCruiseOrder;
 import com.xiaopeng.api.vo.OrderType;
 import com.xiaopeng.common.core.domain.R;
+import com.xiaopeng.common.core.utils.WebUtils;
 import com.xiaopeng.common.core.web.page.PageInfo;
+import com.xiaopeng.order.model.exportExcel.XpCruiseOrderExportExcel;
+import com.xiaopeng.order.model.exportExcel.XpOrderExportExcel;
+import com.xiaopeng.order.model.query.XpCruiseOrderExcelQuery;
+import com.xiaopeng.order.model.vo.XpOrderPageVO;
 import com.xiaopeng.order.service.IXpCruiseOrderService;
 import com.xiaopeng.order.model.query.XpCruiseOrderPageQuery;
 import com.xiaopeng.order.model.vo.XpCruiseOrderPageVO;
 import com.xiaopeng.order.service.IXpOrderService;
-import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
+import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.net.URLEncoder;
 import java.util.Arrays;
+import java.util.List;
 
 /**
  * <p>
@@ -46,6 +55,7 @@
     /**
      * 根据车辆VIN码取消订单
      * 发送取消订单XPU报文
+     *
      * @param
      */
     @PostMapping("/inner/cruiseOrder/cancelCruiseOrderByVin")
@@ -53,6 +63,7 @@
         Long id = xpCruiseOrderService.cancelCruiseOrderByVin(vin);
         return R.ok(id);
     }
+
     /**
      * 完成订单
      *
@@ -67,22 +78,24 @@
 
     /**
      * 根据订单ID查询取消订单
+     *
      * @param orderId
      * @return
      */
     @PostMapping("/inner/cruiseOrder/cancelCruiseOrderById")
-    public R<?> cancelCruiseOrderById(@RequestParam Long orderId){
+    public R<?> cancelCruiseOrderById(@RequestParam Long orderId) {
         return xpCruiseOrderService.cancelCruiseOrderById(orderId);
     }
 
 
     /**
      * 查询订单信息
+     *
      * @param orderId
      * @return
      */
     @PostMapping("/inner/cruiseOrder/getCruiseOrder")
-    public R<XpCruiseOrder> getCruiseOrder(@RequestParam Long orderId){
+    public R<XpCruiseOrder> getCruiseOrder(@RequestParam Long orderId) {
         return R.ok(xpCruiseOrderService.getById(orderId));
     }
 
@@ -132,26 +145,86 @@
 
     /**
      * 添加巡游任务 下发命令
+     *
      * @param
      * @param
      */
     @PostMapping("/inner/cruiseOrder/addCruiseMission")
-    public R<?> addCruiseMission(@RequestBody AddCruiseMissionDto dto){
-        xpOrderService.addCruiseMission(dto.getVehicle(),dto.getOrder());
+    public R<?> addCruiseMission(@RequestBody AddCruiseMissionDto dto) {
+        xpOrderService.addCruiseMission(dto.getVehicle(), dto.getOrder());
         return R.ok();
     }
 
 
-
     /**
      * 终止所有没结束或者终止的订单
+     *
      * @param vin
      * @return
      */
     @PostMapping("/inner/cruiseOrder/stopAllCruiseOrder")
-    public R<?> stopAllCruiseOrder(@RequestParam String vin){
+    public R<?> stopAllCruiseOrder(@RequestParam String vin) {
         xpCruiseOrderService.update(new UpdateWrapper<XpCruiseOrder>().eq("vehicleVin", vin)
                 .in("status", Arrays.asList(0, 1)).set("status", 2));
         return R.ok();
     }
+
+    /**
+     * 巡游订单导出
+     *
+     * @param query 查询参数
+     */
+    @ApiOperation(value = "巡游订单导出", tags = {"管理后台-巡游订单"})
+    @PostMapping("/api/v1/cruiseOrder/exportExcel")
+    public void exportExcel(@RequestBody XpCruiseOrderExcelQuery query) {
+        // 1. 查询导出数据
+        List<XpCruiseOrderPageVO> dataList = xpCruiseOrderService.getExportList(query);
+
+        // 2. 转换为导出对象
+        List<XpCruiseOrderExportExcel> exportList = BeanUtil.copyToList(dataList, XpCruiseOrderExportExcel.class);
+
+        // 3. 生成 Excel
+        Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), XpCruiseOrderExportExcel.class, exportList);
+
+        // 4. 输出到响应流
+        HttpServletResponse response = WebUtils.response();
+        response.setContentType("application/vnd.ms-excel");
+        response.setCharacterEncoding("utf-8");
+        ServletOutputStream outputStream = null;
+        try {
+            String fileName = URLEncoder.encode("巡游订单订单列表.xls", "utf-8");
+            response.setHeader("Content-disposition", "attachment;filename=" + fileName);
+            outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                if (outputStream != null) {
+                    outputStream.close();
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    /**
+     * 删除巡游订单
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "删除巡游订单", tags = {"管理后台-巡游订单"})
+    @DeleteMapping(value = "/api/v1/cruise-order/deleteById/{id}")
+    public R<?> deleteById(@PathVariable Long id){
+        xpCruiseOrderService.removeById(id);
+        return R.ok();
+    }
+
+    @ApiOperation(value = "巡游订单详情", tags = {"管理后台-巡游订单"})
+    @GetMapping(value = "/api/v1/cruise-order/getDetailById/{id}")
+    public R<XpCruiseOrder> getDetailById(@PathVariable Long id){
+        XpCruiseOrder xpCruiseOrder = xpCruiseOrderService.getById(id);
+        return R.ok(xpCruiseOrder);
+    }
 }

--
Gitblit v1.7.1