From 427b4eed1953d846874c52f50bd51e0b7a4356eb Mon Sep 17 00:00:00 2001 From: liuchen864 <23082234@qq.com> Date: Tue, 24 Oct 2023 11:57:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=87=BAexcel=E6=9E=9A=E4=B8=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/enums/CommonStatusEnum.java | 19 +++++++++++ .../core/convert/CommonStatusConverter.java | 34 +++++++++++++++++++ .../controller/user/UserController.java | 6 ++-- .../controller/user/vo/user/UserExcelVO.java | 5 +-- 4 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 win-framework/win-spring-boot-starter-excel/src/main/java/com/win/framework/excel/core/convert/CommonStatusConverter.java diff --git a/win-framework/win-common/src/main/java/com/win/framework/common/enums/CommonStatusEnum.java b/win-framework/win-common/src/main/java/com/win/framework/common/enums/CommonStatusEnum.java index 89d21855..66e79b31 100644 --- a/win-framework/win-common/src/main/java/com/win/framework/common/enums/CommonStatusEnum.java +++ b/win-framework/win-common/src/main/java/com/win/framework/common/enums/CommonStatusEnum.java @@ -5,6 +5,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import java.util.Arrays; +import java.util.stream.Stream; /** * 通用状态枚举 @@ -34,4 +35,22 @@ public enum CommonStatusEnum implements IntArrayValuable { return ARRAYS; } + public static CommonStatusEnum convert(Integer value) { + return Stream.of(values()) + .filter(bean -> bean.status.equals(value)) + .findAny() + .orElse(DISABLE); + } + + public static CommonStatusEnum convert(String description) { + return Stream.of(values()) + .filter(bean -> bean.name.equals(description)) + .findAny() + .orElse(DISABLE); + } + + public static String[] getStatusNameArray() { + return Stream.of(values()).map(CommonStatusEnum::getName).toArray(String[]::new); + } + } diff --git a/win-framework/win-spring-boot-starter-excel/src/main/java/com/win/framework/excel/core/convert/CommonStatusConverter.java b/win-framework/win-spring-boot-starter-excel/src/main/java/com/win/framework/excel/core/convert/CommonStatusConverter.java new file mode 100644 index 00000000..e284593f --- /dev/null +++ b/win-framework/win-spring-boot-starter-excel/src/main/java/com/win/framework/excel/core/convert/CommonStatusConverter.java @@ -0,0 +1,34 @@ +package com.win.framework.excel.core.convert; + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.converters.ReadConverterContext; +import com.alibaba.excel.converters.WriteConverterContext; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.win.framework.common.enums.CommonStatusEnum; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class CommonStatusConverter implements Converter { + + @Override + public Class supportJavaTypeKey() { + throw new UnsupportedOperationException("暂不支持,也不需要"); + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + throw new UnsupportedOperationException("暂不支持,也不需要"); + } + + @Override + public Integer convertToJavaData(ReadConverterContext context) { + return CommonStatusEnum.convert(context.getReadCellData().getStringValue()).getStatus(); + } + + @Override + public WriteCellData convertToExcelData(WriteConverterContext context) { + return new WriteCellData<>(CommonStatusEnum.convert(Integer.parseInt(String.valueOf(context.getValue()))).getName()); + } + +} diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/user/UserController.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/user/UserController.java index 1de29b91..dc36e159 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/user/UserController.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/user/UserController.java @@ -158,9 +158,11 @@ public class UserController { }); excelUsers.add(excelVO); }); - + Map mapDropDown = new HashMap<>(); + String[] statusNameArray = CommonStatusEnum.getStatusNameArray(); + mapDropDown.put(6, statusNameArray); // 输出 - ExcelUtils.write(response, "用户数据.xlsx", "用户列表", UserExcelVO.class, excelUsers); + ExcelUtils.write(response, "用户数据.xlsx", "用户列表", UserExcelVO.class, excelUsers, mapDropDown); } @GetMapping("/get-import-template") diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/user/vo/user/UserExcelVO.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/user/vo/user/UserExcelVO.java index 406b3ff8..8bb51b2d 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/user/vo/user/UserExcelVO.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/controller/user/vo/user/UserExcelVO.java @@ -1,6 +1,7 @@ package com.win.module.system.controller.user.vo.user; import com.win.framework.excel.core.annotations.DictFormat; +import com.win.framework.excel.core.convert.CommonStatusConverter; import com.win.framework.excel.core.convert.DictConvert; import com.win.module.system.enums.DictTypeConstants; import com.alibaba.excel.annotation.ExcelProperty; @@ -33,8 +34,8 @@ public class UserExcelVO { @DictFormat(DictTypeConstants.USER_SEX) private Integer sex; - @ExcelProperty(value = "帐号状态", converter = DictConvert.class) - @DictFormat(DictTypeConstants.COMMON_STATUS) + @ExcelProperty(value = "帐号状态", converter = CommonStatusConverter.class) + //@DictFormat(DictTypeConstants.COMMON_STATUS) private Integer status; @ExcelProperty("最后登录IP")