From 2b430bf3f4d6e84bd7ad351a6bcdd1d3a08c4630 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期六, 17 二月 2024 10:38:22 +0800
Subject: [PATCH] #

---
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/RoleController.java |   15 -------
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/entity/Role.java               |    4 +-
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/ExcelUtil.java               |   93 +++++++++++++++++++++++++++++++++-------------
 3 files changed, 70 insertions(+), 42 deletions(-)

diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/RoleController.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/RoleController.java
index d76a594..d99c207 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/RoleController.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/RoleController.java
@@ -11,14 +11,11 @@
 import com.zy.asrs.wcs.sys.entity.Role;
 import com.zy.asrs.wcs.sys.service.RoleService;
 import com.zy.asrs.wcs.utils.ExcelUtil;
-import com.zy.asrs.wcs.utils.Utils;
-import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
-import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -119,17 +116,7 @@
     @PreAuthorize("hasAuthority('sys:role:list')")
     @PostMapping("/role/export")
     public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
-        Workbook workbook = ExcelUtil.create();
-        try {
-            // 璁剧疆鍝嶅簲澶�
-            response.reset();
-            Utils.cors(response);
-            response.setContentType("application/octet-stream; charset=utf-8");
-            response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("export", "UTF-8"));
-            workbook.write(response.getOutputStream());
-        } finally {
-            workbook.close();
-        }
+        ExcelUtil.build(ExcelUtil.create(roleService.list(), Role.class), response);
     }
 
 }
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/entity/Role.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/entity/Role.java
index 7395569..a198217 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/entity/Role.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/entity/Role.java
@@ -49,13 +49,13 @@
     /**
      * 鐘舵�� 1: 姝e父  0: 绂佺敤  
      */
-    @ApiModelProperty(value= "鐘舵�� 1: 姝e父  0: 绂佺敤  ")
+    @ApiModelProperty(value= "鐘舵��")
     private Integer status;
 
     /**
      * 鏄惁鍒犻櫎 1: 鏄�  0: 鍚�  
      */
-    @ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄�  0: 鍚�  ")
+    @ApiModelProperty(value= "鏄惁鍒犻櫎")
     @TableLogic
     private Integer deleted;
 
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/ExcelUtil.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/ExcelUtil.java
index ad6384a..c74ac0a 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/ExcelUtil.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/ExcelUtil.java
@@ -1,48 +1,89 @@
 package com.zy.asrs.wcs.utils;
 
+import com.zy.asrs.framework.common.Cools;
+import io.swagger.annotations.ApiModelProperty;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
 
 /**
  * Created by vincent on 2/17/2024
  */
 public class ExcelUtil {
 
-    public static Workbook create() {
-        // 鍒涘缓 Workbook 鍜� Sheet
+    public static void build(Workbook workbook, HttpServletResponse response) {
+        response.reset();
+        Utils.cors(response);
+        response.setContentType("application/octet-stream; charset=utf-8");
+        try {
+            response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("export", "UTF-8"));
+            workbook.write(response.getOutputStream());
+        } catch (IOException ignore) {}
+    }
+
+    public static <T> Workbook create(List<T> list, Class<T> clz) {
         HSSFWorkbook workbook = new HSSFWorkbook();
-        Sheet sheet = workbook.createSheet("杩愮淮鎶ヨ〃");
+        Sheet sheet = workbook.createSheet(clz.getSimpleName());
 
-        // 鍒涘缓琛ㄥご
         Row header = sheet.createRow(0);
-        header.createCell(0).setCellValue("濮撳悕");
-        header.createCell(1).setCellValue("骞撮緞");
-        header.createCell(2).setCellValue("鎬у埆");
-        header.createCell(3).setCellValue("鑱屼綅");
+        Field[] fields = Cools.getAllFields(clz);
+        int headerIdx = 0;
+        for (Field field : fields) {
+            if (Modifier.isFinal(field.getModifiers())
+                    || Modifier.isStatic(field.getModifiers())
+                    || Modifier.isTransient(field.getModifiers())) {
+                continue;
+            }
+            String memo = "鏈煡";
+            if (field.isAnnotationPresent(ApiModelProperty.class)) {
+                memo = field.getAnnotation(ApiModelProperty.class).value();
+            }
+            header.createCell(headerIdx).setCellValue(memo);
+            headerIdx++;
+        }
 
-        // 娣诲姞涓�浜涙暟鎹�
-        Row row1 = sheet.createRow(1);
-        row1.createCell(0).setCellValue("寮犱笁");
-        row1.createCell(1).setCellValue(28);
-        row1.createCell(2).setCellValue("鐢�");
-        row1.createCell(3).setCellValue("杩愮淮宸ョ▼甯�");
+        int rowIndex = 1;
+        for (T t : list) {
+            Row row = sheet.createRow(rowIndex++);
 
-        Row row2 = sheet.createRow(2);
-        row2.createCell(0).setCellValue("鏉庡洓");
-        row2.createCell(1).setCellValue(32);
-        row2.createCell(2).setCellValue("濂�");
-        row2.createCell(3).setCellValue("椤圭洰缁忕悊");
+            int cellIndex = 0;
+            for (Field field : fields) {
+                if (Modifier.isFinal(field.getModifiers())
+                        || Modifier.isStatic(field.getModifiers())
+                        || Modifier.isTransient(field.getModifiers())) {
+                    continue;
+                }
 
-        Row row3 = sheet.createRow(3);
-        row3.createCell(0).setCellValue("鐜嬩簲");
-        row3.createCell(1).setCellValue(25);
-        row3.createCell(2).setCellValue("鐢�");
-        row3.createCell(3).setCellValue("寮�鍙戝伐绋嬪笀");
+                field.setAccessible(true);  // 姝よ寰堥噸瑕侊紝鐗瑰埆鏄瓧娈典负private鏃�
+                Object value = null;
+                try {
+                    value = field.get(t);
+                } catch (IllegalAccessException e) {
+                    e.printStackTrace();
+                }
+                if (value != null) {
+                    if (value instanceof Date) {
+                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                        row.createCell(cellIndex).setCellValue(sdf.format((Date) value));
+                    } else {
+                        row.createCell(cellIndex).setCellValue(value.toString());
+                    }
+                }
+                cellIndex++;
+            }
+        }
 
-        // 鎵ц鍗曞厓鏍艰嚜鍔ㄥ垪瀹�
-        for (int i = 0; i <= 3; i++) {
+        for (int i = 0; i <= fields.length; i++) {
             sheet.autoSizeColumn(i);
         }
 

--
Gitblit v1.9.1