Sfoglia il codice sorgente

导出流文件的公用方法

yq 3 anni fa
parent
commit
f5c63ba673

+ 26 - 0
src/main/java/com/usky/dxtop/common/utils/ExcelUtils.java

@@ -0,0 +1,26 @@
+package com.usky.dxtop.common.utils;
+
+import org.apache.poi.ss.usermodel.Workbook;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.net.URLEncoder;
+
+/**
+ * @author yq
+ * @date 2021/9/1 16:35
+ */
+public class ExcelUtils {
+
+    public static void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) {
+        try {
+            response.setCharacterEncoding("UTF-8");
+            response.setHeader("content-Type", "application/vnd.ms-excel");
+            response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
+            workbook.write(response.getOutputStream());
+        } catch (IOException e) {
+            //throw new NormalException(e.getMessage());
+        }
+    }
+
+}

+ 7 - 5
src/main/java/com/usky/dxtop/controller/web/OrderController.java

@@ -14,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.Date;
 import java.util.List;
 import java.util.TreeMap;
@@ -105,8 +106,8 @@ public class OrderController extends BaseController {
     }
 
     @PostMapping("/exportDetail")
-    public AjaxResult exportDetail(@RequestBody OrderRequest orderRequest){
-        return AjaxResult.success(orderService.exportDetail(orderRequest));
+    public void exportDetail(@RequestBody OrderRequest orderRequest, HttpServletResponse response){
+        orderService.exportDetail(orderRequest,response);
     }
 
     /**
@@ -135,10 +136,11 @@ public class OrderController extends BaseController {
      * @return
      */
     @GetMapping("/reportExport")
-    public AjaxResult reportExport(@RequestParam(required = false) Date startTime,
+    public void reportExport(@RequestParam(required = false) Date startTime,
                                    @RequestParam(required = false) Date endTime,
-                                   @RequestParam Integer type){
-        return AjaxResult.success(orderService.reportExport(startTime,endTime,type));
+                                   @RequestParam Integer type,
+                                     HttpServletResponse response){
+        orderService.reportExport(startTime,endTime,type,response);
     }
 }
 

+ 3 - 2
src/main/java/com/usky/dxtop/service/OrderService.java

@@ -6,6 +6,7 @@ import com.usky.dxtop.model.Order;
 import com.usky.dxtop.service.vo.OrderReport;
 import com.usky.dxtop.service.vo.OrderRequest;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.Date;
 import java.util.List;
 
@@ -88,7 +89,7 @@ public interface OrderService extends IService<Order> {
      * @param orderRequest
      * @return
      */
-    String exportDetail(OrderRequest orderRequest);
+    void exportDetail(OrderRequest orderRequest, HttpServletResponse response);
 
     /**
      * 订单报表
@@ -108,5 +109,5 @@ public interface OrderService extends IService<Order> {
      * @param type
      * @return
      */
-    String reportExport(Date startTime,Date endTime,Integer type);
+    void reportExport(Date startTime,Date endTime,Integer type,HttpServletResponse response);
 }

+ 10 - 14
src/main/java/com/usky/dxtop/service/impl/OrderServiceImpl.java

@@ -37,10 +37,10 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.FastByteArrayOutputStream;
 import javax.imageio.ImageIO;
+import javax.servlet.http.HttpServletResponse;
 import java.awt.image.BufferedImage;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
+import java.io.*;
+import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -263,7 +263,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     }
 
     @Override
-    public String exportDetail(OrderRequest orderRequest) {
+    public void exportDetail(OrderRequest orderRequest,HttpServletResponse response) {
         Workbook workbook = null;
         File file = null;
         try {
@@ -276,9 +276,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                         return page.getRecords().stream().map(this::orderChangeOrderExport).collect(Collectors.toList());
                     },null);
             if (null != workbook) {
-                file = FileUtils.getFile(GlobalUtils.getTempBaseDir(), String.format("%s-%s.xlsx", "订单详情", System.currentTimeMillis() + ""));
-                FileOutputStream allListingFileOutputStream = new FileOutputStream(file);
-                workbook.write(allListingFileOutputStream);
+                String fileName = String.format("%s.xls", "订单详情");
+                ExcelUtils.downLoadExcel(fileName,response,workbook);
             } else {
                 throw new CustomException("表格数据为空");
             }
@@ -294,7 +293,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 }
             }
         }
-        return file.getName();
     }
 
     public OrderExport orderChangeOrderExport(Order order){
@@ -330,20 +328,19 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     }
 
     @Override
-    public String reportExport(Date startTime, Date endTime, Integer type) {
+    public void reportExport(Date startTime, Date endTime, Integer type, HttpServletResponse response) {
         Workbook workbook = null;
         File file = null;
         try {
-            ExportParams params = new ExportParams(null, "订单明细");
+            ExportParams params = new ExportParams(null, "订单统计");
             workbook = ExcelExportUtil.exportBigExcel(params, OrderReport.class,
                     (o, i) -> {
                         CommonPage<OrderReport> list = this.orderReportList(i,30,startTime,endTime,type);
                         return new ArrayList<>(list.getRecords());
                     },null);
             if (null != workbook) {
-                file = FileUtils.getFile(GlobalUtils.getTempBaseDir(), String.format("%s-%s.xlsx", "订单明细", System.currentTimeMillis() + ""));
-                FileOutputStream allListingFileOutputStream = new FileOutputStream(file);
-                workbook.write(allListingFileOutputStream);
+                String fileName = String.format("%s.xls", "订单统计");
+                ExcelUtils.downLoadExcel(fileName,response,workbook);
             } else {
                 throw new CustomException("表格数据为空");
             }
@@ -359,7 +356,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 }
             }
         }
-        return file.getName();
     }
 
     /**