From 7696a10d7f7af7046ebbaf3d2a812a4c28b90346 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Mon, 21 Jul 2025 18:07:18 +0800
Subject: [PATCH] refactor(mall): 重构订单导出功能

---
 src/main/resources/templates/index.html                                              |    2 
 src/main/java/cc/mrbird/febs/mall/controller/clothes/AdminClothesTypeController.java |   74 +++++++++++++++++++++++++++++++++---
 src/main/java/cc/mrbird/febs/mall/entity/ClothesOrder.java                           |    6 +++
 3 files changed, 74 insertions(+), 8 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/controller/clothes/AdminClothesTypeController.java b/src/main/java/cc/mrbird/febs/mall/controller/clothes/AdminClothesTypeController.java
index 7aa560b..2b1bb00 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/clothes/AdminClothesTypeController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/clothes/AdminClothesTypeController.java
@@ -4,8 +4,10 @@
 import cc.mrbird.febs.common.controller.BaseController;
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.common.entity.QueryRequest;
+import cc.mrbird.febs.common.enumerates.ClothesOrderStatusEnum;
 import cc.mrbird.febs.common.enumerates.OrderDeliveryStateEnum;
 import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
+import cc.mrbird.febs.common.exception.FebsException;
 import cc.mrbird.febs.common.utils.AppContants;
 import cc.mrbird.febs.common.utils.RedisUtils;
 import cc.mrbird.febs.common.utils.excl.ExcelSheetPO;
@@ -19,6 +21,8 @@
 import cc.mrbird.febs.mall.dto.activity.AdminCategoryUpdateDto;
 import cc.mrbird.febs.mall.dto.clothes.*;
 import cc.mrbird.febs.mall.entity.*;
+import cc.mrbird.febs.mall.mapper.ClothesOrderMapper;
+import cc.mrbird.febs.mall.mapper.ClothesTypeMapper;
 import cc.mrbird.febs.mall.service.ClothesTypeService;
 import cc.mrbird.febs.mall.vo.clothes.AdminClothesPrintLocationVo;
 import cc.mrbird.febs.mall.vo.clothes.AdminClothesPrintMemberStatureVo;
@@ -31,6 +35,7 @@
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSON;
 import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.validation.annotation.Validated;
@@ -46,10 +51,8 @@
 import java.io.OutputStream;
 import java.math.BigDecimal;
 import java.net.URLEncoder;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Slf4j
 @Validated
@@ -59,6 +62,8 @@
 public class AdminClothesTypeController extends BaseController {
 
     private final ClothesTypeService clothesTypeService;
+    private final ClothesOrderMapper clothesOrderMapper;
+    private final ClothesTypeMapper clothesTypeMapper;
     private final RedisUtils redisUtils;
 
     /**
@@ -443,9 +448,13 @@
         return new FebsResponse().success();
     }
 
-    @GetMapping("exportOrderList/{ids}")
+    @GetMapping("exportOrderList")
     @ControllerEndpoint(operation = "订单列表", exceptionMessage = "导出失败")
-    public FebsResponse exportOrderList(@NotBlank(message = "{required}") @PathVariable String ids, HttpServletResponse response) throws IOException {
+    public FebsResponse exportOrderList(ClothesOrder clothesOrder, HttpServletResponse response) throws IOException {
+        if(ObjectUtil.isNull(clothesOrder.getIds())){
+            throw new FebsException("请选择要导出的订单");
+        }
+        String ids = clothesOrder.getIds();
         List<String> List = StrUtil.splitTrim(ids, ",");
         if(CollUtil.isNotEmpty( List)){
             ArrayList<Long> orderIds = new ArrayList<>();
@@ -455,7 +464,58 @@
             }
             if(CollUtil.isNotEmpty(orderIds)){
 
-                clothesTypeService.exportOrderList(orderIds,response);
+                List<ExcelSheetPO> res = new ArrayList<>();
+
+                ExcelSheetPO orderSheet = new ExcelSheetPO();
+                String title = "订单列表";
+                orderSheet.setSheetName(title);
+                orderSheet.setTitle(title);
+                String[] header = {"订单ID", "订单编号", "收货姓名", "收货电话", "收货地址", "商品详情", "备注", "物流单号", "物流公司", "物流公司码"};
+                orderSheet.setHeaders(header);
+
+                QueryRequest request = new QueryRequest();
+                request.setPageNum(1);
+                request.setPageSize(9999);
+                List<ClothesOrder> dataList = clothesOrderMapper.selectList(
+                        Wrappers.lambdaQuery(ClothesOrder.class)
+                                .in(ClothesOrder::getId, orderIds)
+                                .eq(ClothesOrder::getDelFlag, 0)
+                                .eq(ClothesOrder::getStatus, ClothesOrderStatusEnum.WAIT_SHIPPING.getValue()));
+                Map<Long, ClothesType> longClothesTypeHashMap = new HashMap<>();
+                if(CollUtil.isNotEmpty(dataList)){
+                    Set<Long> typeIds = dataList.stream().map(ClothesOrder::getTypeId).collect(Collectors.toSet());
+                    List<ClothesType> clothesTypes = clothesTypeMapper.selectList(
+                            Wrappers.lambdaQuery(ClothesType.class)
+                                    .in(ClothesType::getId, typeIds)
+                    );
+                    if(CollUtil.isNotEmpty(clothesTypes)){
+                        //stream操作clothesTypes,返回一个HashMap<Long, ClothesType>, key为clothesType.id, value为clothesType
+                        longClothesTypeHashMap = clothesTypes.stream().collect(Collectors.toMap(ClothesType::getId, clothesType -> clothesType));
+                    }
+                }
+
+                List<List<Object>> list = new ArrayList<>();
+
+                if (dataList.size() > 0) {
+                    for (ClothesOrder item : dataList) {
+                        List<Object> temp = new ArrayList<>();
+                        temp.add(item.getId());
+                        temp.add(item.getOrderNo());
+                        temp.add(item.getName());
+                        temp.add(item.getPhone());
+                        temp.add(item.getAddress());
+                        temp.add(longClothesTypeHashMap.get(item.getTypeId()).getName());
+                        temp.add(item.getRemark());
+                        list.add(temp);
+                    }
+                }
+                orderSheet.setDataList(list);
+                res.add(orderSheet);
+                response = ResponseHeadUtil.setExcelHead(response);
+                response.setHeader("Content-Disposition",
+                        "attachment;filename=" + URLEncoder.encode(title + DateUtil.format(new Date(), "yyyyMMDDHHmmss") + ".xlsx".trim(), "UTF-8"));
+                OutputStream os = response.getOutputStream();
+                ExcelUtil.createWorkbookAtOutStream(ExcelVersion.V2007, res, os, true);
             }
         }
         return null;
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/ClothesOrder.java b/src/main/java/cc/mrbird/febs/mall/entity/ClothesOrder.java
index 0d0e73a..094827e 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/ClothesOrder.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/ClothesOrder.java
@@ -1,6 +1,7 @@
 package cc.mrbird.febs.mall.entity;
 
 import cc.mrbird.febs.common.entity.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
@@ -65,4 +66,9 @@
     private Integer delFlag;
 
 
+
+    @TableField(exist = false)
+    private String ids;
+
+
 }
diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html
index cf7f0af..23cd392 100644
--- a/src/main/resources/templates/index.html
+++ b/src/main/resources/templates/index.html
@@ -23,7 +23,7 @@
     <script src="https://webapi.amap.com/maps?v=1.4.15&key=e32064fc8a9dfe7af7d2d0a947b8df32&plugin=AMap.Autocomplete,AMap.PolyEditor,AMap.Geocoder,AMap.PolylineEditor"></script>
     <link href="https://unpkg.com/@wangeditor/editor@5.0.1/dist/css/style.css" rel="stylesheet">
     <script src="https://unpkg.com/@wangeditor/editor@latest/dist/index.js"></script>
-    <script src="http://gosspublic.alicdn.com/aliyun-oss-sdk-6.17.0.min.js"></script>
+    <script src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.17.0.min.js"></script>
     <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/wangeditor@latest/dist/wangEditor.min.js" ></script>
     <link rel="icon" th:href="@{febs/images/favicon.ico}" type="image/x-icon"/>
 </head>

--
Gitblit v1.9.1