update 大屏设计页面配置异步存储

master
yinq 1 week ago
parent b6edcfddc9
commit 714d55f3c1

@ -22,6 +22,8 @@ import org.dromara.system.service.ISysDesignPageConfigService;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.*; import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executors;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -162,11 +164,18 @@ public class SysDesignPageConfigServiceImpl implements ISysDesignPageConfigServi
List<SysDesignPageEdges> oldDesignPageEdges = getDesignPageEdges(bo.getPageConfigId()); List<SysDesignPageEdges> oldDesignPageEdges = getDesignPageEdges(bo.getPageConfigId());
if (!designPagePointList.isEmpty()) { if (!designPagePointList.isEmpty()) {
// 使用CompletableFuture在异步线程中执行
CompletableFuture.runAsync(() -> {
// 插入或更新新的点位
for (SysDesignPagePoint designPagePoint : designPagePointList) { for (SysDesignPagePoint designPagePoint : designPagePointList) {
designPagePointMapper.insertOrUpdate(designPagePoint); designPagePointMapper.insertOrUpdate(designPagePoint);
} }
// 获取新点位ID集合
Set<String> existingPagePointIds = new HashSet<>(designPagePointList.size()); Set<String> existingPagePointIds = new HashSet<>(designPagePointList.size());
designPagePointList.forEach(point -> existingPagePointIds.add(point.getPagePointId())); designPagePointList.forEach(point -> existingPagePointIds.add(point.getPagePointId()));
// 过滤出需要删除的旧点位
List<String> filteredPagePointIds = new ArrayList<>(oldDesignPagePoints.size()); List<String> filteredPagePointIds = new ArrayList<>(oldDesignPagePoints.size());
for (SysDesignPagePoint point : oldDesignPagePoints) { for (SysDesignPagePoint point : oldDesignPagePoints) {
String pagePointId = point.getPagePointId(); String pagePointId = point.getPagePointId();
@ -174,17 +183,23 @@ public class SysDesignPageConfigServiceImpl implements ISysDesignPageConfigServi
filteredPagePointIds.add(pagePointId); filteredPagePointIds.add(pagePointId);
} }
} }
// 删除旧点位
for (String pagePointId : filteredPagePointIds) { for (String pagePointId : filteredPagePointIds) {
designPagePointMapper.deleteById(pagePointId); designPagePointMapper.deleteById(pagePointId);
} }
}, Executors.newFixedThreadPool(1)); // 使用单独的线程池
} }
if (!designPageEdgesList.isEmpty()) { if (!designPageEdgesList.isEmpty()) {
// 使用CompletableFuture在异步线程中执行
CompletableFuture.runAsync(() -> {
for (SysDesignPageEdges designPageEdges : designPageEdgesList) { for (SysDesignPageEdges designPageEdges : designPageEdgesList) {
designPageEdgesMapper.insertOrUpdate(designPageEdges); designPageEdgesMapper.insertOrUpdate(designPageEdges);
} }
// 获取现有边ID集合用于快速判断是否存在 // 获取现有边ID集合用于快速判断是否存在
Set<String> existingEdgeIds = new HashSet<>(designPageEdgesList.size()); Set<String> existingEdgeIds = new HashSet<>(designPageEdgesList.size());
designPageEdgesList.forEach(edge -> existingEdgeIds.add(edge.getPageEdgesId())); // 假设边ID字段为getEdgeId() designPageEdgesList.forEach(edge -> existingEdgeIds.add(edge.getPageEdgesId()));
List<String> edgesToDelete = new ArrayList<>(oldDesignPageEdges.size()); List<String> edgesToDelete = new ArrayList<>(oldDesignPageEdges.size());
for (SysDesignPageEdges edge : oldDesignPageEdges) { for (SysDesignPageEdges edge : oldDesignPageEdges) {
String edgeId = edge.getPageEdgesId(); String edgeId = edge.getPageEdgesId();
@ -195,6 +210,7 @@ public class SysDesignPageConfigServiceImpl implements ISysDesignPageConfigServi
for (String edgeId : edgesToDelete) { for (String edgeId : edgesToDelete) {
designPageEdgesMapper.deleteById(edgeId); designPageEdgesMapper.deleteById(edgeId);
} }
}, Executors.newFixedThreadPool(1)); // 使用单独的线程池
} }
return baseMapper.updateById(update) > 0; return baseMapper.updateById(update) > 0;
} }

Loading…
Cancel
Save