ruoyi-common/ruoyi-common-excel/src/main/java/com/ruoyi/common/excel/annotation/ExcelEnumFormat.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,30 @@ package com.ruoyi.common.excel.annotation; import java.lang.annotation.*; /** * æä¸¾æ ¼å¼å * * @author Liang */ @Target({ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) @Inherited public @interface ExcelEnumFormat { /** * åå ¸æä¸¾ç±»å */ Class<? extends Enum<?>> enumClass(); /** * åå ¸æä¸¾ç±»ä¸å¯¹åºçcode屿§åç§°ï¼é»è®¤ä¸ºcode */ String codeField() default "code"; /** * åå ¸æä¸¾ç±»ä¸å¯¹åºçtext屿§åç§°ï¼é»è®¤ä¸ºtext */ String textField() default "text"; } ruoyi-common/ruoyi-common-excel/src/main/java/com/ruoyi/common/excel/convert/ExcelEnumConvert.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,75 @@ package com.ruoyi.common.excel.convert; import cn.hutool.core.annotation.AnnotationUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; import com.alibaba.excel.converters.Converter; import com.alibaba.excel.enums.CellDataTypeEnum; import com.alibaba.excel.metadata.GlobalConfiguration; import com.alibaba.excel.metadata.data.ReadCellData; import com.alibaba.excel.metadata.data.WriteCellData; import com.alibaba.excel.metadata.property.ExcelContentProperty; import com.ruoyi.common.core.utils.reflect.ReflectUtils; import com.ruoyi.common.excel.annotation.ExcelEnumFormat; import lombok.extern.slf4j.Slf4j; import java.lang.reflect.Field; import java.util.HashMap; import java.util.Map; /** * æä¸¾æ ¼å¼å转æ¢å¤ç * * @author Liang */ @Slf4j public class ExcelEnumConvert implements Converter<Object> { @Override public Class<Object> supportJavaTypeKey() { return Object.class; } @Override public CellDataTypeEnum supportExcelTypeKey() { return null; } @Override public Object convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { Object codeValue = cellData.getData(); // 妿æ¯ç©ºå¼ if (ObjectUtil.isNull(codeValue)) { return null; } Map<Object, String> enumValueMap = beforeConvert(contentProperty); String textValue = enumValueMap.get(codeValue); return Convert.convert(contentProperty.getField().getType(), textValue); } @Override public WriteCellData<String> convertToExcelData(Object object, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { if (ObjectUtil.isNull(object)) { return new WriteCellData<>(""); } Map<Object, String> enumValueMap = beforeConvert(contentProperty); String value = Convert.toStr(enumValueMap.get(object), ""); return new WriteCellData<>(value); } private Map<Object, String> beforeConvert(ExcelContentProperty contentProperty) { ExcelEnumFormat anno = getAnnotation(contentProperty.getField()); Map<Object, String> enumValueMap = new HashMap<>(); Enum<?>[] enumConstants = anno.enumClass().getEnumConstants(); for (Enum<?> enumConstant : enumConstants) { Object codeValue = ReflectUtils.invokeGetter(enumConstant, anno.codeField()); String textValue = ReflectUtils.invokeGetter(enumConstant, anno.textField()); enumValueMap.put(codeValue, textValue); } return enumValueMap; } private ExcelEnumFormat getAnnotation(Field field) { return AnnotationUtil.getAnnotation(field, ExcelEnumFormat.class); } } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/system/SysProfileController.java
@@ -1,10 +1,10 @@ package com.ruoyi.system.controller.system; import cn.dev33.satoken.secure.BCrypt; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.io.FileUtil; import com.ruoyi.common.core.constant.UserConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.MapstructUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.file.MimeTypeUtils; import com.ruoyi.common.log.annotation.Log; @@ -60,7 +60,7 @@ @Log(title = "个人信æ¯", businessType = BusinessType.UPDATE) @PutMapping public R<Void> updateProfile(@RequestBody SysUserProfileBo profile) { SysUserBo user = MapstructUtils.convert(profile, SysUserBo.class); SysUserBo user = BeanUtil.toBean(profile, SysUserBo.class); if (StringUtils.isNotEmpty(user.getPhonenumber()) && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) { return R.fail("ä¿®æ¹ç¨æ·'" + user.getUserName() + "'å¤±è´¥ï¼ææºå·ç å·²åå¨"); ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/listener/SysUserImportListener.java
@@ -1,11 +1,11 @@ package com.ruoyi.system.listener; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.crypto.digest.BCrypt; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.MapstructUtils; import com.ruoyi.common.core.utils.SpringUtils; import com.ruoyi.common.core.utils.ValidatorUtils; import com.ruoyi.common.excel.core.ExcelListener; @@ -55,7 +55,7 @@ try { // éªè¯æ¯å¦åå¨è¿ä¸ªç¨æ· if (ObjectUtil.isNull(sysUser)) { SysUserBo user = MapstructUtils.convert(userVo, SysUserBo.class); SysUserBo user = BeanUtil.toBean(userVo, SysUserBo.class); ValidatorUtils.validate(user); user.setPassword(password); user.setCreateBy(operUserId); @@ -64,7 +64,7 @@ successMsg.append("<br/>").append(successNum).append("ãè´¦å· ").append(user.getUserName()).append(" å¯¼å ¥æå"); } else if (isUpdateSupport) { Long userId = sysUser.getUserId(); SysUserBo user = MapstructUtils.convert(userVo, SysUserBo.class); SysUserBo user = BeanUtil.toBean(userVo, SysUserBo.class); user.setUserId(userId); ValidatorUtils.validate(user); userService.checkUserAllowed(user);