|
|
|
|
@@ -16,21 +16,14 @@ import cn.datax.service.data.market.api.entity.DataApiEntity;
|
|
|
|
|
import cn.datax.service.data.market.api.feign.DataApiServiceFeign;
|
|
|
|
|
import cn.datax.service.data.metadata.api.dto.DbSchema;
|
|
|
|
|
import cn.datax.service.data.metadata.api.dto.MetadataSourceDto;
|
|
|
|
|
import cn.datax.service.data.metadata.api.entity.MetadataAuthorizeEntity;
|
|
|
|
|
import cn.datax.service.data.metadata.api.entity.MetadataChangeRecordEntity;
|
|
|
|
|
import cn.datax.service.data.metadata.api.entity.MetadataColumnEntity;
|
|
|
|
|
import cn.datax.service.data.metadata.api.entity.MetadataSourceEntity;
|
|
|
|
|
import cn.datax.service.data.metadata.api.entity.MetadataTableEntity;
|
|
|
|
|
import cn.datax.service.data.metadata.api.entity.*;
|
|
|
|
|
import cn.datax.service.data.metadata.api.enums.DataLevel;
|
|
|
|
|
import cn.datax.service.data.metadata.api.enums.SyncStatus;
|
|
|
|
|
import cn.datax.service.data.metadata.async.AsyncTask;
|
|
|
|
|
import cn.datax.service.data.metadata.dao.MetadataAuthorizeDao;
|
|
|
|
|
import cn.datax.service.data.metadata.dao.MetadataChangeRecordDao;
|
|
|
|
|
import cn.datax.service.data.metadata.dao.MetadataColumnDao;
|
|
|
|
|
import cn.datax.service.data.metadata.dao.MetadataSourceDao;
|
|
|
|
|
import cn.datax.service.data.metadata.dao.MetadataTableDao;
|
|
|
|
|
import cn.datax.service.data.metadata.dao.*;
|
|
|
|
|
import cn.datax.service.data.metadata.mapstruct.MetadataSourceMapper;
|
|
|
|
|
import cn.datax.service.data.metadata.service.MetadataSourceService;
|
|
|
|
|
import cn.datax.service.data.metadata.service.MetadataTableService;
|
|
|
|
|
import cn.datax.service.data.quality.api.entity.CheckRuleEntity;
|
|
|
|
|
import cn.datax.service.data.quality.api.feign.QualityServiceFeign;
|
|
|
|
|
import cn.datax.service.data.standard.api.entity.ContrastEntity;
|
|
|
|
|
@@ -57,13 +50,11 @@ import org.springframework.transaction.annotation.Propagation;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
import java.io.InputStream;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.HashSet;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.Objects;
|
|
|
|
|
import java.util.Optional;
|
|
|
|
|
import java.util.Set;
|
|
|
|
|
import java.sql.Connection;
|
|
|
|
|
import java.sql.ResultSet;
|
|
|
|
|
import java.sql.ResultSetMetaData;
|
|
|
|
|
import java.sql.Statement;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
import java.util.stream.Stream;
|
|
|
|
|
|
|
|
|
|
@@ -121,6 +112,9 @@ public class MetadataSourceServiceImpl extends BaseServiceImpl<MetadataSourceDao
|
|
|
|
|
@Autowired
|
|
|
|
|
private RedisTemplate<String, Object> redisTemplate;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private MetadataTableService metadataTableService;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public void saveMetadataSource(MetadataSourceDto metadataSourceDto) {
|
|
|
|
|
@@ -395,4 +389,50 @@ public class MetadataSourceServiceImpl extends BaseServiceImpl<MetadataSourceDao
|
|
|
|
|
Map<String, List<MetadataColumnEntity>> columnListMap = columnEntityList.stream().collect(Collectors.groupingBy(MetadataColumnEntity::getTableId));
|
|
|
|
|
redisTemplate.opsForHash().putAll(columnKey, columnListMap);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<Map<String, Object>> getMetadatablood(String datasourceId, String tableId) {
|
|
|
|
|
Map<String, Map<String,Object>> columns = new LinkedHashMap();
|
|
|
|
|
Map<String,Object> reslutMap = new LinkedHashMap<>();
|
|
|
|
|
List<Map<String, Object>> rows = new ArrayList<>();
|
|
|
|
|
try {
|
|
|
|
|
MetadataSourceEntity dataSource = super.getById(datasourceId);
|
|
|
|
|
DbQuery dbQuery = this.getDbQuery(datasourceId);
|
|
|
|
|
Connection connection = dbQuery.getConnection();
|
|
|
|
|
Statement statement = connection.createStatement();
|
|
|
|
|
String sql = "SELECT TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME,REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA = '" + dataSource.getSourceName() + "' AND REFERENCED_TABLE_NAME IS NOT NULL";
|
|
|
|
|
if(StrUtil.isNotEmpty(tableId)){
|
|
|
|
|
MetadataTableEntity metadataTableEntity = metadataTableService.getMetadataTableById(tableId);
|
|
|
|
|
sql += " AND table_name = '" + metadataTableEntity.getTableName() + "'";
|
|
|
|
|
}
|
|
|
|
|
ResultSet resultSet = statement.executeQuery(sql);
|
|
|
|
|
ResultSetMetaData metaData = resultSet.getMetaData();
|
|
|
|
|
int columnCount = metaData.getColumnCount();
|
|
|
|
|
for (int i = 0; i < columnCount; i++) {
|
|
|
|
|
Map<String,Object> map = new HashMap<>();
|
|
|
|
|
map.put("name",metaData.getColumnName(i+1));
|
|
|
|
|
map.put("type",metaData.getColumnTypeName(i+1));
|
|
|
|
|
columns.put(metaData.getColumnName(i+1),map);
|
|
|
|
|
}
|
|
|
|
|
while(resultSet.next()){
|
|
|
|
|
Map<String, Object> row = new LinkedHashMap<>();
|
|
|
|
|
for (int i = 0; i < columnCount; i++) {
|
|
|
|
|
Object object = resultSet.getObject(metaData.getColumnLabel(i+1));
|
|
|
|
|
if (metaData.getColumnTypeName(i+1).equals("DATETIME") || metaData.getColumnTypeName(i+1).equals("TIMESTAMP") || metaData.getColumnTypeName(i+1).equals("DATE")) {
|
|
|
|
|
row.put(metaData.getColumnName(i+1),resultSet.getString(metaData.getColumnLabel(i+1)));
|
|
|
|
|
} else {
|
|
|
|
|
row.put(metaData.getColumnName(i+1),object);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
rows.add(row);
|
|
|
|
|
}
|
|
|
|
|
resultSet.close();//关闭ResultSet对象
|
|
|
|
|
statement.close();//关闭Statement对象
|
|
|
|
|
connection.close();//关闭Connection对象
|
|
|
|
|
reslutMap.put("columns",columns);
|
|
|
|
|
reslutMap.put("rows",rows);
|
|
|
|
|
} catch (Exception throwAbles) {
|
|
|
|
|
}
|
|
|
|
|
return rows;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|