From a805c85b737a0bda7a777fd5a29f4f0f73d826fa Mon Sep 17 00:00:00 2001 From: Jane <272005125@qq.com> Date: Tue, 26 Dec 2023 09:06:44 +0800 Subject: [PATCH] update --- .../controller/MetadataSourceController.java | 8 +- .../service/MetadataSourceService.java | 3 + .../impl/MetadataSourceServiceImpl.java | 74 ++++++++++++++----- .../src/main/resources/bootstrap.yml | 2 +- 4 files changed, 68 insertions(+), 19 deletions(-) diff --git a/studio/modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/controller/MetadataSourceController.java b/studio/modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/controller/MetadataSourceController.java index cb7eefd..14a386e 100644 --- a/studio/modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/controller/MetadataSourceController.java +++ b/studio/modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/controller/MetadataSourceController.java @@ -31,10 +31,10 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.io.OutputStream; import java.util.List; import java.util.Map; import java.util.stream.Collectors; -import java.io.OutputStream; /** *

@@ -255,4 +255,10 @@ public class MetadataSourceController extends BaseController { metadataSourceService.refreshMetadata(); return R.ok(); } + + @PostMapping("/getMetadatablood") + public R getMetadatablood(@RequestBody Map params) { + List> list = metadataSourceService.getMetadatablood(params.get("sourceId"), params.get("tableId")); + return R.ok().setData(list); + } } diff --git a/studio/modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/service/MetadataSourceService.java b/studio/modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/service/MetadataSourceService.java index a872059..c7b9a67 100644 --- a/studio/modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/service/MetadataSourceService.java +++ b/studio/modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/service/MetadataSourceService.java @@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import java.util.List; +import java.util.Map; /** *

@@ -51,4 +52,6 @@ public interface MetadataSourceService extends BaseService List getMetadataSourceList(); > E pageWithAuth(E page, Wrapper queryWrapper); + + List> getMetadatablood(String datasourceId, String tableName); } diff --git a/studio/modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/service/impl/MetadataSourceServiceImpl.java b/studio/modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/service/impl/MetadataSourceServiceImpl.java index 2146427..a955192 100644 --- a/studio/modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/service/impl/MetadataSourceServiceImpl.java +++ b/studio/modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/service/impl/MetadataSourceServiceImpl.java @@ -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 redisTemplate; + @Autowired + private MetadataTableService metadataTableService; + @Override @Transactional(rollbackFor = Exception.class) public void saveMetadataSource(MetadataSourceDto metadataSourceDto) { @@ -395,4 +389,50 @@ public class MetadataSourceServiceImpl extends BaseServiceImpl> columnListMap = columnEntityList.stream().collect(Collectors.groupingBy(MetadataColumnEntity::getTableId)); redisTemplate.opsForHash().putAll(columnKey, columnListMap); } + + @Override + public List> getMetadatablood(String datasourceId, String tableId) { + Map> columns = new LinkedHashMap(); + Map reslutMap = new LinkedHashMap<>(); + List> 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 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 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; + } } diff --git a/studio/modules/data-metadata-service-parent/data-metadata-service/src/main/resources/bootstrap.yml b/studio/modules/data-metadata-service-parent/data-metadata-service/src/main/resources/bootstrap.yml index 970e390..f4b96f6 100644 --- a/studio/modules/data-metadata-service-parent/data-metadata-service/src/main/resources/bootstrap.yml +++ b/studio/modules/data-metadata-service-parent/data-metadata-service/src/main/resources/bootstrap.yml @@ -22,7 +22,7 @@ eureka: prefer-ip-address: true ip-address: 192.168.1.217 client: - register-with-eureka: false + register-with-eureka: true fetch-registry: true instance-info-replication-interval-seconds: 30 registry-fetch-interval-seconds: 3