diff --git a/etl-modules/etl-modules-data-source/etl-modules-data-source-common/src/main/java/com/etl/data/structure/domain/AssetTableDetails.java b/etl-modules/etl-modules-data-source/etl-modules-data-source-common/src/main/java/com/etl/data/structure/domain/AssetTableDetails.java index 1a1af76..3e43c89 100644 --- a/etl-modules/etl-modules-data-source/etl-modules-data-source-common/src/main/java/com/etl/data/structure/domain/AssetTableDetails.java +++ b/etl-modules/etl-modules-data-source/etl-modules-data-source-common/src/main/java/com/etl/data/structure/domain/AssetTableDetails.java @@ -4,10 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.etl.common.core.annotation.Excel; -import com.etl.common.core.web.domain.BaseEntity; import lombok.AllArgsConstructor; import lombok.Data; -import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; @@ -21,9 +19,8 @@ import lombok.experimental.SuperBuilder; @NoArgsConstructor @AllArgsConstructor @SuperBuilder -@EqualsAndHashCode(callSuper = true) @TableName("asset_table_details") -public class AssetTableDetails extends BaseEntity { +public class AssetTableDetails { private static final long serialVersionUID = 1L; /** diff --git a/etl-modules/etl-modules-data-source/etl-modules-data-source-common/src/main/java/com/etl/data/structure/domain/resp/AssetStructureTableResp.java b/etl-modules/etl-modules-data-source/etl-modules-data-source-common/src/main/java/com/etl/data/structure/domain/resp/AssetStructureTableResp.java index 19c5039..1d4f87a 100644 --- a/etl-modules/etl-modules-data-source/etl-modules-data-source-common/src/main/java/com/etl/data/structure/domain/resp/AssetStructureTableResp.java +++ b/etl-modules/etl-modules-data-source/etl-modules-data-source-common/src/main/java/com/etl/data/structure/domain/resp/AssetStructureTableResp.java @@ -1,6 +1,5 @@ package com.etl.data.structure.domain.resp; -import com.etl.data.structure.domain.AssetStructureTable; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -23,7 +22,7 @@ public class AssetStructureTableResp { /** * 数据资产 */ - private List assetStructureList; + private List tableDetailsRespList; /** * 数据资产表总数 diff --git a/etl-modules/etl-modules-data-source/etl-modules-data-source-common/src/main/java/com/etl/data/structure/domain/resp/TableDetailsResp.java b/etl-modules/etl-modules-data-source/etl-modules-data-source-common/src/main/java/com/etl/data/structure/domain/resp/TableDetailsResp.java new file mode 100644 index 0000000..55bc41c --- /dev/null +++ b/etl-modules/etl-modules-data-source/etl-modules-data-source-common/src/main/java/com/etl/data/structure/domain/resp/TableDetailsResp.java @@ -0,0 +1,63 @@ +package com.etl.data.structure.domain.resp; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.etl.common.core.annotation.Excel; +import com.etl.data.structure.domain.AssetTableDetails; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.List; + +/** + * 数据表和数据表数据详情返回类 + * + * @author Chao + * @ClassName: TableDetailsResp 数据表和数据表数据详情返回类 + * @CreateTime: 2024/4/26 上午10:41 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@SuperBuilder +public class TableDetailsResp { + + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 数据资产id + */ + @Excel(name = "数据资产id") + private Long assetStructureId; + + /** + * 数据资产表 + */ + @Excel(name = "数据资产表") + private String tableName; + + /** + * 数据库数据总数 + */ + @Excel(name = "表数据总数") + private Long tableDataCount; + + /** + * 表注释 + */ + @Excel(name = "表注释") + private String tableNameAnnotation; + + /** + * 表数据结构详细返回类 + */ + private List assetTableDetailsList; +} diff --git a/etl-modules/etl-modules-data-source/etl-modules-data-source-system/src/main/java/com/etl/data/structure/service/IAssetTableDetailsService.java b/etl-modules/etl-modules-data-source/etl-modules-data-source-system/src/main/java/com/etl/data/structure/service/IAssetTableDetailsService.java index 446b3ad..c3f0b48 100644 --- a/etl-modules/etl-modules-data-source/etl-modules-data-source-system/src/main/java/com/etl/data/structure/service/IAssetTableDetailsService.java +++ b/etl-modules/etl-modules-data-source/etl-modules-data-source-system/src/main/java/com/etl/data/structure/service/IAssetTableDetailsService.java @@ -3,6 +3,8 @@ package com.etl.data.structure.service; import com.baomidou.mybatisplus.extension.service.IService; import com.etl.data.structure.domain.AssetTableDetails; +import java.util.List; + /** * 数据详情 Service 接口 * @@ -11,4 +13,6 @@ import com.etl.data.structure.domain.AssetTableDetails; * @CreateTime: 2024/4/23 下午7:38 */ public interface IAssetTableDetailsService extends IService { + + public List selectAssetTableDetailsList(); } diff --git a/etl-modules/etl-modules-data-source/etl-modules-data-source-system/src/main/java/com/etl/data/structure/service/impl/AssetStructureTableServiceImpl.java b/etl-modules/etl-modules-data-source/etl-modules-data-source-system/src/main/java/com/etl/data/structure/service/impl/AssetStructureTableServiceImpl.java index 5072622..e2ea51b 100644 --- a/etl-modules/etl-modules-data-source/etl-modules-data-source-system/src/main/java/com/etl/data/structure/service/impl/AssetStructureTableServiceImpl.java +++ b/etl-modules/etl-modules-data-source/etl-modules-data-source-system/src/main/java/com/etl/data/structure/service/impl/AssetStructureTableServiceImpl.java @@ -3,12 +3,18 @@ package com.etl.data.structure.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.etl.data.structure.domain.AssetStructureTable; +import com.etl.data.structure.domain.AssetTableDetails; import com.etl.data.structure.domain.resp.AssetStructureTableResp; +import com.etl.data.structure.domain.resp.TableDetailsResp; import com.etl.data.structure.mapper.AssetStructureTableMapper; import com.etl.data.structure.service.IAssetStructureTableService; +import com.etl.data.structure.service.IAssetTableDetailsService; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; +import java.util.stream.Collectors; /** * 资产结构表表Service业务实现层 @@ -18,7 +24,12 @@ import java.util.List; * @CreateTime: 2024/4/22 下午5:22 */ @Service +@Log4j2 public class AssetStructureTableServiceImpl extends ServiceImpl implements IAssetStructureTableService { + + @Autowired + private IAssetTableDetailsService assetTableDetailsService; + /** * 查询该数据资产表 * @@ -27,16 +38,51 @@ public class AssetStructureTableServiceImpl extends ServiceImpl assetStructureTableList = this.list( new LambdaQueryWrapper() .eq(AssetStructureTable::getAssetStructureId, assetStructureId) ); + // 如果assetStructureTableList为空,则返回空的AssetStructureTableResp对象 + if (assetStructureTableList.isEmpty()){ + log.info("该数据资产表为空"); + return AssetStructureTableResp.builder().build(); + } + + // 获取所有AssetTableDetails + log.info("获取所有表数据详情"); + List assetTableDetails = assetTableDetailsService.selectAssetTableDetailsList(); + + // 遍历assetStructureTableList,获取每个AssetStructureTable的AssetTableDetails + log.info("开始过滤并获取每一个表的数据结构"); + List assetTableDetailsList = assetStructureTableList.stream() + .map(assetStructureTable -> { + List matchingDetails = assetTableDetails.stream() + .filter(tableDetails -> assetStructureTable.getId().equals(tableDetails.getAssetStructureTableId())) + .collect(Collectors.toList()); + return TableDetailsResp.builder() + .id(assetStructureTable.getId()) + .assetStructureId(assetStructureTable.getAssetStructureId()) + .tableName(assetStructureTable.getTableName()) + .tableDataCount(assetStructureTable.getTableDataCount()) + .tableNameAnnotation(assetStructureTable.getTableNameAnnotation()) + .assetTableDetailsList(matchingDetails) + .build(); + }).collect(Collectors.toList()); // 统计数据表总数 + log.info("统计数据表总数"); long tableCount = assetStructureTableList.size(); + log.info("统计数据表数据总数"); long tableDataCount = assetStructureTableList.stream().mapToLong(AssetStructureTable::getTableDataCount).sum(); + log.info("------------------------------分隔符------------------------------------"); return AssetStructureTableResp.builder() - .assetStructureList(assetStructureTableList) + .tableDetailsRespList(assetTableDetailsList) .tableCount(tableCount) .tableDataCount(tableDataCount) .build(); diff --git a/etl-modules/etl-modules-data-source/etl-modules-data-source-system/src/main/java/com/etl/data/structure/service/impl/AssetTableDetailsServiceImpl.java b/etl-modules/etl-modules-data-source/etl-modules-data-source-system/src/main/java/com/etl/data/structure/service/impl/AssetTableDetailsServiceImpl.java index 5d78dd2..dd2923f 100644 --- a/etl-modules/etl-modules-data-source/etl-modules-data-source-system/src/main/java/com/etl/data/structure/service/impl/AssetTableDetailsServiceImpl.java +++ b/etl-modules/etl-modules-data-source/etl-modules-data-source-system/src/main/java/com/etl/data/structure/service/impl/AssetTableDetailsServiceImpl.java @@ -6,9 +6,10 @@ import com.etl.data.structure.mapper.AssetTableDetailsMapper; import com.etl.data.structure.service.IAssetTableDetailsService; import org.springframework.stereotype.Service; +import java.util.List; + /** - * - * 数据详情 Service 业务实现层 + * 数据详情 Service 业务实现层 * * @author Chao * @ClassName: AssetTableDetailsServiceImpl @@ -16,4 +17,13 @@ import org.springframework.stereotype.Service; */ @Service public class AssetTableDetailsServiceImpl extends ServiceImpl implements IAssetTableDetailsService { + /** + * 根据表id获取数据详情 + * + * @return 数据详情列表 + */ + @Override + public List selectAssetTableDetailsList() { + return this.list(); + } }