From e929c61f3b93133476aee43f4f23e464405a29f3 Mon Sep 17 00:00:00 2001 From: hekaiyu <13673834656@163.com> Date: Thu, 23 Oct 2025 10:20:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=9D=E5=AD=98=E8=A1=A8=E4=BA=8B=E5=8A=A1?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StasSyncStrategyController.java | 10 +-- .../service/IStasSyncStrategyService.java | 5 +- .../impl/StasSyncStrategyServiceImpl.java | 88 ++++++++++--------- 3 files changed, 52 insertions(+), 51 deletions(-) diff --git a/jeecg-module-sync/src/main/java/org/jeecg/stasSyncStrategy/controller/StasSyncStrategyController.java b/jeecg-module-sync/src/main/java/org/jeecg/stasSyncStrategy/controller/StasSyncStrategyController.java index 6c95dbc..2404065 100644 --- a/jeecg-module-sync/src/main/java/org/jeecg/stasSyncStrategy/controller/StasSyncStrategyController.java +++ b/jeecg-module-sync/src/main/java/org/jeecg/stasSyncStrategy/controller/StasSyncStrategyController.java @@ -71,15 +71,7 @@ public class StasSyncStrategyController extends JeecgController createTargetTables(@RequestBody List stasSyncStrategys) { - if(null != stasSyncStrategys && stasSyncStrategys.size() > 0) { - String taskId = stasSyncStrategys.get(0).getTaskId(); - stasSyncStrategyService.remove(new LambdaQueryWrapper().eq(StasSyncStrategy::getTaskId, taskId)); - for (StasSyncStrategy stasSyncStrategy : stasSyncStrategys) { - if(stasSyncStrategyService.validateTables(stasSyncStrategy)){ - stasSyncStrategyService.createTargetTables(stasSyncStrategy); - } - } - } + stasSyncStrategyService.createTargetTables(stasSyncStrategys); return Result.OK("添加成功!"); } diff --git a/jeecg-module-sync/src/main/java/org/jeecg/stasSyncStrategy/service/IStasSyncStrategyService.java b/jeecg-module-sync/src/main/java/org/jeecg/stasSyncStrategy/service/IStasSyncStrategyService.java index 6578f48..461d9c4 100644 --- a/jeecg-module-sync/src/main/java/org/jeecg/stasSyncStrategy/service/IStasSyncStrategyService.java +++ b/jeecg-module-sync/src/main/java/org/jeecg/stasSyncStrategy/service/IStasSyncStrategyService.java @@ -4,6 +4,7 @@ import org.jeecg.modules.base.entity.StasSyncStrategy; import com.baomidou.mybatisplus.extension.service.IService; import java.sql.SQLException; +import java.util.List; /** * @Description: 同步策略表 @@ -23,8 +24,8 @@ public interface IStasSyncStrategyService extends IService { /** * 在目标库创建表结构 - * @param stasSyncStrategy 同步策略信息 + * @param stasSyncStrategys 同步策略信息 * @throws SQLException 数据库异常 */ - void createTargetTables(StasSyncStrategy stasSyncStrategy); + void createTargetTables(List stasSyncStrategys); } diff --git a/jeecg-module-sync/src/main/java/org/jeecg/stasSyncStrategy/service/impl/StasSyncStrategyServiceImpl.java b/jeecg-module-sync/src/main/java/org/jeecg/stasSyncStrategy/service/impl/StasSyncStrategyServiceImpl.java index 2036941..9417379 100644 --- a/jeecg-module-sync/src/main/java/org/jeecg/stasSyncStrategy/service/impl/StasSyncStrategyServiceImpl.java +++ b/jeecg-module-sync/src/main/java/org/jeecg/stasSyncStrategy/service/impl/StasSyncStrategyServiceImpl.java @@ -1,5 +1,6 @@ package org.jeecg.stasSyncStrategy.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.RequiredArgsConstructor; import org.jeecg.common.constant.enums.SourceDataTypeEnum; import org.jeecg.common.exception.JeecgBootException; @@ -32,6 +33,7 @@ public class StasSyncStrategyServiceImpl extends ServiceImpl stasSyncStrategys) { + if(null != stasSyncStrategys && stasSyncStrategys.size() > 0) { + String taskId = stasSyncStrategys.get(0).getTaskId(); + stasSyncStrategyService.delete(new LambdaQueryWrapper().eq(StasSyncStrategy::getTaskId, taskId)); + for (StasSyncStrategy stasSyncStrategy : stasSyncStrategys) { + StasTaskConfig stasTaskConfig = stasTaskConfigMapper.selectById(stasSyncStrategy.getTaskId()); + StasDataSource sourceInfo = stasDataSourceMapper.selectById(stasTaskConfig.getSourceId()); + StasDataSource targetInfo = stasDataSourceMapper.selectById(stasTaskConfig.getTargetId()); - String sourceUrl = DBUtil.getUrl(sourceInfo.getIpAddress(), sourceInfo.getPort(), sourceInfo.getServeId()); - String targetUrl; - if(SourceDataTypeEnum.ORACLE.getKey().equals(targetInfo.getType())){ - targetUrl = DBUtil.getUrl(targetInfo.getIpAddress(), targetInfo.getPort(), targetInfo.getServeId()); - }else{ - targetUrl = DBUtil.getPgUrl(targetInfo.getIpAddress(), targetInfo.getPort(), targetInfo.getServeId()); - } - - try (Connection sourceConn = DriverManager.getConnection(sourceUrl, sourceInfo.getUsername(), sourceInfo.getPassword()); - Connection targetConn = DriverManager.getConnection(targetUrl, targetInfo.getUsername(), targetInfo.getPassword())) { - - try { - // 检查表是否已存在 - if (!isTableExists(targetConn, stasSyncStrategy.getTargetOwner(), stasSyncStrategy.getTableName(), targetInfo.getType())) { - // 获取源表结构 - String createSql = getCreateTableSql(sourceConn, stasSyncStrategy.getSourceOwner(), - stasSyncStrategy.getTargetOwner(), stasSyncStrategy.getTableName(), - sourceInfo.getType(), targetInfo.getType()); - - // 在目标库创建表 - try (Statement stmt = targetConn.createStatement()) { - stmt.execute(createSql); - this.baseMapper.insert(stasSyncStrategy); - } catch (Exception e) { - e.printStackTrace(); - throw new JeecgBootException(e.getMessage()); - } - } else { - this.baseMapper.insert(stasSyncStrategy); -// throw new JeecgBootException(String.format("在用户%s中,%s表已存在,请删除已存在的表!", -// stasSyncStrategy.getTargetOwner(), stasSyncStrategy.getTableName())); + String sourceUrl = DBUtil.getUrl(sourceInfo.getIpAddress(), sourceInfo.getPort(), sourceInfo.getServeId()); + String targetUrl; + if(SourceDataTypeEnum.ORACLE.getKey().equals(targetInfo.getType())){ + targetUrl = DBUtil.getUrl(targetInfo.getIpAddress(), targetInfo.getPort(), targetInfo.getServeId()); + }else{ + targetUrl = DBUtil.getPgUrl(targetInfo.getIpAddress(), targetInfo.getPort(), targetInfo.getServeId()); + } + + try (Connection sourceConn = DriverManager.getConnection(sourceUrl, sourceInfo.getUsername(), sourceInfo.getPassword()); + Connection targetConn = DriverManager.getConnection(targetUrl, targetInfo.getUsername(), targetInfo.getPassword())) { + + try { + // 检查表是否已存在 + if (!isTableExists(targetConn, stasSyncStrategy.getTargetOwner(), stasSyncStrategy.getTableName(), targetInfo.getType())) { + // 获取源表结构 + String createSql = getCreateTableSql(sourceConn, stasSyncStrategy.getSourceOwner(), + stasSyncStrategy.getTargetOwner(), stasSyncStrategy.getTableName(), + sourceInfo.getType(), targetInfo.getType()); + + // 在目标库创建表 + try (Statement stmt = targetConn.createStatement()) { + stmt.execute(createSql); + this.baseMapper.insert(stasSyncStrategy); + } catch (Exception e) { + e.printStackTrace(); + throw new JeecgBootException(e.getMessage()); + } + } else { + this.baseMapper.insert(stasSyncStrategy); +// throw new JeecgBootException(String.format("在用户%s中,%s表已存在,请删除已存在的表!", +// stasSyncStrategy.getTargetOwner(), stasSyncStrategy.getTableName())); + } + } catch (SQLException e) { + throw new JeecgBootException(String.format("处理表: %s时出错", stasSyncStrategy.getTableName())); + } + } catch (SQLException e) { + throw new JeecgBootException(e.getMessage()); } - } catch (SQLException e) { - throw new JeecgBootException(String.format("处理表: %s时出错", stasSyncStrategy.getTableName())); } - } catch (SQLException e) { - throw new JeecgBootException(e.getMessage()); } }