From 6d27673135ac72de6e8e20e56c748c4ef1be47b4 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期三, 17 十二月 2025 14:24:58 +0800
Subject: [PATCH] 【丽水】统计随访数据 增加redis记录结果 提高查询效率

---
 ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java |   50 +++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 45 insertions(+), 5 deletions(-)

diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
index b37fc98..c81ec58 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
@@ -1,14 +1,11 @@
 package com.ruoyi.common.utils.poi;
 
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
+import java.io.*;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.lang.reflect.ParameterizedType;
 import java.math.BigDecimal;
+import java.net.URLEncoder;
 import java.text.DecimalFormat;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
@@ -23,8 +20,10 @@
 import java.util.Set;
 import java.util.UUID;
 import java.util.stream.Collectors;
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import com.ruoyi.common.utils.ServletUtils;
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.RegExUtils;
 import org.apache.commons.lang3.reflect.FieldUtils;
@@ -445,6 +444,22 @@
         response.setCharacterEncoding("utf-8");
         this.init(list, sheetName, title, Type.EXPORT);
         exportExcel(response);
+    }
+
+    /**
+     * 瀵筶ist鏁版嵁婧愬皢鍏堕噷闈㈢殑鏁版嵁瀵煎叆鍒癳xcel琛ㄥ崟锛堝甫鏂囦欢鍚嶏級
+     *
+     * @param response  杩斿洖鏁版嵁
+     * @param list      瀵煎嚭鏁版嵁闆嗗悎
+     * @param sheetName 宸ヤ綔琛ㄧ殑鍚嶇О
+     * @param fileName 瀵煎嚭鏂囦欢鐨勫悕绉�
+     * @return 缁撴灉
+     */
+    public void exportExcelWithFileName(HttpServletResponse response, List<T> list, String sheetName, String fileName) {
+        //璁剧疆鏂囦欢鍚�
+        HttpServletRequest request = ServletUtils.getRequest();
+        setExcelFileName(response, request, fileName);
+        exportExcel(response, list, sheetName, StringUtils.EMPTY);
     }
 
     /**
@@ -1432,4 +1447,29 @@
         }
         return method;
     }
+
+    /**
+     * 璁剧疆瀵煎嚭Excel鏂囦欢鍚嶇О
+     * @param response 杩斿洖鏁版嵁
+     * @param request 娴忚鍣ㄨ姹傚ご
+     * @param fileName 鏂囦欢鍚嶇О
+     */
+    public void setExcelFileName(HttpServletResponse response, HttpServletRequest request, String fileName) {
+        try {
+            //浼氭竻绌哄搷搴旂紦鍐插尯鐨勫唴瀹癸紝纭繚鍚庣画杈撳嚭涓嶄細鍙楀埌涔嬪墠鏁版嵁鐨勫奖鍝�
+            response.reset();
+            // 瀹氫箟娴忚鍣ㄥ搷搴旇〃澶达紝椤哄甫瀹氫箟涓嬭浇鍚�
+            fileName = fileName + ".xlsx";
+            // 瀵规枃浠跺悕杩涜URL缂栫爜锛屾敮鎸佷腑鏂囨枃浠跺悕
+            String encodedFileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");
+            // 浣跨敤 filename* 鍙傛暟鏀寔 UTF-8 缂栫爜锛圧FC 5987锛夛紝鍚屾椂淇濈暀 filename 鍙傛暟鍏煎鏃ф祻瑙堝櫒
+            response.setHeader("Content-Disposition", "attachment; filename=\"" + encodedFileName +
+                    "\"; filename*=utf-8''" + encodedFileName);
+            // 瀹氫箟涓嬭浇鐨勭被鍨嬶紝鏍囨槑鏄痚xcel鏂囦欢
+            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+            response.setCharacterEncoding("utf-8");
+        }catch (Exception e){
+            log.error("{}璁剧疆瀵煎嚭Excel鏂囦欢鍚嶇О寮傚父,{}", fileName, e.getMessage());
+        }
+    }
 }

--
Gitblit v1.9.3