Ver código fonte

测试导出问题

yangyb 1 semana atrás
pai
commit
77ec1eeedc

+ 11 - 4
mall-service/src/main/java/com/txz/mall/service/impl/StoreOrderServiceImpl.java

@@ -40,6 +40,7 @@ import tk.mybatis.mapper.entity.Example;
 import vo.*;
 
 import javax.servlet.http.HttpServletResponse;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.math.BigDecimal;
@@ -242,7 +243,7 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
 
     @Override
     public void exportFile(StoreOrderDTO dto, HttpServletResponse response) {
-        OutputStream outputStream;
+        OutputStream outputStream = null;
         try {
             outputStream = response.getOutputStream();
             response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
@@ -1331,18 +1332,24 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
 
     @Override
     public void exportDelivery(HttpServletResponse response) {
-        OutputStream outputStream;
         try {
-            outputStream = response.getOutputStream();
             response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
             response.setCharacterEncoding("utf-8");
             String fileName = URLEncoder.encode("导出订单", "UTF-8").replaceAll("\\+", "%20");
             response.setHeader(
                     "Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
+            // 使用字节数组输出流作为中间缓冲
+            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
             ArrayList<OrderDeliveryPO> list = new ArrayList<>();
             EasyExcel.write(outputStream, OrderDeliveryPO.class).sheet("导出发货模版").doWrite(list);
+
+            // 将数据写入响应输出流
+            outputStream.writeTo(response.getOutputStream());
+            outputStream.close();
+            response.getOutputStream().flush();
         } catch (Exception e) {
-            throw new ServiceException("模板下载失败, 请联系管理员");
+            log.error("导出配送模板失败: ", e);
+            throw new ServiceException("模板下载失败, 请联系管理员: " + e.getMessage());
         }
     }