85 lines
3.4 KiB
Java
85 lines
3.4 KiB
Java
package com.muyu.config;
|
||
|
||
import cn.hutool.core.math.Arrangement;
|
||
import com.muyu.common.core.domain.Result;
|
||
import com.muyu.connection.DataSourceConfig;
|
||
import com.muyu.source.domain.Children;
|
||
import com.muyu.source.domain.DataSource;
|
||
import com.muyu.source.domain.DataType;
|
||
import com.muyu.source.domain.model.DataModel;
|
||
import com.muyu.source.remote.RemoteChildrenService;
|
||
import com.muyu.source.remote.RemoteDataSourceService;
|
||
import com.muyu.source.remote.RemoteDataTypeService;
|
||
import jakarta.annotation.Resource;
|
||
import org.springframework.context.annotation.ComponentScan;
|
||
|
||
import java.sql.*;
|
||
import java.util.ArrayList;
|
||
import java.util.List;
|
||
import java.util.Map;
|
||
|
||
/**
|
||
* @author Lenovo
|
||
* @ Tool:IntelliJ IDEA
|
||
* @ Author:CHX
|
||
* @ Date:2024-08-22-14:33
|
||
* @ Version:1.0
|
||
* @ Description:数据接入客户端配置类
|
||
*/
|
||
@ComponentScan
|
||
public class SourceClientConfig {
|
||
@Resource
|
||
private RemoteDataSourceService remoteDataSourceService;
|
||
@Resource
|
||
private RemoteChildrenService remoteChildrenService;
|
||
|
||
public List<List<DataModel>> getDataModel(Long id) {
|
||
List<List<DataModel>> list = new ArrayList<>();
|
||
//根据ID查询出表结构的数据
|
||
Result<Children> childrenResult = remoteChildrenService.getChildren(id);
|
||
Children children = childrenResult.getData();
|
||
//根据ID查询出数据源的数据
|
||
Result<DataSource> dataSourceResult = remoteDataSourceService.getDataSource(children.getAssetId());
|
||
DataSource dataSource = dataSourceResult.getData();
|
||
String sql = "";
|
||
if ("MySql".equals(dataSource.getDataType())) {
|
||
sql = "SELECT * FROM " + children.getName();
|
||
}
|
||
try {
|
||
//调用连接池获取连接
|
||
Connection connection = DataSourceConfig.getDataSource(dataSource.getId());
|
||
PreparedStatement preparedStatement = connection.prepareStatement(sql);
|
||
ResultSet resultSet = preparedStatement.executeQuery();
|
||
ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
|
||
while (resultSet.next()) {
|
||
List<DataModel> dataModels = new ArrayList<>();
|
||
for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
|
||
//获取列名 字段名 key
|
||
String columnName = resultSetMetaData.getColumnName(i);
|
||
//获取字段的值 value
|
||
Object value = resultSet.getObject(columnName);
|
||
//获取列的类型 字段的类型 type
|
||
String columnTypeName = resultSetMetaData.getColumnTypeName(i);
|
||
//获取列的标题 label
|
||
String columnLabel = resultSetMetaData.getColumnLabel(i);
|
||
// java类型
|
||
String columnClassName = resultSetMetaData.getColumnClassName(i);
|
||
DataModel dataModel = DataModel.builder()
|
||
.key(columnName)
|
||
.label(columnLabel)
|
||
.type(columnTypeName)
|
||
.value(value)
|
||
.build();
|
||
dataModels.add(dataModel);
|
||
}
|
||
list.add(dataModels);
|
||
}
|
||
//归还连接
|
||
DataSourceConfig.returnConnection(connection);
|
||
} catch (SQLException e) {
|
||
throw new RuntimeException(e);
|
||
}
|
||
return list;
|
||
}
|
||
}
|