|
|
|
|
@ -22,6 +22,8 @@ import org.dromara.system.service.ISysDesignPageConfigService;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.concurrent.CompletableFuture;
|
|
|
|
|
import java.util.concurrent.Executors;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
@ -96,20 +98,20 @@ public class SysDesignPageConfigServiceImpl implements ISysDesignPageConfigServi
|
|
|
|
|
private MPJLambdaWrapper<SysDesignPageConfig> buildQueryWrapper(SysDesignPageConfigBo bo) {
|
|
|
|
|
Map<String, Object> params = bo.getParams();
|
|
|
|
|
MPJLambdaWrapper<SysDesignPageConfig> lqw = JoinWrappers.lambda(SysDesignPageConfig.class)
|
|
|
|
|
.selectAll(SysDesignPageConfig.class)
|
|
|
|
|
.eq(bo.getPageConfigId() != null, SysDesignPageConfig::getPageConfigId, bo.getPageConfigId())
|
|
|
|
|
.like(StringUtils.isNotBlank(bo.getPageConfigName()), SysDesignPageConfig::getPageConfigName, bo.getPageConfigName())
|
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getPageBackground()), SysDesignPageConfig::getPageBackground, bo.getPageBackground())
|
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getPageRouting()), SysDesignPageConfig::getPageRouting, bo.getPageRouting())
|
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getCustomContent()), SysDesignPageConfig::getCustomContent, bo.getCustomContent())
|
|
|
|
|
.eq(bo.getSortOrder() != null, SysDesignPageConfig::getSortOrder, bo.getSortOrder())
|
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getFieldOne()), SysDesignPageConfig::getFieldOne, bo.getFieldOne())
|
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getFieldTwo()), SysDesignPageConfig::getFieldTwo, bo.getFieldTwo())
|
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getFieldThree()), SysDesignPageConfig::getFieldThree, bo.getFieldThree())
|
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getFieldFour()), SysDesignPageConfig::getFieldFour, bo.getFieldFour())
|
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getFieldFive()), SysDesignPageConfig::getFieldFive, bo.getFieldFive())
|
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getActiveFlag()), SysDesignPageConfig::getActiveFlag, bo.getActiveFlag())
|
|
|
|
|
.orderByDesc(SysDesignPageConfig::getCreateTime);
|
|
|
|
|
.selectAll(SysDesignPageConfig.class)
|
|
|
|
|
.eq(bo.getPageConfigId() != null, SysDesignPageConfig::getPageConfigId, bo.getPageConfigId())
|
|
|
|
|
.like(StringUtils.isNotBlank(bo.getPageConfigName()), SysDesignPageConfig::getPageConfigName, bo.getPageConfigName())
|
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getPageBackground()), SysDesignPageConfig::getPageBackground, bo.getPageBackground())
|
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getPageRouting()), SysDesignPageConfig::getPageRouting, bo.getPageRouting())
|
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getCustomContent()), SysDesignPageConfig::getCustomContent, bo.getCustomContent())
|
|
|
|
|
.eq(bo.getSortOrder() != null, SysDesignPageConfig::getSortOrder, bo.getSortOrder())
|
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getFieldOne()), SysDesignPageConfig::getFieldOne, bo.getFieldOne())
|
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getFieldTwo()), SysDesignPageConfig::getFieldTwo, bo.getFieldTwo())
|
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getFieldThree()), SysDesignPageConfig::getFieldThree, bo.getFieldThree())
|
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getFieldFour()), SysDesignPageConfig::getFieldFour, bo.getFieldFour())
|
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getFieldFive()), SysDesignPageConfig::getFieldFive, bo.getFieldFive())
|
|
|
|
|
.eq(StringUtils.isNotBlank(bo.getActiveFlag()), SysDesignPageConfig::getActiveFlag, bo.getActiveFlag())
|
|
|
|
|
.orderByDesc(SysDesignPageConfig::getCreateTime);
|
|
|
|
|
return lqw;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -162,39 +164,53 @@ public class SysDesignPageConfigServiceImpl implements ISysDesignPageConfigServi
|
|
|
|
|
List<SysDesignPageEdges> oldDesignPageEdges = getDesignPageEdges(bo.getPageConfigId());
|
|
|
|
|
|
|
|
|
|
if (!designPagePointList.isEmpty()) {
|
|
|
|
|
for (SysDesignPagePoint designPagePoint : designPagePointList) {
|
|
|
|
|
designPagePointMapper.insertOrUpdate(designPagePoint);
|
|
|
|
|
}
|
|
|
|
|
Set<String> existingPagePointIds = new HashSet<>(designPagePointList.size());
|
|
|
|
|
designPagePointList.forEach(point -> existingPagePointIds.add(point.getPagePointId()));
|
|
|
|
|
List<String> filteredPagePointIds = new ArrayList<>(oldDesignPagePoints.size());
|
|
|
|
|
for (SysDesignPagePoint point : oldDesignPagePoints) {
|
|
|
|
|
String pagePointId = point.getPagePointId();
|
|
|
|
|
if (!existingPagePointIds.contains(pagePointId)) {
|
|
|
|
|
filteredPagePointIds.add(pagePointId);
|
|
|
|
|
// 使用CompletableFuture在异步线程中执行
|
|
|
|
|
CompletableFuture.runAsync(() -> {
|
|
|
|
|
// 插入或更新新的点位
|
|
|
|
|
for (SysDesignPagePoint designPagePoint : designPagePointList) {
|
|
|
|
|
designPagePointMapper.insertOrUpdate(designPagePoint);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
for (String pagePointId : filteredPagePointIds) {
|
|
|
|
|
designPagePointMapper.deleteById(pagePointId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 获取新点位ID集合
|
|
|
|
|
Set<String> existingPagePointIds = new HashSet<>(designPagePointList.size());
|
|
|
|
|
designPagePointList.forEach(point -> existingPagePointIds.add(point.getPagePointId()));
|
|
|
|
|
|
|
|
|
|
// 过滤出需要删除的旧点位
|
|
|
|
|
List<String> filteredPagePointIds = new ArrayList<>(oldDesignPagePoints.size());
|
|
|
|
|
for (SysDesignPagePoint point : oldDesignPagePoints) {
|
|
|
|
|
String pagePointId = point.getPagePointId();
|
|
|
|
|
if (!existingPagePointIds.contains(pagePointId)) {
|
|
|
|
|
filteredPagePointIds.add(pagePointId);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 删除旧点位
|
|
|
|
|
for (String pagePointId : filteredPagePointIds) {
|
|
|
|
|
designPagePointMapper.deleteById(pagePointId);
|
|
|
|
|
}
|
|
|
|
|
}, Executors.newFixedThreadPool(1)); // 使用单独的线程池
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!designPageEdgesList.isEmpty()) {
|
|
|
|
|
for (SysDesignPageEdges designPageEdges : designPageEdgesList) {
|
|
|
|
|
designPageEdgesMapper.insertOrUpdate(designPageEdges);
|
|
|
|
|
}
|
|
|
|
|
// 获取现有边ID集合(用于快速判断是否存在)
|
|
|
|
|
Set<String> existingEdgeIds = new HashSet<>(designPageEdgesList.size());
|
|
|
|
|
designPageEdgesList.forEach(edge -> existingEdgeIds.add(edge.getPageEdgesId())); // 假设边ID字段为getEdgeId()
|
|
|
|
|
List<String> edgesToDelete = new ArrayList<>(oldDesignPageEdges.size());
|
|
|
|
|
for (SysDesignPageEdges edge : oldDesignPageEdges) {
|
|
|
|
|
String edgeId = edge.getPageEdgesId();
|
|
|
|
|
if (!existingEdgeIds.contains(edgeId)) {
|
|
|
|
|
edgesToDelete.add(edgeId);
|
|
|
|
|
// 使用CompletableFuture在异步线程中执行
|
|
|
|
|
CompletableFuture.runAsync(() -> {
|
|
|
|
|
for (SysDesignPageEdges designPageEdges : designPageEdgesList) {
|
|
|
|
|
designPageEdgesMapper.insertOrUpdate(designPageEdges);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
for (String edgeId : edgesToDelete) {
|
|
|
|
|
designPageEdgesMapper.deleteById(edgeId);
|
|
|
|
|
}
|
|
|
|
|
// 获取现有边ID集合(用于快速判断是否存在)
|
|
|
|
|
Set<String> existingEdgeIds = new HashSet<>(designPageEdgesList.size());
|
|
|
|
|
designPageEdgesList.forEach(edge -> existingEdgeIds.add(edge.getPageEdgesId()));
|
|
|
|
|
List<String> edgesToDelete = new ArrayList<>(oldDesignPageEdges.size());
|
|
|
|
|
for (SysDesignPageEdges edge : oldDesignPageEdges) {
|
|
|
|
|
String edgeId = edge.getPageEdgesId();
|
|
|
|
|
if (!existingEdgeIds.contains(edgeId)) {
|
|
|
|
|
edgesToDelete.add(edgeId);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
for (String edgeId : edgesToDelete) {
|
|
|
|
|
designPageEdgesMapper.deleteById(edgeId);
|
|
|
|
|
}
|
|
|
|
|
}, Executors.newFixedThreadPool(1)); // 使用单独的线程池
|
|
|
|
|
}
|
|
|
|
|
return baseMapper.updateById(update) > 0;
|
|
|
|
|
}
|
|
|
|
|
|