Browse Source

优化关联表单处理速度,添加本地缓存

master
liwenxuan 6 months ago
parent
commit
bfcbc768da
  1. 43
      src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java

43
src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java

@ -2065,9 +2065,50 @@ public class CustomerFormServiceImpl implements CustomerFormService {
}
public void processDataTitles(List<TreeMap<String, Object>> dataTitles) {
// 本地缓存:存储 creatorValue -> adminOrg 的映射
Map<String, String> adminOrgCache = new HashMap<>();
for (TreeMap<String, Object> map : dataTitles) {
// 统一处理 owner 字段
Object ownerValue = map.get("owner");
if (ownerValue == null || StringUtils.isBlank(ownerValue.toString())) {
map.put("owner", map.get("creater"));
}
// 统一处理 org 字段
Object orgValue = map.get("org");
if (orgValue == null || StringUtils.isBlank(orgValue.toString())) {
Object creatorValueObj = map.get("creater");
if (creatorValueObj == null) {
// 处理 creatorValue 为 null 的情况(保持原逻辑)
map.put("org", null);
continue;
}
public void processDataTitles(List<TreeMap<String, Object>> dataTitles) {
String creatorValue = creatorValueObj.toString();
if (StringUtils.isBlank(creatorValue)) {
// 处理 creatorValue 为空字符串的情况(保持原逻辑)
map.put("org", "");
continue;
}
// 检查本地缓存
String adminOrg = adminOrgCache.get(creatorValue);
if (adminOrg == null) {
// 缓存未命中:查询数据库并缓存结果
adminOrg = userService.getManContByKey(creatorValue).getAdminOrg().toString();
adminOrgCache.put(creatorValue, adminOrg);
}
map.put("org", adminOrg);
}
}
}
//优化前的processDataTitles,会出现大量重复查询
public void processDataTitles1(List<TreeMap<String, Object>> dataTitles) {
for (TreeMap<String, Object> map : dataTitles) {
if (!map.containsKey("owner")) {
Object creatorValue = map.get("creater");

Loading…
Cancel
Save