From d19e91bcc4ed9ab08e8be375fb5fc0f7e874a6a9 Mon Sep 17 00:00:00 2001
From: whycxzp <glperry@163.com>
Date: 星期三, 30 四月 2025 18:17:44 +0800
Subject: [PATCH] 测试调整格式

---
 src/main/java/com/whyc/controller/ExcelController.java |    5 +++--
 src/main/java/com/whyc/service/ExcelService.java       |   50 ++++++++++++++++++++++++++++++++++++++------------
 src/main/java/com/whyc/util/DateUtil.java              |    2 ++
 3 files changed, 43 insertions(+), 14 deletions(-)

diff --git a/src/main/java/com/whyc/controller/ExcelController.java b/src/main/java/com/whyc/controller/ExcelController.java
index 4bb7c3b..6f6742d 100644
--- a/src/main/java/com/whyc/controller/ExcelController.java
+++ b/src/main/java/com/whyc/controller/ExcelController.java
@@ -8,6 +8,7 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 
 @RequestMapping("excel")
@@ -20,8 +21,8 @@
 
     @GetMapping("dcReport")
     @ApiOperation(value = "鐩存祦鎶ヨ〃")
-    public void dcReport(int battGroupId,int testRecordCount) throws IOException {
-        service.dcReport(battGroupId,testRecordCount);
+    public void dcReport(int battGroupId, int testRecordCount, HttpServletResponse response) throws IOException {
+        service.dcReport(battGroupId,testRecordCount,response);
     }
 
 
diff --git a/src/main/java/com/whyc/service/ExcelService.java b/src/main/java/com/whyc/service/ExcelService.java
index 8a130d6..2495b18 100644
--- a/src/main/java/com/whyc/service/ExcelService.java
+++ b/src/main/java/com/whyc/service/ExcelService.java
@@ -18,10 +18,12 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.http.HttpServletResponse;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.nio.charset.StandardCharsets;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -52,22 +54,44 @@
      *
      * @throws IOException
      */
-    public void dcReport(int battGroupId,int testRecordCount) throws IOException {
-        String filePath = "C:\\Users\\29550\\Desktop\\褰撳墠椤圭洰\\2023\\0涔屼笢寰风郴缁焅\娴嬭瘯.xlsx";
+    public void dcReport(int battGroupId, int testRecordCount, HttpServletResponse response) throws IOException {
+        //String filePath = "C:\\Users\\29550\\Desktop\\褰撳墠椤圭洰\\2023\\0涔屼笢寰风郴缁焅\娴嬭瘯.xlsx";
         //鍒涘缓涓�涓伐浣滅翱
         XSSFWorkbook workbook = new XSSFWorkbook();
         //鍒涘缓sheet1
-        createSheet1(workbook,battGroupId,testRecordCount);
+        PowerInf battInfo = createSheet1(workbook, battGroupId, testRecordCount);
         //鍒涘缓sheet2 -- 姣忔湀鐢靛帇,12涓湀,鍙栨瘡鏈�1鍙烽浂鐐归浂鍒�
         //鍒涘缓sheet3 -- 姣忔湀鍐呴樆, 12涓湀,鍙栨瘡鏈�1鍙烽浂鐐归浂鍒�
         createSheet2And3(workbook,battGroupId);
         //鍒涘缓sheet4 -- 姣忓ぉ娓╁害, 30澶�, 鍙栨瘡澶╅浂鐐归浂鍒�
         createSheet4(workbook,battGroupId);
 
-        // 灏嗗伐浣滅翱鍐欏叆鏂囦欢
+        /*// 灏嗗伐浣滅翱鍐欏叆鏂囦欢
         FileOutputStream fileOut = new FileOutputStream(filePath);
-        workbook.write(fileOut);
+        workbook.write(fileOut);*/
+        String filename ="鐩存祦鎶ヨ〃_"+battInfo.getPowerName()+"_"+battInfo.getBattGroupName()+".xlsx";
+        // 鏍规嵁娴忚鍣ㄥ鎴风鍋氫笉鍚岀紪鐮侊紝鍏煎鎬ф洿濂�
+        String encodedFilename = java.net.URLEncoder.encode(filename, String.valueOf(StandardCharsets.UTF_8));
+        boolean isMSBrowser = false;
+        String ua = response.getHeader("User-Agent");
+        if (ua != null) {
+            ua = ua.toLowerCase();
+            if (ua.contains("msie") || ua.contains("edge") || ua.contains("trident")) {
+                isMSBrowser = true;
+            }
+        }
 
+        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+        if (isMSBrowser) {
+            // IE/Edge 浣跨敤 UTF-8 缂栫爜骞剁敤 URLEncoder
+            response.setHeader("Content-Disposition", "attachment;filename=" + encodedFilename + ";filename*=utf-8''" + encodedFilename);
+        } else {
+            // Chrome/Firefox 绛変娇鐢� RFC 5987 缂栫爜鏂瑰紡
+            response.setHeader("Content-Disposition", "attachment;filename*=UTF-8''" + encodedFilename);
+        }
+
+
+        workbook.write(response.getOutputStream());
         // 鍏抽棴宸ヤ綔绨�
         workbook.close();
 
@@ -501,7 +525,7 @@
     }
 
     //private static void createSheet1(XSSFWorkbook workbook, int battGroupId, int testRecordCount) {
-    private void createSheet1(XSSFWorkbook workbook, int battGroupId, int testRecordCount) {
+    private PowerInf createSheet1(XSSFWorkbook workbook, int battGroupId, int testRecordCount) {
         XSSFSheet sheet = workbook.createSheet("鏀剧數鍏呯數鐢靛帇鏁版嵁鎶ヨ〃");
         //鎬荤殑鍒楁暟鏍规嵁 鏀剧數鏃堕暱鍜屽厖鐢垫椂闀垮喅瀹�
         //鏁版嵁鍑嗗
@@ -618,14 +642,14 @@
                 "宸ヤ綔鎴愬憳锛氬懆绱犳枃銆佹潕蹇楁爣銆佺帇鏈堢伩绛�");
 
         XSSFCell cell3Row2 = row1.createCell(3);
-        cell3Row2.setCellValue("鏀剧數鏃ユ湡锛�2021.10.30\n" +
-                "鏀剧數寮�濮嬫椂闂达細10:00\n" +
-                "鏀剧數缁撴潫鏃堕棿锛�19:47");
+        cell3Row2.setCellValue("鏀剧數鏃ユ湡锛�"+ DateUtil.YYYY_DOT_MM_DOT_DD.format(dischargeStartTime) +"\n" +
+                "鏀剧數寮�濮嬫椂闂达細"+ DateUtil.YYYY_MM_DD_HH_MM.format(dischargeStartTime) +"\n" +
+                "鏀剧數缁撴潫鏃堕棿锛�"+ DateUtil.YYYY_MM_DD_HH_MM.format(dischargeEndTime.getTime()));
 
         XSSFCell cell4Row2 = row1.createCell(5);
-        cell4Row2.setCellValue("鏀剧數鐢垫祦锛圓锛夛細35\n" +
-                "鏀剧數鏃堕暱锛堟椂.鍒嗭級锛�600min\n" +
-                "鏀剧數瀹归噺锛圓h锛夛細300");
+        cell4Row2.setCellValue("鏀剧數鐢垫祦锛圓锛夛細"+ Math.abs(battTestInf.getTestCurr())+"\n" +
+                "鏀剧數鏃堕暱锛堟椂.鍒嗭級锛�"+testTimeMinutes+"\n" +
+                "鏀剧數瀹归噺锛圓h锛夛細"+Math.abs(battTestInf.getTestCap()));
 
         XSSFCell cell5Row2 = row1.createCell(columnCount-1);
         cell5Row2.setCellValue("鐜娓╁害锛堚剝锛夛細24.5\n" +
@@ -1091,6 +1115,8 @@
             setDateFormat(workbook,sheet,4,113,1,columnCount-1,"0.0000");
         //鐢熸垚鍥捐〃
         createChart(sheet, columnCount, 6,"");
+
+        return battInfo;
     }
 
     private void setDateFormat(Workbook workbook,XSSFSheet sheet, int rowIndexStart, int rowIndexEnd,int columnIndexStart,int columnIndexEnd, String formatStr) {
diff --git a/src/main/java/com/whyc/util/DateUtil.java b/src/main/java/com/whyc/util/DateUtil.java
index cc15755..0372041 100644
--- a/src/main/java/com/whyc/util/DateUtil.java
+++ b/src/main/java/com/whyc/util/DateUtil.java
@@ -11,10 +11,12 @@
 public class DateUtil {
 
     public static SimpleDateFormat YYYY_MM_DD_HH_MM_SS=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+    public static SimpleDateFormat YYYY_MM_DD_HH_MM=new SimpleDateFormat("yyyy-MM-dd HH:mm");
     public static SimpleDateFormat YYYY_MM_DD_HH_MM_SS_UNION=new SimpleDateFormat("yyyyMMddHHmmss");
 	public static SimpleDateFormat YYYY_MM_DD=new SimpleDateFormat("yyyy-MM-dd");
 	public static SimpleDateFormat YYYY_MM=new SimpleDateFormat("yyyy-MM");
 	public static SimpleDateFormat YYYY_DOT_MM=new SimpleDateFormat("yyyy.MM");
+	public static SimpleDateFormat YYYY_DOT_MM_DOT_DD=new SimpleDateFormat("yyyy.MM.dd");
 	public static SimpleDateFormat YYYY_MM_TABLE=new SimpleDateFormat("yyyy_MM");
 
 	public static int compare(String date1Str,String date2Str) throws ParseException {

--
Gitblit v1.9.1