From 2d3b575ed96eee7ccd5b324baa3135d2236934ac Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期五, 13 十一月 2026 16:39:37 +0800
Subject: [PATCH] 【市一】1、登录服务问题处理 2、电话挂断问题处理 3、查询报错问题处理
---
ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java | 73 +++++++++++++++++++++++++++++++++++-
1 files changed, 71 insertions(+), 2 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 f17faa3..a4ce0a5 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
@@ -474,6 +474,67 @@
}
/**
+ * 鍥捐〃Sheet鏋勫缓鍥炶皟锛氱敱璋冪敤鏂瑰湪缁欏畾宸ヤ綔绨夸笂杩藉姞涓�涓紙鎴栧涓級甯﹀浘琛ㄧ殑Sheet
+ */
+ public interface ChartSheetBuilder {
+ void build(XSSFWorkbook workbook);
+ }
+
+ /**
+ * 鍙栧簳灞� XSSFWorkbook锛圫XSSF 娴佸紡宸ヤ綔绨夸篃鏀寔鎸傚師鐢熷浘琛級锛屼笉鏀寔鏃惰繑鍥� null
+ */
+ public XSSFWorkbook getXssfWorkbook() {
+ if (wb instanceof SXSSFWorkbook) {
+ return ((SXSSFWorkbook) wb).getXSSFWorkbook();
+ }
+ if (wb instanceof XSSFWorkbook) {
+ return (XSSFWorkbook) wb;
+ }
+ return null;
+ }
+
+ /**
+ * 瀵煎嚭涓や釜鏁版嵁Sheet + 涓�涓浘琛⊿heet锛堝浘琛ㄥ唴瀹圭敱璋冪敤鏂归�氳繃 builder 杩藉姞锛�
+ *
+ * @param response 杩斿洖鏁版嵁
+ * @param list1 绗竴涓猄heet鐨勬暟鎹泦鍚�
+ * @param sheetName1 绗竴涓猄heet鐨勫悕绉�
+ * @param list2 绗簩涓猄heet鐨勬暟鎹泦鍚�
+ * @param sheetName2 绗簩涓猄heet鐨勫悕绉�
+ * @param clazz2 绗簩涓猄heet鏁版嵁瀵硅薄鐨凜lass
+ * @param chartBuilder 鍥捐〃Sheet鏋勫缓鍥炶皟锛屽彲涓虹┖锛堜负绌烘椂涓庝袱Sheet瀵煎嚭瀹屽叏涓�鏍凤級
+ */
+ public void exportExcelTwoSheetWithChart(HttpServletResponse response,
+ List<T> list1, String sheetName1,
+ List<?> list2, String sheetName2, Class<?> clazz2,
+ ChartSheetBuilder chartBuilder) {
+ response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+ response.setCharacterEncoding("utf-8");
+ // 鍒濆鍖栧苟鍐欏叆Sheet1
+ this.init(list1, sheetName1, StringUtils.EMPTY, Type.EXPORT);
+ writeSheet();
+ // 杩藉姞鍐欏叆Sheet2
+ writeAdditionalSheet(list2, sheetName2, clazz2);
+ // 杩藉姞鍥捐〃Sheet
+ if (chartBuilder != null) {
+ XSSFWorkbook xssfWorkbook = getXssfWorkbook();
+ if (xssfWorkbook != null) {
+ chartBuilder.build(xssfWorkbook);
+ } else {
+ log.warn("褰撳墠宸ヤ綔绨夸笉鏀寔鍘熺敓鍥捐〃锛岃烦杩囧浘琛⊿heet");
+ }
+ }
+ // 杈撳嚭鍒板搷搴旀祦
+ try {
+ wb.write(response.getOutputStream());
+ } catch (Exception e) {
+ log.error("瀵煎嚭Excel寮傚父{}", e.getMessage());
+ } finally {
+ IOUtils.closeQuietly(wb);
+ }
+ }
+
+ /**
* 鍚戝綋鍓嶅伐浣滅翱杩藉姞鍐欏叆涓�涓猄heet
*
* @param dataList 鏁版嵁闆嗗悎
@@ -482,8 +543,11 @@
*/
@SuppressWarnings("unchecked")
public void writeAdditionalSheet(List<?> dataList, String sheetName, Class<?> dataClazz) {
- if (dataList == null) {
- dataList = new ArrayList<>();
+ // 娌℃湁鏁版嵁鎴栨病鏈夎绫诲瀷鏃惰烦杩囬檮鍔� Sheet锛�
+ // SatisfactionExportBundle.empty() 鐨� rowClass 涓� null锛岃嫢缁х画鎵ц浼氭妸 this.clazz 缃┖锛�
+ // 闅忓悗 getFields() 璋冪敤 clazz.getSuperclass() 瑙﹀彂 NullPointerException銆�
+ if (dataClazz == null || dataList == null || dataList.isEmpty()) {
+ return;
}
// 淇濆瓨鍘熷鐘舵��
Class<T> originClazz = this.clazz;
@@ -1281,6 +1345,11 @@
*/
public List<Object[]> getFields() {
List<Object[]> fields = new ArrayList<Object[]>();
+ // 闃插尽锛歝lazz 涓虹┖鏃朵笉鍐嶈皟鐢� getSuperclass()锛岄伩鍏� NullPointerException銆�
+ if (clazz == null) {
+ log.warn("ExcelUtil.clazz 涓虹┖锛屾棤娉曡В鏋愬鍑哄瓧娈碉紝璺宠繃褰撳墠 Sheet");
+ return fields;
+ }
List<Field> tempFields = new ArrayList<>();
tempFields.addAll(Arrays.asList(clazz.getSuperclass().getDeclaredFields()));
tempFields.addAll(Arrays.asList(clazz.getDeclaredFields()));
--
Gitblit v1.9.3