All Downloads are FREE. Search and download functionalities are using the official Maven repository.

site.sorghum.anno.trans.OnlineDictCache Maven / Gradle / Ivy

The newest version!
package site.sorghum.anno.trans;

import cn.hutool.core.util.StrUtil;
import jakarta.inject.Named;
import lombok.Data;
import site.sorghum.anno.anno.entity.common.TagEnumLabel;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;

@Named
public class OnlineDictCache {

    @Data
    public static class OnlineDict {
        /**
         * ID
         */
        String id;

        /**
         * 父级ID
         */
        String pid;

        /**
         * 父级值
         */
        String parentValue;

        /**
         * 值
         */
        String value;

        /**
         * 名称
         */
        String name;

        /**
         * 颜色
         */
        String color;
    }

    /**
     * 缓存的字典数据,以字典名称作为键,以字典数据作为值
     */
    private final Map> dictMapCache = new HashMap<>();

    /**
     * 将字典数据存入缓存中
     *
     * @param dictName 字典名称
     * @param dictData 字典数据,以键值对形式存储
     */
    public void put(String dictName, List dictData) {
        this.dictMapCache.put(dictName, dictData);
    }


    /**
     * 从缓存中获取指定字典名称的字典数据
     *
     * @param dictName 字典名称
     * @return 包含字典数据的Map,若不存在则返回null
     */
    public List get(String dictName) {
        return this.dictMapCache.get(dictName);
    }


    /**
     * 从缓存中获取指定字典名称的字典数据
     *
     * @param dictName 字典名称
     * @return 包含字典数据的Map,若不存在则返回null
     */
    public List getForLoadDict(String dictName) {
        List onlineDictList = get(dictName);
        onlineDictList.stream().filter(it -> Objects.equals(it.getParentValue(),dictName)).forEach(it -> {it.setParentValue(null);});
        return onlineDictList;
    }

    /**
     * 从缓存中获取指定字典名称的字典数据
     *
     * @param dictName 字典名称
     * @return 包含字典数据的Map,若不存在则返回null
     */
    public Map getValueLabel(String dictName) {
        return get(dictName).stream().collect(HashMap::new, (m, v) -> {
            Object name = v.getName();
            if (StrUtil.isNotBlank(v.getColor()) && !Objects.equals(v.getColor(),"#00000000")){
                name = new TagEnumLabel(name.toString(), v.getColor());
            }
            m.put(v.getValue(), name);
        }, HashMap::putAll);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy