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
*/
@RestController
@RequestMapping("/jdbc")
@RequestMapping("/DictionaryData")
public class DictionaryDataController extends BaseController {
@Autowired

View File

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

View File

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

View File

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