feat:(同步)数据资产同步到资产结构里面完善

dev
zhang xu 2024-04-26 08:38:52 +08:00
parent 0c55e0126f
commit 8f078e2081
5 changed files with 90 additions and 30 deletions

View File

@ -21,7 +21,7 @@ import java.util.List;
* @Created: 2024/4/25 14:53 * @Created: 2024/4/25 14:53
*/ */
@RestController @RestController
@RequestMapping("/jdbc") @RequestMapping("/DictionaryData")
public class DictionaryDataController extends BaseController { public class DictionaryDataController extends BaseController {
@Autowired @Autowired

View File

@ -7,7 +7,7 @@ import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;
/** /**
* @ClassDescription: * @ClassDescription:
* @JdkVersion: 17 * @JdkVersion: 17
* @Author: zhangxu * @Author: zhangxu

View File

@ -51,7 +51,7 @@ public interface DataAssetMapper {
* @param id * @param id
* @return * @return
*/ */
public int deleteDataAssetById(Long[] id); public int deleteDataAssetById(Long id);
/** /**
* *
@ -59,7 +59,7 @@ public interface DataAssetMapper {
* @param ids * @param ids
* @return * @return
*/ */
public int deleteDataAssetByIds(Long[] ids); public int deleteDataAssetByIds(@Param("ids") Long[] ids);
void batchInsert(@Param("dataAssets") List<DataAsset> dataAssets); void batchInsert(@Param("dataAssets") List<DataAsset> dataAssets);

View File

@ -70,22 +70,19 @@ public class DataAssetServiceImpl implements DataAssetService{
return dataAssetMapper.updateDataAsset(dataAsset); return dataAssetMapper.updateDataAsset(dataAsset);
} }
@Override
public int deleteDataAssetByIds(Long[] ids) {
return dataAssetMapper.deleteDataAssetByIds(ids);
}
/** /**
* *
* *
* @param ids * @param ids
* @return * @return
*/ */
@Override
public int deleteDataAssetByIds(Long[] ids)
{
return dataAssetMapper.deleteDataAssetByIds(ids);
}
@Override
public int deleteDataAssetById(Long id) {
return 0;
}
/** /**
* *
@ -94,8 +91,15 @@ public class DataAssetServiceImpl implements DataAssetService{
* @return * @return
*/ */
@Override @Override
public int deleteDataAssetById(Long[] id) public int deleteDataAssetById(Long id)
{ {
return dataAssetMapper.deleteDataAssetById(id); return dataAssetMapper.deleteDataAssetById(id);
} }
@Override
public int deleteDataAssetById(Long[] id) {
return 0;
}
} }

View File

@ -71,6 +71,11 @@ public class KvtServiceImpl implements KvtService{
return i; return i;
} }
@Override
public int deleteJdbc(Long id) {
return 0;
}
@Override @Override
public int deleteJdbc(Long[] id) { public int deleteJdbc(Long[] id) {
deleteChildren(id); deleteChildren(id);
@ -83,7 +88,7 @@ public class KvtServiceImpl implements KvtService{
if (!dataAssetList.isEmpty()){ if (!dataAssetList.isEmpty()){
List<Long> list = dataAssetList.stream().map(DataAsset::getId).toList(); List<Long> list = dataAssetList.stream().map(DataAsset::getId).toList();
List<AssetModel> assetModelList = assetModelMapper.getAssetModelList(list); List<AssetModel> assetModelList = assetModelMapper.getAssetModelList(list);
dataAssetMapper.deleteDataAssetById(dataAssetList.toArray(Long[]::new)); dataAssetMapper.deleteDataAssetByIds(list.toArray(Long[]::new));
if (!assetModelList.isEmpty()){ if (!assetModelList.isEmpty()){
List<Long> list1 = assetModelList.stream().map(AssetModel::getId).toList(); List<Long> list1 = assetModelList.stream().map(AssetModel::getId).toList();
assetModelMapper.deleteAssetModelByIds(list1.toArray(Long[]::new)); assetModelMapper.deleteAssetModelByIds(list1.toArray(Long[]::new));
@ -279,6 +284,48 @@ public class KvtServiceImpl implements KvtService{
return assetsData; return assetsData;
} }
public Map<String,String> getTypeMap(JdbcClass dataSource, String tableName){
String jdbcUrl="";
String sql="select * from "+tableName;
String driver="com.mysql.cj.jdbc.Driver";
jdbcUrl = "jdbc:mysql://"+dataSource.getLinkAddress()+":"+dataSource.getPort()+"/"+dataSource.getDatabaseName();
// if (dataSource.getType().equals("MySql")){
// sql = "select * from "+tableName;
// }else{
// sql = "select * from "+dataSource.getModeName()+"."+tableName;
// }
Connection conn = null;
Map<String, String> map = new HashMap<>();
try {
Class.forName(driver);
conn = DriverManager.getConnection(jdbcUrl, dataSource.getUsername(), dataSource.getPassword());
} catch (SQLException | ClassNotFoundException e) {
throw new RuntimeException(e);
}
try {
PreparedStatement pst = null;
pst = conn.prepareStatement(sql);
ResultSet resultSet = pst.executeQuery();
ResultSetMetaData rsd = resultSet.getMetaData();
for(int i = 1; i <= rsd.getColumnCount(); i++) {
String substring="";
if (rsd.getColumnClassName(i).contains(".")){
String[] split = rsd.getColumnClassName(i).split("\\.");
substring = split[split.length-1];
}else{
substring = rsd.getColumnClassName(i);
}
map.put(rsd.getColumnName(i),substring);
}
pst.close();
pst=null;
} catch (SQLException e) {
throw new RuntimeException(e);
}
return map;
}
public List<AssetModel> getTableAssets(JdbcClass jdbcClass,String tableName){ public List<AssetModel> getTableAssets(JdbcClass jdbcClass,String tableName){
// 初始化数据库连接信息 // 初始化数据库连接信息
String user= jdbcClass.getUsername(); // 获取用户名 String user= jdbcClass.getUsername(); // 获取用户名
@ -307,7 +354,7 @@ public class KvtServiceImpl implements KvtService{
// 定义空的connection // 定义空的connection
Connection connection=null; Connection connection=null;
List<AssetModel> assetsData = new ArrayList<>(); // 用于存储表结构信息的列表 List<AssetModel> assetsData = new ArrayList<>(); // 用于存储表结构信息的列表
HashMap<String, String> hashMap = new HashMap<>(); // 临时使用的HashMap Map<String, String> hashMap = getTypeMap(jdbcClass,tableName); //临时使用的HashMap
// 尝试加载驱动并建立数据库连接 // 尝试加载驱动并建立数据库连接
try { try {
@ -334,6 +381,7 @@ public class KvtServiceImpl implements KvtService{
AssetModel assetModel = new AssetModel(); // 创建新的AssetModel实例 AssetModel assetModel = new AssetModel(); // 创建新的AssetModel实例
// 提取并设置列信息到AssetModel // 提取并设置列信息到AssetModel
String columnName = columns.getString("COLUMN_NAME"); String columnName = columns.getString("COLUMN_NAME");
String typeName = columns.getString("TYPE_NAME"); String typeName = columns.getString("TYPE_NAME");
int columnSize = columns.getInt("COLUMN_SIZE"); int columnSize = columns.getInt("COLUMN_SIZE");
int decimalDigits = columns.getInt("DECIMAL_DIGITS"); int decimalDigits = columns.getInt("DECIMAL_DIGITS");
@ -342,14 +390,21 @@ public class KvtServiceImpl implements KvtService{
String remarks = columns.getString("REMARKS"); String remarks = columns.getString("REMARKS");
assetModel.setCreateTime(new Date()); assetModel.setCreateTime(new Date());
assetModel.setCreateBy(SecurityUtils.getUsername()); assetModel.setCreateBy(SecurityUtils.getUsername());
assetModel.setLength(String.valueOf(columnSize)); assetModel.setLength(String.valueOf(columnSize));
assetModel.setDecimalPlaces(String.valueOf(decimalDigits)); assetModel.setDecimalPlaces(String.valueOf(decimalDigits));
assetModel.setName(columnDef); assetModel.setName(columnName);
assetModel.setType(typeName); assetModel.setType(typeName);
assetModel.setMappingType(hashMap.get(columnName)); assetModel.setMappingType(hashMap.get(columnName));
assetModel.setDictKey(""); assetModel.setDictKey("");
assetModel.setIsDict(""); assetModel.setIsDict("");
assetModel.setIsNull(isNullable.substring(0,1)); assetModel.setIsNull(isNullable.substring(0,1));
assetModel.setDefaultValue(columnDef);
// 标记是否为主键 // 标记是否为主键
if (columnName.equals(primaryKeyColumnName)){ if (columnName.equals(primaryKeyColumnName)){
assetModel.setIsPrimaryKey("Y"); assetModel.setIsPrimaryKey("Y");
@ -375,7 +430,7 @@ public class KvtServiceImpl implements KvtService{
connection.close(); connection.close();
columns.close(); columns.close();
} catch (SQLException ex) { } catch (SQLException ex) {
throw new RuntimeException(ex); // 处理异常 ex.printStackTrace(); // 处理异常
} }
@ -471,19 +526,15 @@ public class KvtServiceImpl implements KvtService{
/** /**
* *
* *
* *
* */ * */
public void method(JdbcClass jdbcClass){ // public void method(JdbcClass jdbcClass){
String user=jdbcClass.getUsername(); // String user=jdbcClass.getUsername();
String pwd=jdbcClass.getPassword(); // String pwd=jdbcClass.getPassword();
String jdbc = "com.mysql.cj.jdbc.Driver"; // String jdbc = "com.mysql.cj.jdbc.Driver";
String jdbcUrl = "jdbc:mysql://" + jdbcClass.getLinkAddress() + ":" + jdbcClass.getPort() + "/" + jdbcClass.getDatabaseName(); // String jdbcUrl = "jdbc:mysql://" + jdbcClass.getLinkAddress() + ":" + jdbcClass.getPort() + "/" + jdbcClass.getDatabaseName();
// }
}
/** /**
* *
@ -535,7 +586,12 @@ public class KvtServiceImpl implements KvtService{
// 遍历数据资产列表,为每个表获取详细的资产信息,并批量插入 // 遍历数据资产列表,为每个表获取详细的资产信息,并批量插入
for (DataAsset dataAsset : dataAssets) { for (DataAsset dataAsset : dataAssets) {
List<AssetModel> tableAssets = getTableAssets(jdbcClass, dataAsset.getTableName()); List<AssetModel> tableAssets = getTableAssets(jdbcClass, dataAsset.getTableName());
tableAssets.stream().forEach(assetModel -> assetModel.setDataAssetId(dataAsset.getId())); if (!tableAssets.isEmpty()){
tableAssets.stream().forEach(assetModel -> assetModel.setDataAssetId(dataAsset.getId()));
}else {
System.out.println("不能为空");
}
assetModelMapper.batchInsert(tableAssets); assetModelMapper.batchInsert(tableAssets);
} }
} catch ( SQLException | ClassNotFoundException e) { } catch ( SQLException | ClassNotFoundException e) {