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 c51461a37..688d15188 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 @@ -281,7 +281,7 @@ public class ExcelUtil } else if (StringUtils.isNotEmpty(attr.dictType())) { - val = reverseDictByExp(attr.dictType(), Convert.toStr(val)); + val = reverseDictByExp(Convert.toStr(val), attr.dictType(), attr.separator()); } ReflectUtils.invokeSetter(entity, propertyName, val); } @@ -552,7 +552,7 @@ public class ExcelUtil } else if (StringUtils.isNotEmpty(dictType)) { - cell.setCellValue(convertDictByExp(dictType, Convert.toStr(value))); + cell.setCellValue(convertDictByExp(Convert.toStr(value), dictType, separator)); } else { @@ -711,31 +711,33 @@ public class ExcelUtil /** * 解析字典值 * - * @param dictType 字典类型 * @param dictValue 字典值 + * @param dictType 字典类型 + * @param separator 分隔符 * @return 字典标签 */ - public static String convertDictByExp(String dictType, String dictValue) throws Exception + public static String convertDictByExp(String dictValue, String dictType, String separator) throws Exception { Object bean = SpringUtils.getBean("dictUtils"); String methodName = "getDictLabel"; - Method method = bean.getClass().getDeclaredMethod(methodName, String.class, String.class); - return Convert.toStr(method.invoke(bean, dictType, dictValue)); + Method method = bean.getClass().getDeclaredMethod(methodName, String.class, String.class, String.class); + return Convert.toStr(method.invoke(bean, dictType, dictValue, separator)); } /** * 反向解析值字典值 * + * @param dictLabel 字典标签 * @param dictType 字典类型 - * @param dictValue 字典标签 + * @param separator 分隔符 * @return 字典值 */ - public static String reverseDictByExp(String dictType, String dictLabel) throws Exception + public static String reverseDictByExp(String dictLabel, String dictType, String separator) throws Exception { Object bean = SpringUtils.getBean("dictUtils"); String methodName = "getDictValue"; - Method method = bean.getClass().getDeclaredMethod(methodName, String.class, String.class); - return Convert.toStr(method.invoke(bean, dictType, dictLabel)); + Method method = bean.getClass().getDeclaredMethod(methodName, String.class, String.class, String.class); + return Convert.toStr(method.invoke(bean, dictType, dictLabel, separator)); } /** diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/utils/DictUtils.java b/ruoyi-system/src/main/java/com/ruoyi/system/utils/DictUtils.java index 81b6cd6c4..bec70709c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/utils/DictUtils.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/utils/DictUtils.java @@ -15,6 +15,11 @@ import com.ruoyi.system.domain.SysDictData; @Component public class DictUtils { + /** + * 分隔符 + */ + public static final String SEPARATOR = ","; + /** * 设置字典缓存 * @@ -52,21 +57,59 @@ public class DictUtils */ public static String getDictLabel(String dictType, String dictValue) { - if (StringUtils.isNotEmpty(dictType) && StringUtils.isNotEmpty(dictValue)) + return getDictLabel(dictType, dictValue, SEPARATOR); + } + + /** + * 根据字典类型和字典标签获取字典值 + * + * @param dictType 字典类型 + * @param dictLabel 字典标签 + * @return 字典值 + */ + public static String getDictValue(String dictType, String dictLabel) + { + return getDictValue(dictType, dictLabel, SEPARATOR); + } + + /** + * 根据字典类型和字典值获取字典标签 + * + * @param dictType 字典类型 + * @param dictValue 字典值 + * @param separator 分隔符 + * @return 字典标签 + */ + public static String getDictLabel(String dictType, String dictValue, String separator) + { + StringBuilder propertyString = new StringBuilder(); + List datas = getDictCache(dictType); + + if (StringUtils.containsAny(separator, dictValue) && StringUtils.isNotEmpty(datas)) { - List datas = getDictCache(dictType); - if (StringUtils.isNotEmpty(datas)) + for (SysDictData dict : datas) { - for (SysDictData dict : datas) + for (String value : dictValue.split(separator)) { - if (dictValue.equals(dict.getDictValue())) + if (value.equals(dict.getDictValue())) { - return dict.getDictLabel(); + propertyString.append(dict.getDictLabel() + separator); + break; } } } } - return dictValue; + else + { + for (SysDictData dict : datas) + { + if (dictValue.equals(dict.getDictValue())) + { + return dict.getDictLabel(); + } + } + } + return StringUtils.stripEnd(propertyString.toString(), separator); } /** @@ -74,25 +117,39 @@ public class DictUtils * * @param dictType 字典类型 * @param dictLabel 字典标签 + * @param separator 分隔符 * @return 字典值 */ - public static String getDictValue(String dictType, String dictLabel) + public static String getDictValue(String dictType, String dictLabel, String separator) { - if (StringUtils.isNotEmpty(dictType) && StringUtils.isNotEmpty(dictLabel)) + StringBuilder propertyString = new StringBuilder(); + List datas = getDictCache(dictType); + + if (StringUtils.containsAny(separator, dictLabel) && StringUtils.isNotEmpty(datas)) { - List datas = getDictCache(dictType); - if (StringUtils.isNotEmpty(datas)) + for (SysDictData dict : datas) { - for (SysDictData dict : datas) + for (String label : dictLabel.split(separator)) { - if (dictLabel.equals(dict.getDictLabel())) + if (label.equals(dict.getDictLabel())) { - return dict.getDictValue(); + propertyString.append(dict.getDictValue() + separator); + break; } } } } - return dictLabel; + else + { + for (SysDictData dict : datas) + { + if (dictLabel.equals(dict.getDictLabel())) + { + return dict.getDictValue(); + } + } + } + return StringUtils.stripEnd(propertyString.toString(), separator); } /**