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