Compare commits

..

No commits in common. "3dcf5db691649786da012431b0838edb22ee73b5" and "9fa131fe9c06b3a7c9b46d014ccc064e8002c1d3" have entirely different histories.

3 changed files with 47 additions and 48 deletions

View File

@ -71,7 +71,15 @@ public class StasSyncStrategyController extends JeecgController<StasSyncStrategy
@Operation(summary="同步策略表-在目标库创建表结构")
@PostMapping(value = "/createTargetTables")
public Result<String> createTargetTables(@RequestBody List<StasSyncStrategy> stasSyncStrategys) {
stasSyncStrategyService.createTargetTables(stasSyncStrategys);
if(null != stasSyncStrategys && stasSyncStrategys.size() > 0) {
String taskId = stasSyncStrategys.get(0).getTaskId();
stasSyncStrategyService.remove(new LambdaQueryWrapper<StasSyncStrategy>().eq(StasSyncStrategy::getTaskId, taskId));
for (StasSyncStrategy stasSyncStrategy : stasSyncStrategys) {
if(stasSyncStrategyService.validateTables(stasSyncStrategy)){
stasSyncStrategyService.createTargetTables(stasSyncStrategy);
}
}
}
return Result.OK("添加成功!");
}

View File

@ -4,7 +4,6 @@ import org.jeecg.modules.base.entity.StasSyncStrategy;
import com.baomidou.mybatisplus.extension.service.IService;
import java.sql.SQLException;
import java.util.List;
/**
* @Description: 同步策略表
@ -24,8 +23,8 @@ public interface IStasSyncStrategyService extends IService<StasSyncStrategy> {
/**
* 在目标库创建表结构
* @param stasSyncStrategys 同步策略信息
* @param stasSyncStrategy 同步策略信息
* @throws SQLException 数据库异常
*/
void createTargetTables(List<StasSyncStrategy> stasSyncStrategys);
void createTargetTables(StasSyncStrategy stasSyncStrategy);
}

View File

@ -1,6 +1,5 @@
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;
@ -33,7 +32,6 @@ public class StasSyncStrategyServiceImpl extends ServiceImpl<StasSyncStrategyMap
private final StasTaskConfigMapper stasTaskConfigMapper;
private final StasDataSourceMapper stasDataSourceMapper;
private final StasSyncStrategyMapper stasSyncStrategyService;
/**
@ -69,59 +67,53 @@ public class StasSyncStrategyServiceImpl extends ServiceImpl<StasSyncStrategyMap
/**
* 在目标库创建表结构
* @param stasSyncStrategys 同步策略信息
* @param stasSyncStrategy 同步策略信息
* @throws SQLException 数据库异常
*/
@Transactional
@Override
public void createTargetTables(List<StasSyncStrategy> stasSyncStrategys) {
if(null != stasSyncStrategys && stasSyncStrategys.size() > 0) {
String taskId = stasSyncStrategys.get(0).getTaskId();
stasSyncStrategyService.delete(new LambdaQueryWrapper<StasSyncStrategy>().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());
public void createTargetTables(StasSyncStrategy stasSyncStrategy) {
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());
}
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 (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 {
// 检查表是否已存在
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()));
// 在目标库创建表
try (Statement stmt = targetConn.createStatement()) {
stmt.execute(createSql);
this.baseMapper.insert(stasSyncStrategy);
} catch (Exception e) {
e.printStackTrace();
throw new JeecgBootException(e.getMessage());
}
} catch (SQLException e) {
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());
}
}