【新增】添加easy trans的字典初始化

This commit is contained in:
wanglei 2022-09-30 18:05:13 +08:00
parent bfab7cf0f2
commit f34d074d00

View File

@ -24,6 +24,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fhs.trans.service.impl.DictionaryTransService;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import vip.xiaonuo.common.enums.CommonSortOrderEnum; import vip.xiaonuo.common.enums.CommonSortOrderEnum;
import vip.xiaonuo.common.exception.CommonException; import vip.xiaonuo.common.exception.CommonException;
@ -34,7 +36,11 @@ import vip.xiaonuo.dev.modular.dict.mapper.DevDictMapper;
import vip.xiaonuo.dev.modular.dict.param.*; import vip.xiaonuo.dev.modular.dict.param.*;
import vip.xiaonuo.dev.modular.dict.service.DevDictService; import vip.xiaonuo.dev.modular.dict.service.DevDictService;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -44,7 +50,12 @@ import java.util.stream.Collectors;
* @date 2022/4/22 10:41 * @date 2022/4/22 10:41
**/ **/
@Service @Service
public class DevDictServiceImpl extends ServiceImpl<DevDictMapper, DevDict> implements DevDictService { public class DevDictServiceImpl extends ServiceImpl<DevDictMapper, DevDict> implements DevDictService, InitializingBean {
private static final String ROOT_PARENT_ID = "0";
@Resource
private DictionaryTransService dictionaryTransService;
@Override @Override
public Page<DevDict> page(DevDictPageParam devDictPageParam) { public Page<DevDict> page(DevDictPageParam devDictPageParam) {
@ -103,6 +114,7 @@ public class DevDictServiceImpl extends ServiceImpl<DevDictMapper, DevDict> impl
checkParam(devDictAddParam); checkParam(devDictAddParam);
DevDict devDict = BeanUtil.toBean(devDictAddParam, DevDict.class); DevDict devDict = BeanUtil.toBean(devDictAddParam, DevDict.class);
this.save(devDict); this.save(devDict);
refreshTransCache();
} }
private void checkParam(DevDictAddParam devDictAddParam) { private void checkParam(DevDictAddParam devDictAddParam) {
@ -129,6 +141,7 @@ public class DevDictServiceImpl extends ServiceImpl<DevDictMapper, DevDict> impl
checkParam(devDictEditParam); checkParam(devDictEditParam);
BeanUtil.copyProperties(devDictEditParam, devDict); BeanUtil.copyProperties(devDictEditParam, devDict);
this.updateById(devDict); this.updateById(devDict);
refreshTransCache();
} }
private void checkParam(DevDictEditParam devDictEditParam) { private void checkParam(DevDictEditParam devDictEditParam) {
@ -178,4 +191,35 @@ public class DevDictServiceImpl extends ServiceImpl<DevDictMapper, DevDict> impl
} }
return devDict; return devDict;
} }
@Override
public void afterPropertiesSet() throws Exception {
refreshTransCache();
}
private void refreshTransCache() {
// 异步不阻塞主线程不会 增加启动用时
CompletableFuture.supplyAsync(()->{
// 使用redis能解决共享问题但是性能没有直接取缓存的好
dictionaryTransService.makeUseRedis();
List<DevDict> devDicts = super.list(new LambdaQueryWrapper<DevDict>());
// 非root级别的字典根据ParentId分组
Map<String,List<DevDict>> devDictGroupByPIDMap = devDicts.stream().filter(dict -> {
return !ROOT_PARENT_ID.equals(dict.getParentId());
}).collect(Collectors.groupingBy(DevDict::getParentId));
Map<String,String> parentDictIdValMap = devDicts.stream().filter(dict -> {
return ROOT_PARENT_ID.equals(dict.getParentId());
}).collect(Collectors.toMap(DevDict::getId,DevDict::getDictValue));
for (String parentId : parentDictIdValMap.keySet()) {
if(devDictGroupByPIDMap.containsKey(parentId)){
dictionaryTransService.refreshCache(parentDictIdValMap.get(parentId),devDictGroupByPIDMap.get(parentId).stream()
.collect(Collectors.toMap(DevDict::getDictValue,DevDict::getDictLabel)));
}
}
return null;
});
}
} }