fix:1.优化数据同步数据表配置功能

This commit is contained in:
panbaolin 2026-06-25 11:54:14 +08:00
parent e963667e0b
commit b780ad3127

View File

@ -21,6 +21,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* @Description: 同步策略表
@ -45,8 +46,6 @@ public class StasSyncStrategyServiceImpl extends ServiceImpl<StasSyncStrategyMap
@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());
@ -70,23 +69,28 @@ public class StasSyncStrategyServiceImpl extends ServiceImpl<StasSyncStrategyMap
String createSql = getCreateTableSql(sourceConn, stasSyncStrategy.getSourceOwner(),sourceInfo.getDbLink(),
stasSyncStrategy.getTargetOwner(), stasSyncStrategy.getTableName(),
sourceInfo.getType(), targetInfo.getType());
// 在目标库创建表
try (Statement stmt = targetConn.createStatement()) {
stmt.execute(createSql);
LambdaQueryWrapper<StasSyncStrategy> syncStrategyQueryWrapper = new LambdaQueryWrapper<>();
syncStrategyQueryWrapper.eq(StasSyncStrategy::getTaskId, stasSyncStrategy.getTaskId());
syncStrategyQueryWrapper.eq(StasSyncStrategy::getSourceOwner,stasSyncStrategy.getSourceOwner());
syncStrategyQueryWrapper.eq(StasSyncStrategy::getTargetOwner,stasSyncStrategy.getTargetOwner());
syncStrategyQueryWrapper.eq(StasSyncStrategy::getTableName,stasSyncStrategy.getTableName());
StasSyncStrategy queryResult = stasSyncStrategyService.selectOne(syncStrategyQueryWrapper);
if(Objects.nonNull(queryResult)){
stasSyncStrategyService.delete(syncStrategyQueryWrapper);
}
this.baseMapper.insert(stasSyncStrategy);
} catch (Exception e) {
throw new JeecgBootException(e.getMessage());
}
} else {
this.baseMapper.insert(stasSyncStrategy);
}
} catch (SQLException e) {
e.printStackTrace();
throw new JeecgBootException(String.format("处理表: %s时出错", stasSyncStrategy.getTableName()));
throw new JeecgBootException(String.format("处理表: %s时出错", stasSyncStrategy.getTableName()),e);
}
} catch (SQLException e) {
throw new JeecgBootException(e.getMessage());
throw new JeecgBootException(e);
}
}
}