mirror of
				https://github.com/dromara/RuoYi-Vue-Plus.git
				synced 2025-11-04 08:13:44 +08:00 
			
		
		
		
	update 优化参数&字典缓存操作
This commit is contained in:
		@@ -1,8 +1,11 @@
 | 
			
		||||
package com.ruoyi.system.mapper;
 | 
			
		||||
 | 
			
		||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 | 
			
		||||
import com.ruoyi.common.core.domain.entity.SysDictData;
 | 
			
		||||
import com.ruoyi.common.core.page.BaseMapperPlus;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 字典表 数据层
 | 
			
		||||
 *
 | 
			
		||||
@@ -10,4 +13,11 @@ import com.ruoyi.common.core.page.BaseMapperPlus;
 | 
			
		||||
 */
 | 
			
		||||
public interface SysDictDataMapper extends BaseMapperPlus<SysDictData> {
 | 
			
		||||
 | 
			
		||||
	default List<SysDictData> selectDictDataByType(String dictType) {
 | 
			
		||||
		return selectList(
 | 
			
		||||
			new LambdaQueryWrapper<SysDictData>()
 | 
			
		||||
				.eq(SysDictData::getStatus, "0")
 | 
			
		||||
				.eq(SysDictData::getDictType, dictType)
 | 
			
		||||
				.orderByAsc(SysDictData::getDictSort));
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,6 @@ import com.ruoyi.system.mapper.SysDictDataMapper;
 | 
			
		||||
import com.ruoyi.system.service.ISysDictDataService;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -22,100 +21,103 @@ import java.util.List;
 | 
			
		||||
@Service
 | 
			
		||||
public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDictData> implements ISysDictDataService {
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public TableDataInfo<SysDictData> selectPageDictDataList(SysDictData dictData) {
 | 
			
		||||
        LambdaQueryWrapper<SysDictData> lqw = new LambdaQueryWrapper<SysDictData>()
 | 
			
		||||
                .eq(StrUtil.isNotBlank(dictData.getDictType()), SysDictData::getDictType, dictData.getDictType())
 | 
			
		||||
                .like(StrUtil.isNotBlank(dictData.getDictLabel()), SysDictData::getDictLabel, dictData.getDictLabel())
 | 
			
		||||
                .eq(StrUtil.isNotBlank(dictData.getStatus()), SysDictData::getStatus, dictData.getStatus())
 | 
			
		||||
                .orderByAsc(SysDictData::getDictSort);
 | 
			
		||||
        return PageUtils.buildDataInfo(page(PageUtils.buildPage(),lqw));
 | 
			
		||||
    }
 | 
			
		||||
	@Override
 | 
			
		||||
	public TableDataInfo<SysDictData> selectPageDictDataList(SysDictData dictData) {
 | 
			
		||||
		LambdaQueryWrapper<SysDictData> lqw = new LambdaQueryWrapper<SysDictData>()
 | 
			
		||||
			.eq(StrUtil.isNotBlank(dictData.getDictType()), SysDictData::getDictType, dictData.getDictType())
 | 
			
		||||
			.like(StrUtil.isNotBlank(dictData.getDictLabel()), SysDictData::getDictLabel, dictData.getDictLabel())
 | 
			
		||||
			.eq(StrUtil.isNotBlank(dictData.getStatus()), SysDictData::getStatus, dictData.getStatus())
 | 
			
		||||
			.orderByAsc(SysDictData::getDictSort);
 | 
			
		||||
		return PageUtils.buildDataInfo(page(PageUtils.buildPage(), lqw));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据条件分页查询字典数据
 | 
			
		||||
     *
 | 
			
		||||
     * @param dictData 字典数据信息
 | 
			
		||||
     * @return 字典数据集合信息
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<SysDictData> selectDictDataList(SysDictData dictData) {
 | 
			
		||||
        return list(new LambdaQueryWrapper<SysDictData>()
 | 
			
		||||
                .eq(StrUtil.isNotBlank(dictData.getDictType()), SysDictData::getDictType, dictData.getDictType())
 | 
			
		||||
                .like(StrUtil.isNotBlank(dictData.getDictLabel()), SysDictData::getDictLabel, dictData.getDictLabel())
 | 
			
		||||
                .eq(StrUtil.isNotBlank(dictData.getStatus()), SysDictData::getStatus, dictData.getStatus())
 | 
			
		||||
                .orderByAsc(SysDictData::getDictSort));
 | 
			
		||||
    }
 | 
			
		||||
	/**
 | 
			
		||||
	 * 根据条件分页查询字典数据
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param dictData 字典数据信息
 | 
			
		||||
	 * @return 字典数据集合信息
 | 
			
		||||
	 */
 | 
			
		||||
	@Override
 | 
			
		||||
	public List<SysDictData> selectDictDataList(SysDictData dictData) {
 | 
			
		||||
		return list(new LambdaQueryWrapper<SysDictData>()
 | 
			
		||||
			.eq(StrUtil.isNotBlank(dictData.getDictType()), SysDictData::getDictType, dictData.getDictType())
 | 
			
		||||
			.like(StrUtil.isNotBlank(dictData.getDictLabel()), SysDictData::getDictLabel, dictData.getDictLabel())
 | 
			
		||||
			.eq(StrUtil.isNotBlank(dictData.getStatus()), SysDictData::getStatus, dictData.getStatus())
 | 
			
		||||
			.orderByAsc(SysDictData::getDictSort));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据字典类型和字典键值查询字典数据信息
 | 
			
		||||
     *
 | 
			
		||||
     * @param dictType  字典类型
 | 
			
		||||
     * @param dictValue 字典键值
 | 
			
		||||
     * @return 字典标签
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public String selectDictLabel(String dictType, String dictValue) {
 | 
			
		||||
        return getOne(new LambdaQueryWrapper<SysDictData>()
 | 
			
		||||
                .select(SysDictData::getDictLabel)
 | 
			
		||||
                .eq(SysDictData::getDictType, dictType)
 | 
			
		||||
                .eq(SysDictData::getDictValue, dictValue))
 | 
			
		||||
                .getDictLabel();
 | 
			
		||||
    }
 | 
			
		||||
	/**
 | 
			
		||||
	 * 根据字典类型和字典键值查询字典数据信息
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param dictType  字典类型
 | 
			
		||||
	 * @param dictValue 字典键值
 | 
			
		||||
	 * @return 字典标签
 | 
			
		||||
	 */
 | 
			
		||||
	@Override
 | 
			
		||||
	public String selectDictLabel(String dictType, String dictValue) {
 | 
			
		||||
		return getOne(new LambdaQueryWrapper<SysDictData>()
 | 
			
		||||
			.select(SysDictData::getDictLabel)
 | 
			
		||||
			.eq(SysDictData::getDictType, dictType)
 | 
			
		||||
			.eq(SysDictData::getDictValue, dictValue))
 | 
			
		||||
			.getDictLabel();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据字典数据ID查询信息
 | 
			
		||||
     *
 | 
			
		||||
     * @param dictCode 字典数据ID
 | 
			
		||||
     * @return 字典数据
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public SysDictData selectDictDataById(Long dictCode) {
 | 
			
		||||
        return getById(dictCode);
 | 
			
		||||
    }
 | 
			
		||||
	/**
 | 
			
		||||
	 * 根据字典数据ID查询信息
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param dictCode 字典数据ID
 | 
			
		||||
	 * @return 字典数据
 | 
			
		||||
	 */
 | 
			
		||||
	@Override
 | 
			
		||||
	public SysDictData selectDictDataById(Long dictCode) {
 | 
			
		||||
		return getById(dictCode);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 批量删除字典数据信息
 | 
			
		||||
     *
 | 
			
		||||
     * @param dictCodes 需要删除的字典数据ID
 | 
			
		||||
     * @return 结果
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public int deleteDictDataByIds(Long[] dictCodes) {
 | 
			
		||||
        int row = baseMapper.deleteBatchIds(Arrays.asList(dictCodes));
 | 
			
		||||
        if (row > 0) {
 | 
			
		||||
            DictUtils.clearDictCache();
 | 
			
		||||
        }
 | 
			
		||||
        return row;
 | 
			
		||||
    }
 | 
			
		||||
	/**
 | 
			
		||||
	 * 批量删除字典数据信息
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param dictCodes 需要删除的字典数据ID
 | 
			
		||||
	 * @return 结果
 | 
			
		||||
	 */
 | 
			
		||||
	@Override
 | 
			
		||||
	public void deleteDictDataByIds(Long[] dictCodes) {
 | 
			
		||||
		for (Long dictCode : dictCodes) {
 | 
			
		||||
			SysDictData data = selectDictDataById(dictCode);
 | 
			
		||||
			baseMapper.deleteById(dictCode);
 | 
			
		||||
			List<SysDictData> dictDatas = baseMapper.selectDictDataByType(data.getDictType());
 | 
			
		||||
			DictUtils.setDictCache(data.getDictType(), dictDatas);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 新增保存字典数据信息
 | 
			
		||||
     *
 | 
			
		||||
     * @param dictData 字典数据信息
 | 
			
		||||
     * @return 结果
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public int insertDictData(SysDictData dictData) {
 | 
			
		||||
        int row = baseMapper.insert(dictData);
 | 
			
		||||
        if (row > 0) {
 | 
			
		||||
            DictUtils.clearDictCache();
 | 
			
		||||
        }
 | 
			
		||||
        return row;
 | 
			
		||||
    }
 | 
			
		||||
	/**
 | 
			
		||||
	 * 新增保存字典数据信息
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param data 字典数据信息
 | 
			
		||||
	 * @return 结果
 | 
			
		||||
	 */
 | 
			
		||||
	@Override
 | 
			
		||||
	public int insertDictData(SysDictData data) {
 | 
			
		||||
		int row = baseMapper.insert(data);
 | 
			
		||||
		if (row > 0) {
 | 
			
		||||
			List<SysDictData> dictDatas = baseMapper.selectDictDataByType(data.getDictType());
 | 
			
		||||
			DictUtils.setDictCache(data.getDictType(), dictDatas);
 | 
			
		||||
		}
 | 
			
		||||
		return row;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 修改保存字典数据信息
 | 
			
		||||
     *
 | 
			
		||||
     * @param dictData 字典数据信息
 | 
			
		||||
     * @return 结果
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public int updateDictData(SysDictData dictData) {
 | 
			
		||||
        int row = baseMapper.updateById(dictData);
 | 
			
		||||
        if (row > 0) {
 | 
			
		||||
            DictUtils.clearDictCache();
 | 
			
		||||
        }
 | 
			
		||||
        return row;
 | 
			
		||||
    }
 | 
			
		||||
	/**
 | 
			
		||||
	 * 修改保存字典数据信息
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param data 字典数据信息
 | 
			
		||||
	 * @return 结果
 | 
			
		||||
	 */
 | 
			
		||||
	@Override
 | 
			
		||||
	public int updateDictData(SysDictData data) {
 | 
			
		||||
		int row = baseMapper.updateById(data);
 | 
			
		||||
		if (row > 0) {
 | 
			
		||||
			List<SysDictData> dictDatas = baseMapper.selectDictDataByType(data.getDictType());
 | 
			
		||||
			DictUtils.setDictCache(data.getDictType(), dictDatas);
 | 
			
		||||
		}
 | 
			
		||||
		return row;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -21,7 +21,6 @@ import org.springframework.stereotype.Service;
 | 
			
		||||
import org.springframework.transaction.annotation.Transactional;
 | 
			
		||||
 | 
			
		||||
import javax.annotation.PostConstruct;
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
@@ -33,197 +32,208 @@ import java.util.Map;
 | 
			
		||||
@Service
 | 
			
		||||
public class SysDictTypeServiceImpl extends ServiceImpl<SysDictTypeMapper, SysDictType> implements ISysDictTypeService {
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private SysDictDataMapper dictDataMapper;
 | 
			
		||||
	@Autowired
 | 
			
		||||
	private SysDictTypeMapper dictTypeMapper;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 项目启动时,初始化字典到缓存
 | 
			
		||||
     */
 | 
			
		||||
    @PostConstruct
 | 
			
		||||
    public void init() {
 | 
			
		||||
        List<SysDictType> dictTypeList = list();
 | 
			
		||||
        for (SysDictType dictType : dictTypeList) {
 | 
			
		||||
            List<SysDictData> dictDatas = dictDataMapper.selectList(
 | 
			
		||||
                    new LambdaQueryWrapper<SysDictData>()
 | 
			
		||||
                            .eq(SysDictData::getStatus, 0)
 | 
			
		||||
                            .eq(SysDictData::getDictType, dictType.getDictType())
 | 
			
		||||
                            .orderByAsc(SysDictData::getDictSort));
 | 
			
		||||
            DictUtils.setDictCache(dictType.getDictType(), dictDatas);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
	@Autowired
 | 
			
		||||
	private SysDictDataMapper dictDataMapper;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public TableDataInfo<SysDictType> selectPageDictTypeList(SysDictType dictType) {
 | 
			
		||||
        Map<String, Object> params = dictType.getParams();
 | 
			
		||||
        LambdaQueryWrapper<SysDictType> lqw = new LambdaQueryWrapper<SysDictType>()
 | 
			
		||||
                .like(StrUtil.isNotBlank(dictType.getDictName()), SysDictType::getDictName, dictType.getDictName())
 | 
			
		||||
                .eq(StrUtil.isNotBlank(dictType.getStatus()), SysDictType::getStatus, dictType.getStatus())
 | 
			
		||||
                .like(StrUtil.isNotBlank(dictType.getDictType()), SysDictType::getDictType, dictType.getDictType())
 | 
			
		||||
                .apply(Validator.isNotEmpty(params.get("beginTime")),
 | 
			
		||||
                        "date_format(create_time,'%y%m%d') >= date_format({0},'%y%m%d')",
 | 
			
		||||
                        params.get("beginTime"))
 | 
			
		||||
                .apply(Validator.isNotEmpty(params.get("endTime")),
 | 
			
		||||
                        "date_format(create_time,'%y%m%d') <= date_format({0},'%y%m%d')",
 | 
			
		||||
                        params.get("endTime"));
 | 
			
		||||
        return PageUtils.buildDataInfo(page(PageUtils.buildPage(),lqw));
 | 
			
		||||
    }
 | 
			
		||||
	/**
 | 
			
		||||
	 * 项目启动时,初始化字典到缓存
 | 
			
		||||
	 */
 | 
			
		||||
	@PostConstruct
 | 
			
		||||
	public void init() {
 | 
			
		||||
		loadingDictCache();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据条件分页查询字典类型
 | 
			
		||||
     *
 | 
			
		||||
     * @param dictType 字典类型信息
 | 
			
		||||
     * @return 字典类型集合信息
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<SysDictType> selectDictTypeList(SysDictType dictType) {
 | 
			
		||||
        Map<String, Object> params = dictType.getParams();
 | 
			
		||||
        return list(new LambdaQueryWrapper<SysDictType>()
 | 
			
		||||
                .like(StrUtil.isNotBlank(dictType.getDictName()),SysDictType::getDictName, dictType.getDictName())
 | 
			
		||||
                .eq(StrUtil.isNotBlank(dictType.getStatus()),SysDictType::getStatus, dictType.getStatus())
 | 
			
		||||
                .like(StrUtil.isNotBlank(dictType.getDictType()),SysDictType::getDictType, dictType.getDictType())
 | 
			
		||||
                .apply(Validator.isNotEmpty(params.get("beginTime")),
 | 
			
		||||
                        "date_format(create_time,'%y%m%d') >= date_format({0},'%y%m%d')",
 | 
			
		||||
                        params.get("beginTime"))
 | 
			
		||||
                .apply(Validator.isNotEmpty(params.get("endTime")),
 | 
			
		||||
                        "date_format(create_time,'%y%m%d') <= date_format({0},'%y%m%d')",
 | 
			
		||||
                        params.get("endTime")));
 | 
			
		||||
    }
 | 
			
		||||
	@Override
 | 
			
		||||
	public TableDataInfo<SysDictType> selectPageDictTypeList(SysDictType dictType) {
 | 
			
		||||
		Map<String, Object> params = dictType.getParams();
 | 
			
		||||
		LambdaQueryWrapper<SysDictType> lqw = new LambdaQueryWrapper<SysDictType>()
 | 
			
		||||
			.like(StrUtil.isNotBlank(dictType.getDictName()), SysDictType::getDictName, dictType.getDictName())
 | 
			
		||||
			.eq(StrUtil.isNotBlank(dictType.getStatus()), SysDictType::getStatus, dictType.getStatus())
 | 
			
		||||
			.like(StrUtil.isNotBlank(dictType.getDictType()), SysDictType::getDictType, dictType.getDictType())
 | 
			
		||||
			.apply(Validator.isNotEmpty(params.get("beginTime")),
 | 
			
		||||
				"date_format(create_time,'%y%m%d') >= date_format({0},'%y%m%d')",
 | 
			
		||||
				params.get("beginTime"))
 | 
			
		||||
			.apply(Validator.isNotEmpty(params.get("endTime")),
 | 
			
		||||
				"date_format(create_time,'%y%m%d') <= date_format({0},'%y%m%d')",
 | 
			
		||||
				params.get("endTime"));
 | 
			
		||||
		return PageUtils.buildDataInfo(page(PageUtils.buildPage(), lqw));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据所有字典类型
 | 
			
		||||
     *
 | 
			
		||||
     * @return 字典类型集合信息
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<SysDictType> selectDictTypeAll() {
 | 
			
		||||
        return list();
 | 
			
		||||
    }
 | 
			
		||||
	/**
 | 
			
		||||
	 * 根据条件分页查询字典类型
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param dictType 字典类型信息
 | 
			
		||||
	 * @return 字典类型集合信息
 | 
			
		||||
	 */
 | 
			
		||||
	@Override
 | 
			
		||||
	public List<SysDictType> selectDictTypeList(SysDictType dictType) {
 | 
			
		||||
		Map<String, Object> params = dictType.getParams();
 | 
			
		||||
		return list(new LambdaQueryWrapper<SysDictType>()
 | 
			
		||||
			.like(StrUtil.isNotBlank(dictType.getDictName()), SysDictType::getDictName, dictType.getDictName())
 | 
			
		||||
			.eq(StrUtil.isNotBlank(dictType.getStatus()), SysDictType::getStatus, dictType.getStatus())
 | 
			
		||||
			.like(StrUtil.isNotBlank(dictType.getDictType()), SysDictType::getDictType, dictType.getDictType())
 | 
			
		||||
			.apply(Validator.isNotEmpty(params.get("beginTime")),
 | 
			
		||||
				"date_format(create_time,'%y%m%d') >= date_format({0},'%y%m%d')",
 | 
			
		||||
				params.get("beginTime"))
 | 
			
		||||
			.apply(Validator.isNotEmpty(params.get("endTime")),
 | 
			
		||||
				"date_format(create_time,'%y%m%d') <= date_format({0},'%y%m%d')",
 | 
			
		||||
				params.get("endTime")));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据字典类型查询字典数据
 | 
			
		||||
     *
 | 
			
		||||
     * @param dictType 字典类型
 | 
			
		||||
     * @return 字典数据集合信息
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<SysDictData> selectDictDataByType(String dictType) {
 | 
			
		||||
        List<SysDictData> dictDatas = DictUtils.getDictCache(dictType);
 | 
			
		||||
        if (CollUtil.isNotEmpty(dictDatas)) {
 | 
			
		||||
            return dictDatas;
 | 
			
		||||
        }
 | 
			
		||||
        dictDatas = dictDataMapper.selectList(new LambdaQueryWrapper<SysDictData>()
 | 
			
		||||
                .eq(SysDictData::getStatus, 0)
 | 
			
		||||
                .eq(SysDictData::getDictType, dictType)
 | 
			
		||||
                .orderByAsc(SysDictData::getDictSort));
 | 
			
		||||
        if (CollUtil.isNotEmpty(dictDatas)) {
 | 
			
		||||
            DictUtils.setDictCache(dictType, dictDatas);
 | 
			
		||||
            return dictDatas;
 | 
			
		||||
        }
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
	/**
 | 
			
		||||
	 * 根据所有字典类型
 | 
			
		||||
	 *
 | 
			
		||||
	 * @return 字典类型集合信息
 | 
			
		||||
	 */
 | 
			
		||||
	@Override
 | 
			
		||||
	public List<SysDictType> selectDictTypeAll() {
 | 
			
		||||
		return list();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据字典类型ID查询信息
 | 
			
		||||
     *
 | 
			
		||||
     * @param dictId 字典类型ID
 | 
			
		||||
     * @return 字典类型
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public SysDictType selectDictTypeById(Long dictId) {
 | 
			
		||||
        return getById(dictId);
 | 
			
		||||
    }
 | 
			
		||||
	/**
 | 
			
		||||
	 * 根据字典类型查询字典数据
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param dictType 字典类型
 | 
			
		||||
	 * @return 字典数据集合信息
 | 
			
		||||
	 */
 | 
			
		||||
	@Override
 | 
			
		||||
	public List<SysDictData> selectDictDataByType(String dictType) {
 | 
			
		||||
		List<SysDictData> dictDatas = DictUtils.getDictCache(dictType);
 | 
			
		||||
		if (CollUtil.isNotEmpty(dictDatas)) {
 | 
			
		||||
			return dictDatas;
 | 
			
		||||
		}
 | 
			
		||||
		dictDatas = dictDataMapper.selectDictDataByType(dictType);
 | 
			
		||||
		if (CollUtil.isNotEmpty(dictDatas)) {
 | 
			
		||||
			DictUtils.setDictCache(dictType, dictDatas);
 | 
			
		||||
			return dictDatas;
 | 
			
		||||
		}
 | 
			
		||||
		return null;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据字典类型查询信息
 | 
			
		||||
     *
 | 
			
		||||
     * @param dictType 字典类型
 | 
			
		||||
     * @return 字典类型
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public SysDictType selectDictTypeByType(String dictType) {
 | 
			
		||||
        return getOne(new LambdaQueryWrapper<SysDictType>().eq(SysDictType::getDictType, dictType));
 | 
			
		||||
    }
 | 
			
		||||
	/**
 | 
			
		||||
	 * 根据字典类型ID查询信息
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param dictId 字典类型ID
 | 
			
		||||
	 * @return 字典类型
 | 
			
		||||
	 */
 | 
			
		||||
	@Override
 | 
			
		||||
	public SysDictType selectDictTypeById(Long dictId) {
 | 
			
		||||
		return getById(dictId);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 批量删除字典类型信息
 | 
			
		||||
     *
 | 
			
		||||
     * @param dictIds 需要删除的字典ID
 | 
			
		||||
     * @return 结果
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public int deleteDictTypeByIds(Long[] dictIds) {
 | 
			
		||||
        for (Long dictId : dictIds) {
 | 
			
		||||
            SysDictType dictType = selectDictTypeById(dictId);
 | 
			
		||||
            if (dictDataMapper.selectCount(new LambdaQueryWrapper<SysDictData>()
 | 
			
		||||
                    .eq(SysDictData::getDictType, dictType.getDictType())) > 0) {
 | 
			
		||||
                throw new CustomException(String.format("%1$s已分配,不能删除", dictType.getDictName()));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        int count = baseMapper.deleteBatchIds(Arrays.asList(dictIds));
 | 
			
		||||
        if (count > 0) {
 | 
			
		||||
            DictUtils.clearDictCache();
 | 
			
		||||
        }
 | 
			
		||||
        return count;
 | 
			
		||||
    }
 | 
			
		||||
	/**
 | 
			
		||||
	 * 根据字典类型查询信息
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param dictType 字典类型
 | 
			
		||||
	 * @return 字典类型
 | 
			
		||||
	 */
 | 
			
		||||
	@Override
 | 
			
		||||
	public SysDictType selectDictTypeByType(String dictType) {
 | 
			
		||||
		return getOne(new LambdaQueryWrapper<SysDictType>().eq(SysDictType::getDictType, dictType));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 清空缓存数据
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public void clearCache() {
 | 
			
		||||
        DictUtils.clearDictCache();
 | 
			
		||||
    }
 | 
			
		||||
	/**
 | 
			
		||||
	 * 批量删除字典类型信息
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param dictIds 需要删除的字典ID
 | 
			
		||||
	 * @return 结果
 | 
			
		||||
	 */
 | 
			
		||||
	@Override
 | 
			
		||||
	public void deleteDictTypeByIds(Long[] dictIds) {
 | 
			
		||||
		for (Long dictId : dictIds) {
 | 
			
		||||
			SysDictType dictType = selectDictTypeById(dictId);
 | 
			
		||||
			if (dictDataMapper.selectCount(new LambdaQueryWrapper<SysDictData>()
 | 
			
		||||
				.eq(SysDictData::getDictType, dictType.getDictType())) > 0) {
 | 
			
		||||
				throw new CustomException(String.format("%1$s已分配,不能删除", dictType.getDictName()));
 | 
			
		||||
			}
 | 
			
		||||
			dictTypeMapper.deleteById(dictId);
 | 
			
		||||
			DictUtils.removeDictCache(dictType.getDictType());
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 新增保存字典类型信息
 | 
			
		||||
     *
 | 
			
		||||
     * @param dictType 字典类型信息
 | 
			
		||||
     * @return 结果
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public int insertDictType(SysDictType dictType) {
 | 
			
		||||
        int row = baseMapper.insert(dictType);
 | 
			
		||||
        if (row > 0) {
 | 
			
		||||
            DictUtils.clearDictCache();
 | 
			
		||||
        }
 | 
			
		||||
        return row;
 | 
			
		||||
    }
 | 
			
		||||
	/**
 | 
			
		||||
	 * 加载字典缓存数据
 | 
			
		||||
	 */
 | 
			
		||||
	@Override
 | 
			
		||||
	public void loadingDictCache() {
 | 
			
		||||
		List<SysDictType> dictTypeList = list();
 | 
			
		||||
		for (SysDictType dictType : dictTypeList) {
 | 
			
		||||
			List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(dictType.getDictType());
 | 
			
		||||
			DictUtils.setDictCache(dictType.getDictType(), dictDatas);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 修改保存字典类型信息
 | 
			
		||||
     *
 | 
			
		||||
     * @param dictType 字典类型信息
 | 
			
		||||
     * @return 结果
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    @Transactional
 | 
			
		||||
    public int updateDictType(SysDictType dictType) {
 | 
			
		||||
        SysDictType oldDict = getById(dictType.getDictId());
 | 
			
		||||
        dictDataMapper.update(null, new LambdaUpdateWrapper<SysDictData>()
 | 
			
		||||
                .set(SysDictData::getDictType, dictType.getDictType())
 | 
			
		||||
                .eq(SysDictData::getDictType, oldDict.getDictType()));
 | 
			
		||||
        int row = baseMapper.updateById(dictType);
 | 
			
		||||
        if (row > 0) {
 | 
			
		||||
            DictUtils.clearDictCache();
 | 
			
		||||
        }
 | 
			
		||||
        return row;
 | 
			
		||||
    }
 | 
			
		||||
	/**
 | 
			
		||||
	 * 清空字典缓存数据
 | 
			
		||||
	 */
 | 
			
		||||
	@Override
 | 
			
		||||
	public void clearDictCache() {
 | 
			
		||||
		DictUtils.clearDictCache();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 校验字典类型称是否唯一
 | 
			
		||||
     *
 | 
			
		||||
     * @param dict 字典类型
 | 
			
		||||
     * @return 结果
 | 
			
		||||
     */
 | 
			
		||||
    @Override
 | 
			
		||||
    public String checkDictTypeUnique(SysDictType dict) {
 | 
			
		||||
        Long dictId = Validator.isNull(dict.getDictId()) ? -1L : dict.getDictId();
 | 
			
		||||
        SysDictType dictType = getOne(new LambdaQueryWrapper<SysDictType>()
 | 
			
		||||
                .eq(SysDictType::getDictType, dict.getDictType())
 | 
			
		||||
                .last("limit 1"));
 | 
			
		||||
        if (Validator.isNotNull(dictType) && dictType.getDictId().longValue() != dictId.longValue()) {
 | 
			
		||||
            return UserConstants.NOT_UNIQUE;
 | 
			
		||||
        }
 | 
			
		||||
        return UserConstants.UNIQUE;
 | 
			
		||||
    }
 | 
			
		||||
	/**
 | 
			
		||||
	 * 重置字典缓存数据
 | 
			
		||||
	 */
 | 
			
		||||
	@Override
 | 
			
		||||
	public void resetDictCache() {
 | 
			
		||||
		clearDictCache();
 | 
			
		||||
		loadingDictCache();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * 新增保存字典类型信息
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param dict 字典类型信息
 | 
			
		||||
	 * @return 结果
 | 
			
		||||
	 */
 | 
			
		||||
	@Override
 | 
			
		||||
	public int insertDictType(SysDictType dict) {
 | 
			
		||||
		int row = baseMapper.insert(dict);
 | 
			
		||||
		if (row > 0) {
 | 
			
		||||
			DictUtils.setDictCache(dict.getDictType(), null);
 | 
			
		||||
		}
 | 
			
		||||
		return row;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * 修改保存字典类型信息
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param dict 字典类型信息
 | 
			
		||||
	 * @return 结果
 | 
			
		||||
	 */
 | 
			
		||||
	@Override
 | 
			
		||||
	@Transactional
 | 
			
		||||
	public int updateDictType(SysDictType dict) {
 | 
			
		||||
		SysDictType oldDict = getById(dict.getDictId());
 | 
			
		||||
		dictDataMapper.update(null, new LambdaUpdateWrapper<SysDictData>()
 | 
			
		||||
			.set(SysDictData::getDictType, dict.getDictType())
 | 
			
		||||
			.eq(SysDictData::getDictType, oldDict.getDictType()));
 | 
			
		||||
		int row = baseMapper.updateById(dict);
 | 
			
		||||
		if (row > 0) {
 | 
			
		||||
			List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(dict.getDictType());
 | 
			
		||||
			DictUtils.setDictCache(dict.getDictType(), dictDatas);
 | 
			
		||||
		}
 | 
			
		||||
		return row;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * 校验字典类型称是否唯一
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param dict 字典类型
 | 
			
		||||
	 * @return 结果
 | 
			
		||||
	 */
 | 
			
		||||
	@Override
 | 
			
		||||
	public String checkDictTypeUnique(SysDictType dict) {
 | 
			
		||||
		Long dictId = Validator.isNull(dict.getDictId()) ? -1L : dict.getDictId();
 | 
			
		||||
		SysDictType dictType = getOne(new LambdaQueryWrapper<SysDictType>()
 | 
			
		||||
			.eq(SysDictType::getDictType, dict.getDictType())
 | 
			
		||||
			.last("limit 1"));
 | 
			
		||||
		if (Validator.isNotNull(dictType) && dictType.getDictId().longValue() != dictId.longValue()) {
 | 
			
		||||
			return UserConstants.NOT_UNIQUE;
 | 
			
		||||
		}
 | 
			
		||||
		return UserConstants.UNIQUE;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user