mirror of
				https://github.com/dromara/RuoYi-Vue-Plus.git
				synced 2025-11-04 08:13:44 +08:00 
			
		
		
		
	修复字典导出序列化报错问题
This commit is contained in:
		@@ -2,6 +2,7 @@ package com.ruoyi.common.utils;
 | 
			
		||||
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import com.alibaba.fastjson2.JSONArray;
 | 
			
		||||
import com.ruoyi.common.constant.Constants;
 | 
			
		||||
import com.ruoyi.common.core.domain.entity.SysDictData;
 | 
			
		||||
import com.ruoyi.common.core.redis.RedisCache;
 | 
			
		||||
@@ -38,10 +39,10 @@ public class DictUtils
 | 
			
		||||
     */
 | 
			
		||||
    public static List<SysDictData> getDictCache(String key)
 | 
			
		||||
    {
 | 
			
		||||
        Object cacheObj = SpringUtils.getBean(RedisCache.class).getCacheObject(getCacheKey(key));
 | 
			
		||||
        if (StringUtils.isNotNull(cacheObj))
 | 
			
		||||
        JSONArray arrayCache = SpringUtils.getBean(RedisCache.class).getCacheObject(getCacheKey(key));
 | 
			
		||||
        if (StringUtils.isNotNull(arrayCache))
 | 
			
		||||
        {
 | 
			
		||||
            return StringUtils.cast(cacheObj);
 | 
			
		||||
            return arrayCache.toList(SysDictData.class);
 | 
			
		||||
        }
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
@@ -83,27 +84,30 @@ public class DictUtils
 | 
			
		||||
        StringBuilder propertyString = new StringBuilder();
 | 
			
		||||
        List<SysDictData> datas = getDictCache(dictType);
 | 
			
		||||
 | 
			
		||||
        if (StringUtils.containsAny(separator, dictValue) && StringUtils.isNotEmpty(datas))
 | 
			
		||||
        if (StringUtils.isNotNull(datas))
 | 
			
		||||
        {
 | 
			
		||||
            for (SysDictData dict : datas)
 | 
			
		||||
            if (StringUtils.containsAny(separator, dictValue))
 | 
			
		||||
            {
 | 
			
		||||
                for (String value : dictValue.split(separator))
 | 
			
		||||
                for (SysDictData dict : datas)
 | 
			
		||||
                {
 | 
			
		||||
                    if (value.equals(dict.getDictValue()))
 | 
			
		||||
                    for (String value : dictValue.split(separator))
 | 
			
		||||
                    {
 | 
			
		||||
                        propertyString.append(dict.getDictLabel()).append(separator);
 | 
			
		||||
                        break;
 | 
			
		||||
                        if (value.equals(dict.getDictValue()))
 | 
			
		||||
                        {
 | 
			
		||||
                            propertyString.append(dict.getDictLabel()).append(separator);
 | 
			
		||||
                            break;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            for (SysDictData dict : datas)
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                if (dictValue.equals(dict.getDictValue()))
 | 
			
		||||
                for (SysDictData dict : datas)
 | 
			
		||||
                {
 | 
			
		||||
                    return dict.getDictLabel();
 | 
			
		||||
                    if (dictValue.equals(dict.getDictValue()))
 | 
			
		||||
                    {
 | 
			
		||||
                        return dict.getDictLabel();
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -3,13 +3,9 @@ package com.ruoyi.framework.config;
 | 
			
		||||
import java.nio.charset.Charset;
 | 
			
		||||
import org.springframework.data.redis.serializer.RedisSerializer;
 | 
			
		||||
import org.springframework.data.redis.serializer.SerializationException;
 | 
			
		||||
import org.springframework.util.Assert;
 | 
			
		||||
import com.alibaba.fastjson2.JSON;
 | 
			
		||||
import com.alibaba.fastjson2.JSONReader;
 | 
			
		||||
import com.alibaba.fastjson2.JSONWriter;
 | 
			
		||||
import com.fasterxml.jackson.databind.JavaType;
 | 
			
		||||
import com.fasterxml.jackson.databind.ObjectMapper;
 | 
			
		||||
import com.fasterxml.jackson.databind.type.TypeFactory;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Redis使用FastJson序列化
 | 
			
		||||
@@ -18,9 +14,6 @@ import com.fasterxml.jackson.databind.type.TypeFactory;
 | 
			
		||||
 */
 | 
			
		||||
public class FastJson2JsonRedisSerializer<T> implements RedisSerializer<T>
 | 
			
		||||
{
 | 
			
		||||
    @SuppressWarnings("unused")
 | 
			
		||||
    private ObjectMapper objectMapper = new ObjectMapper();
 | 
			
		||||
 | 
			
		||||
    public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
 | 
			
		||||
 | 
			
		||||
    private Class<T> clazz;
 | 
			
		||||
@@ -52,15 +45,4 @@ public class FastJson2JsonRedisSerializer<T> implements RedisSerializer<T>
 | 
			
		||||
 | 
			
		||||
        return JSON.parseObject(str, clazz, JSONReader.Feature.SupportAutoType);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setObjectMapper(ObjectMapper objectMapper)
 | 
			
		||||
    {
 | 
			
		||||
        Assert.notNull(objectMapper, "'objectMapper' must not be null");
 | 
			
		||||
        this.objectMapper = objectMapper;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected JavaType getJavaType(Class<?> clazz)
 | 
			
		||||
    {
 | 
			
		||||
        return TypeFactory.defaultInstance().constructType(clazz);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -8,11 +8,6 @@ import org.springframework.data.redis.connection.RedisConnectionFactory;
 | 
			
		||||
import org.springframework.data.redis.core.RedisTemplate;
 | 
			
		||||
import org.springframework.data.redis.core.script.DefaultRedisScript;
 | 
			
		||||
import org.springframework.data.redis.serializer.StringRedisSerializer;
 | 
			
		||||
import com.fasterxml.jackson.annotation.JsonAutoDetect;
 | 
			
		||||
import com.fasterxml.jackson.annotation.JsonTypeInfo;
 | 
			
		||||
import com.fasterxml.jackson.annotation.PropertyAccessor;
 | 
			
		||||
import com.fasterxml.jackson.databind.ObjectMapper;
 | 
			
		||||
import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * redis配置
 | 
			
		||||
@@ -32,11 +27,6 @@ public class RedisConfig extends CachingConfigurerSupport
 | 
			
		||||
 | 
			
		||||
        FastJson2JsonRedisSerializer serializer = new FastJson2JsonRedisSerializer(Object.class);
 | 
			
		||||
 | 
			
		||||
        ObjectMapper mapper = new ObjectMapper();
 | 
			
		||||
        mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
 | 
			
		||||
        mapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
 | 
			
		||||
        serializer.setObjectMapper(mapper);
 | 
			
		||||
 | 
			
		||||
        // 使用StringRedisSerializer来序列化和反序列化redis的key值
 | 
			
		||||
        template.setKeySerializer(new StringRedisSerializer());
 | 
			
		||||
        template.setValueSerializer(serializer);
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ import DictOptions from './DictOptions'
 | 
			
		||||
export default class DictMeta {
 | 
			
		||||
  constructor(options) {
 | 
			
		||||
    this.type = options.type
 | 
			
		||||
    this.request = options.request,
 | 
			
		||||
    this.request = options.request
 | 
			
		||||
    this.responseConverter = options.responseConverter
 | 
			
		||||
    this.labelField = options.labelField
 | 
			
		||||
    this.valueField = options.valueField
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user