1. 增加字典数据的缓存与 util
2. 引入 Excel 组件
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package cn.iocoder.dashboard.modules.system.service.dict;
|
||||
|
||||
import cn.iocoder.dashboard.common.pojo.PageResult;
|
||||
import cn.iocoder.dashboard.framework.dict.core.service.DictDataFrameworkService;
|
||||
import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataCreateReqVO;
|
||||
import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataPageReqVO;
|
||||
import cn.iocoder.dashboard.modules.system.controller.dict.vo.data.SysDictDataUpdateReqVO;
|
||||
@@ -13,8 +14,18 @@ import java.util.List;
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
public interface SysDictDataService {
|
||||
public interface SysDictDataService extends DictDataFrameworkService {
|
||||
|
||||
/**
|
||||
* 初始化,主要是初始化缓存
|
||||
*/
|
||||
void init();
|
||||
|
||||
/**
|
||||
* 获得字典数据列表
|
||||
*
|
||||
* @return 字典数据全列表
|
||||
*/
|
||||
List<SysDictDataDO> listDictDatas();
|
||||
|
||||
/**
|
||||
|
||||
@@ -12,9 +12,11 @@ import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dict.SysDictData
|
||||
import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dict.SysDictTypeDO;
|
||||
import cn.iocoder.dashboard.modules.system.service.dict.SysDictDataService;
|
||||
import cn.iocoder.dashboard.modules.system.service.dict.SysDictTypeService;
|
||||
import com.google.common.collect.ImmutableTable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
@@ -32,12 +34,42 @@ public class SysDictDataServiceImpl implements SysDictDataService {
|
||||
.comparing(SysDictDataDO::getDictType)
|
||||
.thenComparingInt(SysDictDataDO::getSort);
|
||||
|
||||
/**
|
||||
* 字典数据缓存,第二个 key 使用 label
|
||||
*
|
||||
* key1:字典类型 dictType
|
||||
* key2:字典标签 label
|
||||
*/
|
||||
private ImmutableTable<String, String, SysDictDataDO> labelDictDataCache;
|
||||
/**
|
||||
* 字典数据缓存,第二个 key 使用 value
|
||||
*
|
||||
* key1:字典类型 dictType
|
||||
* key2:字典值 value
|
||||
*/
|
||||
private ImmutableTable<String, String, SysDictDataDO> valueDictDataCache;
|
||||
|
||||
@Resource
|
||||
private SysDictTypeService dictTypeService;
|
||||
|
||||
@Resource
|
||||
private SysDictDataMapper dictDataMapper;
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
// 获得字典数据
|
||||
List<SysDictDataDO> list = this.listDictDatas();
|
||||
// 构建缓存
|
||||
ImmutableTable.Builder<String, String, SysDictDataDO> labelDictDataBuilder = ImmutableTable.builder();
|
||||
ImmutableTable.Builder<String, String, SysDictDataDO> valueDictDataBuilder = ImmutableTable.builder();
|
||||
list.forEach(dictData -> {
|
||||
labelDictDataBuilder.put(dictData.getDictType(), dictData.getLabel(), dictData);
|
||||
valueDictDataBuilder.put(dictData.getDictType(), dictData.getValue(), dictData);
|
||||
});
|
||||
labelDictDataCache = labelDictDataBuilder.build();
|
||||
valueDictDataCache = valueDictDataBuilder.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SysDictDataDO> listDictDatas() {
|
||||
List<SysDictDataDO> list = dictDataMapper.selectList();
|
||||
@@ -130,4 +162,19 @@ public class SysDictDataServiceImpl implements SysDictDataService {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public SysDictDataDO getDictDataFromCache(String type, String value) {
|
||||
return valueDictDataCache.get(type, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SysDictDataDO parseDictDataFromCache(String type, String label) {
|
||||
return labelDictDataCache.get(type, label);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SysDictDataDO> listDictDatasFromCache(String type) {
|
||||
return new ArrayList<>(labelDictDataCache.row(type).values());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user