use of top.tangyh.basic.interfaces.echo.LoadService in project lamp-util by zuihou.
the class EchoServiceImpl method load.
/**
* 加载数据
* <p>
* 注意: 需要自行实现LoadService的2个方法
*
* @param typeMap 类型
* @param isUseCache 是否使用内存缓存
*/
@SneakyThrows
private void load(Map<LoadKey, Map<Serializable, Object>> typeMap, boolean isUseCache) {
for (Map.Entry<LoadKey, Map<Serializable, Object>> entries : typeMap.entrySet()) {
LoadKey type = entries.getKey();
Map<Serializable, Object> valueMap = entries.getValue();
Set<Serializable> keys = valueMap.keySet();
if (Echo.ENUM_API.equalsIgnoreCase(type.getApi())) {
Map<Serializable, Object> value = new HashMap<>();
valueMap.forEach((k, v) -> {
if (k instanceof BaseEnum) {
value.put(k, ((BaseEnum) k).getDesc());
} else {
value.put(k, k);
}
});
typeMap.put(type, value);
} else {
LoadService loadService = strategyMap.get(type.getApi());
if (loadService == null) {
log.warn("处理字段的数据回显时,没有找到@Echo注解中api属性的实例:[{}]。 请确保[{}]实现了 LoadService,并注册到Spring容器中,若api指定的是ServiceImpl,请确保在同一个服务内。", type.getApi(), type.getApi());
continue;
}
CacheLoadKeys lk = new CacheLoadKeys(type, loadService, keys);
Map<Serializable, Object> value = ips.getGuavaCache().getEnabled() && isUseCache ? caches.get(lk) : lk.loadMap();
typeMap.put(type, value);
}
}
}
Aggregations