This commit is contained in:
Jane 2023-12-26 09:06:44 +08:00
parent c35a6151bc
commit a805c85b73
4 changed files with 68 additions and 19 deletions

View File

@ -31,10 +31,10 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.io.OutputStream;
/** /**
* <p> * <p>
@ -255,4 +255,10 @@ public class MetadataSourceController extends BaseController {
metadataSourceService.refreshMetadata(); metadataSourceService.refreshMetadata();
return R.ok(); return R.ok();
} }
@PostMapping("/getMetadatablood")
public R getMetadatablood(@RequestBody Map<String, String> params) {
List<Map<String, Object>> list = metadataSourceService.getMetadatablood(params.get("sourceId"), params.get("tableId"));
return R.ok().setData(list);
}
} }

View File

@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* <p> * <p>
@ -51,4 +52,6 @@ public interface MetadataSourceService extends BaseService<MetadataSourceEntity>
List<MetadataSourceEntity> getMetadataSourceList(); List<MetadataSourceEntity> getMetadataSourceList();
<E extends IPage<MetadataSourceEntity>> E pageWithAuth(E page, Wrapper<MetadataSourceEntity> queryWrapper); <E extends IPage<MetadataSourceEntity>> E pageWithAuth(E page, Wrapper<MetadataSourceEntity> queryWrapper);
List<Map<String, Object>> getMetadatablood(String datasourceId, String tableName);
} }

View File

@ -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.market.api.feign.DataApiServiceFeign;
import cn.datax.service.data.metadata.api.dto.DbSchema; 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.dto.MetadataSourceDto;
import cn.datax.service.data.metadata.api.entity.MetadataAuthorizeEntity; import cn.datax.service.data.metadata.api.entity.*;
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.enums.DataLevel; import cn.datax.service.data.metadata.api.enums.DataLevel;
import cn.datax.service.data.metadata.api.enums.SyncStatus; import cn.datax.service.data.metadata.api.enums.SyncStatus;
import cn.datax.service.data.metadata.async.AsyncTask; import cn.datax.service.data.metadata.async.AsyncTask;
import cn.datax.service.data.metadata.dao.MetadataAuthorizeDao; import cn.datax.service.data.metadata.dao.*;
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.mapstruct.MetadataSourceMapper; import cn.datax.service.data.metadata.mapstruct.MetadataSourceMapper;
import cn.datax.service.data.metadata.service.MetadataSourceService; 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.entity.CheckRuleEntity;
import cn.datax.service.data.quality.api.feign.QualityServiceFeign; import cn.datax.service.data.quality.api.feign.QualityServiceFeign;
import cn.datax.service.data.standard.api.entity.ContrastEntity; 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 org.springframework.transaction.annotation.Transactional;
import java.io.InputStream; import java.io.InputStream;
import java.util.ArrayList; import java.sql.Connection;
import java.util.HashSet; import java.sql.ResultSet;
import java.util.List; import java.sql.ResultSetMetaData;
import java.util.Map; import java.sql.Statement;
import java.util.Objects; import java.util.*;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
@ -121,6 +112,9 @@ public class MetadataSourceServiceImpl extends BaseServiceImpl<MetadataSourceDao
@Autowired @Autowired
private RedisTemplate<String, Object> redisTemplate; private RedisTemplate<String, Object> redisTemplate;
@Autowired
private MetadataTableService metadataTableService;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void saveMetadataSource(MetadataSourceDto metadataSourceDto) { 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)); Map<String, List<MetadataColumnEntity>> columnListMap = columnEntityList.stream().collect(Collectors.groupingBy(MetadataColumnEntity::getTableId));
redisTemplate.opsForHash().putAll(columnKey, columnListMap); 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;
}
} }

View File

@ -22,7 +22,7 @@ eureka:
prefer-ip-address: true prefer-ip-address: true
ip-address: 192.168.1.217 ip-address: 192.168.1.217
client: client:
register-with-eureka: false register-with-eureka: true
fetch-registry: true fetch-registry: true
instance-info-replication-interval-seconds: 30 instance-info-replication-interval-seconds: 30
registry-fetch-interval-seconds: 3 registry-fetch-interval-seconds: 3