feat:(同步)数据资产同步到资产结构里面完善
parent
0c55e0126f
commit
8f078e2081
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
Loading…
Reference in New Issue