diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java index 8204f1338436983ee35db4c8d14f3f6c856edf76..1ea18a76b39dbedd74160bde383219c75a37fd36 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java @@ -1,13 +1,17 @@ package com.ruoyi.common.utils; -import java.util.Collection; -import java.util.List; import com.alibaba.fastjson2.JSONArray; import com.ruoyi.common.constant.CacheConstants; import com.ruoyi.common.core.domain.entity.SysDictData; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.utils.spring.SpringUtils; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + /** * 字典工具类 * @@ -89,37 +93,29 @@ public class DictUtils */ public static String getDictLabel(String dictType, String dictValue, String separator) { - StringBuilder propertyString = new StringBuilder(); - List datas = getDictCache(dictType); - if (StringUtils.isNull(datas)) + List data = getDictCache(dictType); + if (Objects.isNull(data)) { return StringUtils.EMPTY; } - if (StringUtils.containsAny(separator, dictValue)) + + // 先将字典集合转换为 Map 结构,便于后续按 dictValue 取值。 + Map dictMap = data.stream() + .collect(HashMap::new, (map, dict) -> map.put(dict.getDictValue(), dict.getDictLabel()), Map::putAll); + if (!StringUtils.contains(dictValue, separator)) { - for (SysDictData dict : datas) - { - for (String value : dictValue.split(separator)) - { - if (value.equals(dict.getDictValue())) - { - propertyString.append(dict.getDictLabel()).append(separator); - break; - } - } - } + return dictMap.getOrDefault(dictValue, StringUtils.EMPTY); } - else + + StringBuilder labelBuilder = new StringBuilder(); + for (String seperatedValue : dictValue.split(separator)) { - for (SysDictData dict : datas) + if (dictMap.containsKey(seperatedValue)) { - if (dictValue.equals(dict.getDictValue())) - { - return dict.getDictLabel(); - } + labelBuilder.append(dictMap.get(seperatedValue)).append(separator); } } - return StringUtils.stripEnd(propertyString.toString(), separator); + return StringUtils.removeEnd(labelBuilder.toString(), separator); } /**