From 352caa3e9386cf95c58fafa75a5c4d4bfa0d9a9b Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期二, 01 八月 2023 13:14:26 +0800 Subject: [PATCH] update 优化 excel导出字典转下拉框 无需标记index自动处理(感谢一夏coco) --- ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysClientVo.java | 2 +- ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantPackageVo.java | 2 +- ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysLogininforVo.java | 2 +- ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/ExcelDownHandler.java | 26 ++++++++++++-------------- ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysPostVo.java | 2 +- ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysConfigVo.java | 2 +- ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java | 2 +- ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOperLogVo.java | 6 +++--- ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDictDataVo.java | 4 ++-- ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserExportVo.java | 4 ++-- ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysRoleVo.java | 4 ++-- ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantVo.java | 2 +- ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDictTypeVo.java | 2 +- 13 files changed, 29 insertions(+), 31 deletions(-) diff --git a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/ExcelDownHandler.java b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/ExcelDownHandler.java index db4fecc..3b791ea 100644 --- a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/ExcelDownHandler.java +++ b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/ExcelDownHandler.java @@ -5,7 +5,9 @@ import cn.hutool.core.util.EnumUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.metadata.FieldCache; +import com.alibaba.excel.metadata.FieldWrapper; +import com.alibaba.excel.util.ClassUtils; import com.alibaba.excel.write.handler.SheetWriteHandler; import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder; @@ -83,16 +85,18 @@ Sheet sheet = writeSheetHolder.getSheet(); // 寮�濮嬭缃笅鎷夋 HSSFWorkbook DataValidationHelper helper = sheet.getDataValidationHelper(); - Field[] fields = writeWorkbookHolder.getClazz().getDeclaredFields(); Workbook workbook = writeWorkbookHolder.getWorkbook(); - int length = fields.length; - for (int i = 0; i < length; i++) { + FieldCache fieldCache = ClassUtils.declaredFields(writeWorkbookHolder.getClazz(), writeWorkbookHolder); + for (Map.Entry<Integer, FieldWrapper> entry : fieldCache.getSortedFieldMap().entrySet()) { + Integer index = entry.getKey(); + FieldWrapper wrapper = entry.getValue(); + Field field = wrapper.getField(); // 寰幆瀹炰綋涓殑姣忎釜灞炴�� // 鍙�夌殑涓嬫媺鍊� List<String> options = new ArrayList<>(); - if (fields[i].isAnnotationPresent(ExcelDictFormat.class)) { + if (field.isAnnotationPresent(ExcelDictFormat.class)) { // 濡傛灉鎸囧畾浜咢ExcelDictFormat锛屽垯浣跨敤瀛楀吀鐨勯�昏緫 - ExcelDictFormat format = fields[i].getDeclaredAnnotation(ExcelDictFormat.class); + ExcelDictFormat format = field.getDeclaredAnnotation(ExcelDictFormat.class); String dictType = format.dictType(); String converterExp = format.readConverterExp(); if (StrUtil.isNotBlank(dictType)) { @@ -105,20 +109,14 @@ // 濡傛灉鎸囧畾浜嗙‘鍒囩殑鍊硷紝鍒欑洿鎺ヨВ鏋愮‘鍒囩殑鍊� options = StrUtil.split(converterExp, format.separator(), true, true); } - } else if (fields[i].isAnnotationPresent(ExcelEnumFormat.class)) { + } else if (field.isAnnotationPresent(ExcelEnumFormat.class)) { // 鍚﹀垯濡傛灉鎸囧畾浜咢ExcelEnumFormat锛屽垯浣跨敤鏋氫妇鐨勯�昏緫 - ExcelEnumFormat format = fields[i].getDeclaredAnnotation(ExcelEnumFormat.class); + ExcelEnumFormat format = field.getDeclaredAnnotation(ExcelEnumFormat.class); List<Object> values = EnumUtil.getFieldValues(format.enumClass(), format.textField()); options = StreamUtils.toList(values, String::valueOf); } if (ObjectUtil.isNotEmpty(options)) { // 浠呭綋涓嬫媺鍙�夐」涓嶄负绌烘椂鎵ц - // 鑾峰彇鍒椾笅鏍囷紝榛樿涓哄綋鍓嶅惊鐜鏁� - int index = i; - if (fields[i].isAnnotationPresent(ExcelProperty.class)) { - // 濡傛灉鎸囧畾浜嗗垪涓嬫爣锛屼互鎸囧畾鐨勪负涓� - index = fields[i].getDeclaredAnnotation(ExcelProperty.class).index(); - } if (options.size() > 20) { // 杩欓噷闄愬埗濡傛灉鍙�夐」澶т簬20锛屽垯浣跨敤棰濆琛ㄥ舰寮� dropDownWithSheet(helper, workbook, sheet, index, options); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysClientVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysClientVo.java index fa23cd1..34f24eb 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysClientVo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysClientVo.java @@ -82,7 +82,7 @@ /** * 鐘舵�侊紙0姝e父 1鍋滅敤锛� */ - @ExcelProperty(value = "鐘舵��", index = 7, converter = ExcelDictConvert.class) + @ExcelProperty(value = "鐘舵��", converter = ExcelDictConvert.class) @ExcelDictFormat(readConverterExp = "0=姝e父,1=鍋滅敤") private String status; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysConfigVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysConfigVo.java index db7d53a..f896000 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysConfigVo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysConfigVo.java @@ -53,7 +53,7 @@ /** * 绯荤粺鍐呯疆锛圷鏄� N鍚︼級 */ - @ExcelProperty(value = "绯荤粺鍐呯疆", index = 4, converter = ExcelDictConvert.class) + @ExcelProperty(value = "绯荤粺鍐呯疆", converter = ExcelDictConvert.class) @ExcelDictFormat(dictType = "sys_yes_no") private String configType; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java index 4611ae0..e09d67e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java @@ -78,7 +78,7 @@ /** * 閮ㄩ棬鐘舵�侊紙0姝e父 1鍋滅敤锛� */ - @ExcelProperty(value = "閮ㄩ棬鐘舵��", index = 5, converter = ExcelDictConvert.class) + @ExcelProperty(value = "閮ㄩ棬鐘舵��", converter = ExcelDictConvert.class) @ExcelDictFormat(dictType = "sys_normal_disable") private String status; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDictDataVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDictDataVo.java index 1372f31..d058d5e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDictDataVo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDictDataVo.java @@ -69,14 +69,14 @@ /** * 鏄惁榛樿锛圷鏄� N鍚︼級 */ - @ExcelProperty(value = "鏄惁榛樿", index = 5, converter = ExcelDictConvert.class) + @ExcelProperty(value = "鏄惁榛樿", converter = ExcelDictConvert.class) @ExcelDictFormat(dictType = "sys_yes_no") private String isDefault; /** * 鐘舵�侊紙0姝e父 1鍋滅敤锛� */ - @ExcelProperty(value = "鐘舵��", index = 6, converter = ExcelDictConvert.class) + @ExcelProperty(value = "鐘舵��", converter = ExcelDictConvert.class) @ExcelDictFormat(dictType = "sys_normal_disable") private String status; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDictTypeVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDictTypeVo.java index 771f956..2cac4a2 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDictTypeVo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDictTypeVo.java @@ -47,7 +47,7 @@ /** * 鐘舵�侊紙0姝e父 1鍋滅敤锛� */ - @ExcelProperty(value = "鐘舵��", index = 3, converter = ExcelDictConvert.class) + @ExcelProperty(value = "鐘舵��", converter = ExcelDictConvert.class) @ExcelDictFormat(dictType = "sys_normal_disable") private String status; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysLogininforVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysLogininforVo.java index 97bc79b..cf9720e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysLogininforVo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysLogininforVo.java @@ -48,7 +48,7 @@ /** * 鐧诲綍鐘舵�侊紙0鎴愬姛 1澶辫触锛� */ - @ExcelProperty(value = "鐧诲綍鐘舵��", index = 2, converter = ExcelDictConvert.class) + @ExcelProperty(value = "鐧诲綍鐘舵��", converter = ExcelDictConvert.class) @ExcelDictFormat(dictType = "sys_common_status") private String status; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOperLogVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOperLogVo.java index 306237e..d9eb71d 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOperLogVo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOperLogVo.java @@ -47,7 +47,7 @@ /** * 涓氬姟绫诲瀷锛�0鍏跺畠 1鏂板 2淇敼 3鍒犻櫎锛� */ - @ExcelProperty(value = "涓氬姟绫诲瀷", index = 2, converter = ExcelDictConvert.class) + @ExcelProperty(value = "涓氬姟绫诲瀷", converter = ExcelDictConvert.class) @ExcelDictFormat(dictType = "sys_oper_type") private Integer businessType; @@ -71,7 +71,7 @@ /** * 鎿嶄綔绫诲埆锛�0鍏跺畠 1鍚庡彴鐢ㄦ埛 2鎵嬫満绔敤鎴凤級 */ - @ExcelProperty(value = "鎿嶄綔绫诲埆", index = 5, converter = ExcelDictConvert.class) + @ExcelProperty(value = "鎿嶄綔绫诲埆", converter = ExcelDictConvert.class) @ExcelDictFormat(readConverterExp = "0=鍏跺畠,1=鍚庡彴鐢ㄦ埛,2=鎵嬫満绔敤鎴�") private Integer operatorType; @@ -120,7 +120,7 @@ /** * 鎿嶄綔鐘舵�侊紙0姝e父 1寮傚父锛� */ - @ExcelProperty(value = "鐘舵��", index = 13, converter = ExcelDictConvert.class) + @ExcelProperty(value = "鐘舵��", converter = ExcelDictConvert.class) @ExcelDictFormat(dictType = "sys_common_status") private Integer status; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysPostVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysPostVo.java index 3185423..3e6c6a8 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysPostVo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysPostVo.java @@ -54,7 +54,7 @@ /** * 鐘舵�侊紙0姝e父 1鍋滅敤锛� */ - @ExcelProperty(value = "鐘舵��", index = 4, converter = ExcelDictConvert.class) + @ExcelProperty(value = "鐘舵��", converter = ExcelDictConvert.class) @ExcelDictFormat(dictType = "sys_normal_disable") private String status; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysRoleVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysRoleVo.java index 015a043..1e5cd9e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysRoleVo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysRoleVo.java @@ -53,7 +53,7 @@ /** * 鏁版嵁鑼冨洿锛�1锛氬叏閮ㄦ暟鎹潈闄� 2锛氳嚜瀹氭暟鎹潈闄� 3锛氭湰閮ㄩ棬鏁版嵁鏉冮檺 4锛氭湰閮ㄩ棬鍙婁互涓嬫暟鎹潈闄愶級 */ - @ExcelProperty(value = "鏁版嵁鑼冨洿", index = 4, converter = ExcelDictConvert.class) + @ExcelProperty(value = "鏁版嵁鑼冨洿", converter = ExcelDictConvert.class) @ExcelDictFormat(readConverterExp = "1=鎵�鏈夋暟鎹潈闄�,2=鑷畾涔夋暟鎹潈闄�,3=鏈儴闂ㄦ暟鎹潈闄�,4=鏈儴闂ㄥ強浠ヤ笅鏁版嵁鏉冮檺,5=浠呮湰浜烘暟鎹潈闄�") private String dataScope; @@ -72,7 +72,7 @@ /** * 瑙掕壊鐘舵�侊紙0姝e父 1鍋滅敤锛� */ - @ExcelProperty(value = "瑙掕壊鐘舵��", index = 7, converter = ExcelDictConvert.class) + @ExcelProperty(value = "瑙掕壊鐘舵��", converter = ExcelDictConvert.class) @ExcelDictFormat(dictType = "sys_normal_disable") private String status; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantPackageVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantPackageVo.java index ae11a82..070334b 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantPackageVo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantPackageVo.java @@ -58,7 +58,7 @@ /** * 鐘舵�侊紙0姝e父 1鍋滅敤锛� */ - @ExcelProperty(value = "鐘舵��", index = 5, converter = ExcelDictConvert.class) + @ExcelProperty(value = "鐘舵��", converter = ExcelDictConvert.class) @ExcelDictFormat(readConverterExp = "0=姝e父,1=鍋滅敤") private String status; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantVo.java index 49e03ea..6a45315 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantVo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantVo.java @@ -107,7 +107,7 @@ /** * 绉熸埛鐘舵�侊紙0姝e父 1鍋滅敤锛� */ - @ExcelProperty(value = "绉熸埛鐘舵��", index = 13, converter = ExcelDictConvert.class) + @ExcelProperty(value = "绉熸埛鐘舵��", converter = ExcelDictConvert.class) @ExcelDictFormat(readConverterExp = "0=姝e父,1=鍋滅敤") private String status; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserExportVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserExportVo.java index b7fc480..21b1efb 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserExportVo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserExportVo.java @@ -59,14 +59,14 @@ /** * 鐢ㄦ埛鎬у埆 */ - @ExcelProperty(value = "鐢ㄦ埛鎬у埆", index = 6, converter = ExcelDictConvert.class) + @ExcelProperty(value = "鐢ㄦ埛鎬у埆", converter = ExcelDictConvert.class) @ExcelDictFormat(dictType = "sys_user_sex") private String sex; /** * 甯愬彿鐘舵�侊紙0姝e父 1鍋滅敤锛� */ - @ExcelProperty(value = "甯愬彿鐘舵��", index = 7, converter = ExcelDictConvert.class) + @ExcelProperty(value = "甯愬彿鐘舵��", converter = ExcelDictConvert.class) @ExcelDictFormat(dictType = "sys_normal_disable") private String status; -- Gitblit v1.9.3