diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDesignPageConfigServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDesignPageConfigServiceImpl.java index 2fc91154..53350114 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDesignPageConfigServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDesignPageConfigServiceImpl.java @@ -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 buildQueryWrapper(SysDesignPageConfigBo bo) { Map params = bo.getParams(); MPJLambdaWrapper 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 oldDesignPageEdges = getDesignPageEdges(bo.getPageConfigId()); if (!designPagePointList.isEmpty()) { - for (SysDesignPagePoint designPagePoint : designPagePointList) { - designPagePointMapper.insertOrUpdate(designPagePoint); - } - Set existingPagePointIds = new HashSet<>(designPagePointList.size()); - designPagePointList.forEach(point -> existingPagePointIds.add(point.getPagePointId())); - List 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 existingPagePointIds = new HashSet<>(designPagePointList.size()); + designPagePointList.forEach(point -> existingPagePointIds.add(point.getPagePointId())); + + // 过滤出需要删除的旧点位 + List 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 existingEdgeIds = new HashSet<>(designPageEdgesList.size()); - designPageEdgesList.forEach(edge -> existingEdgeIds.add(edge.getPageEdgesId())); // 假设边ID字段为getEdgeId() - List 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 existingEdgeIds = new HashSet<>(designPageEdgesList.size()); + designPageEdgesList.forEach(edge -> existingEdgeIds.add(edge.getPageEdgesId())); + List 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; }