From 96d675e9700ac1688fe2d663f51c3bb9c5b57547 Mon Sep 17 00:00:00 2001 From: zmyYYDS <864398951@qq.com> Date: Fri, 22 Dec 2023 22:38:43 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E6=9C=80=E6=96=B0=E4=B8=80=E7=89=885.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/net/srt/controller/MetadataCollectController.java | 1 + 1 file changed, 1 insertion(+) diff --git a/srt-cloud-data-governance/src/main/java/net/srt/controller/MetadataCollectController.java b/srt-cloud-data-governance/src/main/java/net/srt/controller/MetadataCollectController.java index cc9bfb2..1443f9a 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/controller/MetadataCollectController.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/controller/MetadataCollectController.java @@ -13,4 +13,5 @@ import org.springframework.web.bind.annotation.RestController; public class MetadataCollectController { private final MetadataCollectService metadataCollectService; + } From cdb318e230fc82566b75583e46e827e566e6b0e8 Mon Sep 17 00:00:00 2001 From: zmyYYDS <864398951@qq.com> Date: Sat, 23 Dec 2023 09:36:19 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E6=9C=80=E6=96=B0=E4=B8=80=E7=89=886.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/MetadataCollectController.java | 16 +++- .../srt/convert/MetadataCollectConvert.java | 25 +++++++ .../net/srt/entity/MetadataCollectEntity.java | 62 ++++++++++++++++ .../net/srt/entity/MetadataCollectQuery.java | 22 ++++++ .../srt/service/MetadataCollectService.java | 4 + .../impl/MetadataCollectServiceImpl.java | 24 ++++++ .../java/net/srt/vo/MetadataCollectVO.java | 74 +++++++++++++++++++ 7 files changed, 226 insertions(+), 1 deletion(-) create mode 100644 srt-cloud-data-governance/src/main/java/net/srt/convert/MetadataCollectConvert.java create mode 100644 srt-cloud-data-governance/src/main/java/net/srt/entity/MetadataCollectQuery.java create mode 100644 srt-cloud-data-governance/src/main/java/net/srt/vo/MetadataCollectVO.java diff --git a/srt-cloud-data-governance/src/main/java/net/srt/controller/MetadataCollectController.java b/srt-cloud-data-governance/src/main/java/net/srt/controller/MetadataCollectController.java index 1443f9a..c5ea661 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/controller/MetadataCollectController.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/controller/MetadataCollectController.java @@ -1,11 +1,20 @@ package net.srt.controller; +import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.AllArgsConstructor; +import net.srt.entity.MetadataCollectQuery; +import net.srt.framework.common.page.PageResult; +import net.srt.framework.common.utils.Result; import net.srt.service.MetadataCollectService; +import net.srt.vo.MetadataCollectVO; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.validation.Valid; + @RestController @RequestMapping("metadata-collect") @Tag(name = "数据治理-元数据采集") @@ -13,5 +22,10 @@ import org.springframework.web.bind.annotation.RestController; public class MetadataCollectController { private final MetadataCollectService metadataCollectService; - + @GetMapping("page") + @Operation(summary = "分页") + public Result> page(@Valid MetadataCollectQuery query){ + PageResult page = metadataCollectService.page(query); + return Result.ok(page); + } } diff --git a/srt-cloud-data-governance/src/main/java/net/srt/convert/MetadataCollectConvert.java b/srt-cloud-data-governance/src/main/java/net/srt/convert/MetadataCollectConvert.java new file mode 100644 index 0000000..ad6009e --- /dev/null +++ b/srt-cloud-data-governance/src/main/java/net/srt/convert/MetadataCollectConvert.java @@ -0,0 +1,25 @@ +package net.srt.convert; + +import net.srt.api.module.data.governance.dto.DataGovernanceMetadataCollectDto; +import net.srt.entity.MetadataCollectEntity; +import net.srt.vo.MetadataCollectVO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +@Mapper +public interface MetadataCollectConvert { + MetadataCollectConvert INSTANCE = Mappers.getMapper(MetadataCollectConvert.class); + + MetadataCollectEntity convert(MetadataCollectVO vo); + + MetadataCollectEntity convert(DataGovernanceMetadataCollectDto dto); + + DataGovernanceMetadataCollectDto convertDto(MetadataCollectEntity entity); + + MetadataCollectVO convert(MetadataCollectEntity entity); + + List convertList(List list); + +} diff --git a/srt-cloud-data-governance/src/main/java/net/srt/entity/MetadataCollectEntity.java b/srt-cloud-data-governance/src/main/java/net/srt/entity/MetadataCollectEntity.java index f556d7d..27bb2aa 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/entity/MetadataCollectEntity.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/entity/MetadataCollectEntity.java @@ -1,14 +1,76 @@ package net.srt.entity; +import com.baomidou.mybatisplus.annotation.FieldStrategy; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; import net.srt.framework.mybatis.entity.BaseEntity; +import java.util.Date; + @EqualsAndHashCode(callSuper = false) @Data @TableName("data_governance_metadata_collect") public class MetadataCollectEntity extends BaseEntity { + /** + * 任务名称 + */ + private String name; + + /** + * 数据库类型(1-数据库 2-中台库) + */ + private Integer dbType; + + /** + * 数据库主键id + */ + private Long databaseId; + + /** + * 入库策略,0-全量,1-增量 + */ + private Integer strategy; + + /** + * 任务类型 1一次性 2.周期性 + */ + private Integer taskType; + + /** + * cron表达式(秒 分 时 日 月 星期 年,例如 0 0 3 * * ? 表示每天凌晨三点执行) + */ + @TableField(updateStrategy = FieldStrategy.IGNORED) + private String cron; + + /** + * 归属元数据的目录 + */ + private Long metadataId; + + /** + * 描述 + */ + private String description; + + /** + * 是否已发布 0-否 1-是 + */ + private Integer status; + + /** + * 发布时间 + */ + @TableField(updateStrategy = FieldStrategy.IGNORED) + private Date releaseTime; + + /** + * 项目id + */ + private Long projectId; + + } diff --git a/srt-cloud-data-governance/src/main/java/net/srt/entity/MetadataCollectQuery.java b/srt-cloud-data-governance/src/main/java/net/srt/entity/MetadataCollectQuery.java new file mode 100644 index 0000000..67dbbbd --- /dev/null +++ b/srt-cloud-data-governance/src/main/java/net/srt/entity/MetadataCollectQuery.java @@ -0,0 +1,22 @@ +package net.srt.entity; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import net.srt.framework.common.query.Query; + +@Data +@EqualsAndHashCode(callSuper = false) +@Schema(description = "数据治理-元数据采集查询") +public class MetadataCollectQuery extends Query { + private String name; + /** + * 入库策略,0-全量,1-增量 + */ + private Integer strategy; + + /** + * 任务类型 1一次性 2.周期性 + */ + private Integer taskType; +} diff --git a/srt-cloud-data-governance/src/main/java/net/srt/service/MetadataCollectService.java b/srt-cloud-data-governance/src/main/java/net/srt/service/MetadataCollectService.java index d894ed2..992d16f 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/service/MetadataCollectService.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/service/MetadataCollectService.java @@ -1,8 +1,12 @@ package net.srt.service; import net.srt.entity.MetadataCollectEntity; +import net.srt.entity.MetadataCollectQuery; +import net.srt.framework.common.page.PageResult; import net.srt.framework.mybatis.service.BaseService; +import net.srt.vo.MetadataCollectVO; public interface MetadataCollectService extends BaseService { + PageResult page(MetadataCollectQuery query); } diff --git a/srt-cloud-data-governance/src/main/java/net/srt/service/impl/MetadataCollectServiceImpl.java b/srt-cloud-data-governance/src/main/java/net/srt/service/impl/MetadataCollectServiceImpl.java index 6e74a43..29af401 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/service/impl/MetadataCollectServiceImpl.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/service/impl/MetadataCollectServiceImpl.java @@ -1,13 +1,37 @@ package net.srt.service.impl; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.AllArgsConstructor; +import net.srt.convert.MetadataCollectConvert; import net.srt.dao.MetadataCollectDao; import net.srt.entity.MetadataCollectEntity; +import net.srt.entity.MetadataCollectQuery; +import net.srt.framework.common.page.PageResult; import net.srt.framework.mybatis.service.impl.BaseServiceImpl; import net.srt.service.MetadataCollectService; +import net.srt.vo.MetadataCollectVO; import org.springframework.stereotype.Service; +import srt.cloud.framework.dbswitch.common.util.StringUtil; @Service @AllArgsConstructor public class MetadataCollectServiceImpl extends BaseServiceImpl implements MetadataCollectService { + @Override + public PageResult page(MetadataCollectQuery query) { + IPage page = baseMapper.selectPage(getPage(query), getWrapper(query)); + return new PageResult<>(MetadataCollectConvert.INSTANCE.convertList(page.getRecords()), page.getTotal()); + } + + private Wrapper getWrapper(MetadataCollectQuery query) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.like(StringUtil.isNotBlank(query.getName()),MetadataCollectEntity::getName,query.getName()) + .eq(query.getStrategy()!=null,MetadataCollectEntity::getStrategy,query.getStrategy()) + .eq(query.getTaskType()!=null,MetadataCollectEntity::getTaskType,query.getTaskType()) + .orderByDesc(MetadataCollectEntity::getId); + dataScopeWithOrgId(wrapper); + return wrapper; + } } diff --git a/srt-cloud-data-governance/src/main/java/net/srt/vo/MetadataCollectVO.java b/srt-cloud-data-governance/src/main/java/net/srt/vo/MetadataCollectVO.java new file mode 100644 index 0000000..09a736e --- /dev/null +++ b/srt-cloud-data-governance/src/main/java/net/srt/vo/MetadataCollectVO.java @@ -0,0 +1,74 @@ +package net.srt.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import net.srt.framework.common.utils.DateUtils; + +import java.io.Serializable; +import java.util.Date; + +@Data +@Schema(description = "数据治理-元数据采集") +public class MetadataCollectVO implements Serializable { + private static final long serialVersionUID = 1L; + + + @Schema(description = "主键id") + private Long id; + + @Schema(description = "任务名称") + private String name; + + @Schema(description = "数据库类型(1-数据库 2-中台库)") + private Integer dbType; + + @Schema(description = "数据库主键id") + private Long databaseId; + + @Schema(description = "入库策略,0-全量,1-增量") + private Integer strategy; + + @Schema(description = "任务类型 1一次性 2.周期性") + private Integer taskType; + + @Schema(description = "cron表达式(秒 分 时 日 月 星期 年,例如 0 0 3 * * ? 表示每天凌晨三点执行)") + private String cron; + + @Schema(description = "归属元数据的目录") + private Long metadataId; + + @Schema(description = "描述") + private String description; + + @Schema(description = "是否已发布 0-否 1-是") + private Integer status; + + @Schema(description = "发布时间") + @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN) + private Date releaseTime; + + @Schema(description = "项目id") + private Long projectId; + + @Schema(description = "版本号") + private Integer version; + + @Schema(description = "删除标识 0:正常 1:已删除") + private Integer deleted; + + @Schema(description = "创建者") + private Long creator; + + @Schema(description = "创建时间") + @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN) + private Date createTime; + + @Schema(description = "更新者") + private Long updater; + + @Schema(description = "更新时间") + @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN) + private Date updateTime; + +} From 8ff6be9ab46c0d90a0495ed5d8e13a9eabd5fbe8 Mon Sep 17 00:00:00 2001 From: chenbingxuan <3581044601@qq.com> Date: Sat, 23 Dec 2023 10:41:47 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Hadoop/controller/HadoopController.java | 2 +- .../net/srt/Hadoop/convert/HadoopConvert.java | 5 -- .../impl/DataProductionServiceImpl.java | 84 ++++++++++++++----- 3 files changed, 62 insertions(+), 29 deletions(-) diff --git a/srt-data-development/src/main/java/net/srt/Hadoop/controller/HadoopController.java b/srt-data-development/src/main/java/net/srt/Hadoop/controller/HadoopController.java index b4ff453..6b32ab7 100644 --- a/srt-data-development/src/main/java/net/srt/Hadoop/controller/HadoopController.java +++ b/srt-data-development/src/main/java/net/srt/Hadoop/controller/HadoopController.java @@ -42,7 +42,7 @@ public class HadoopController { } /** - * 删除 + * 修改 * @param HadoopAddDto * @return */ diff --git a/srt-data-development/src/main/java/net/srt/Hadoop/convert/HadoopConvert.java b/srt-data-development/src/main/java/net/srt/Hadoop/convert/HadoopConvert.java index 05d33d7..8e57ed1 100644 --- a/srt-data-development/src/main/java/net/srt/Hadoop/convert/HadoopConvert.java +++ b/srt-data-development/src/main/java/net/srt/Hadoop/convert/HadoopConvert.java @@ -1,11 +1,6 @@ package net.srt.Hadoop.convert; -import net.srt.Fink.convert.FinkConvert; -import net.srt.Fink.dto.FinkAddDto; -import net.srt.Fink.entity.FinkEntity; -import net.srt.Fink.vo.FinkVo; import net.srt.Hadoop.dto.HadoopAddDto; -import net.srt.Hadoop.dto.HadoopDto; import net.srt.Hadoop.entity.HadoopEntity; import net.srt.Hadoop.vo.HadoopVo; import org.mapstruct.Mapper; diff --git a/srt-data-development/src/main/java/net/srt/disposition/service/impl/DataProductionServiceImpl.java b/srt-data-development/src/main/java/net/srt/disposition/service/impl/DataProductionServiceImpl.java index ee3b990..82bba9a 100644 --- a/srt-data-development/src/main/java/net/srt/disposition/service/impl/DataProductionServiceImpl.java +++ b/srt-data-development/src/main/java/net/srt/disposition/service/impl/DataProductionServiceImpl.java @@ -14,8 +14,12 @@ import net.srt.disposition.entity.DataProductionTreeEntity; import net.srt.disposition.mapper.DataProductionMapper; import net.srt.disposition.service.DataProductionService; import net.srt.disposition.vo.DataProductionTreeVo; +import net.srt.framework.common.utils.BeanUtil; +import net.srt.framework.common.utils.BuildTreeUtils; +import net.srt.framework.common.utils.TreeNodeVo; import net.srt.framework.mybatis.service.impl.BaseServiceImpl; import org.springframework.stereotype.Service; +import srt.cloud.framework.dbswitch.common.util.StringUtil; import java.util.ArrayList; import java.util.List; @@ -24,36 +28,70 @@ import java.util.List; public class DataProductionServiceImpl extends BaseServiceImpl implements DataProductionService { @Override public List dataTreeList() { - ArrayList dataProductionTreeVoArrayList = new ArrayList<>(); - List dataProductionTreeEntities = baseMapper.selectList(null); - for (DataProductionTreeEntity dataProductionTreeEntity : dataProductionTreeEntities) { - List dataProductionTreeVos=findDataProductTreeVoList(dataProductionTreeEntity); - DataProductionTreeVo convert = DataProductionTreeConvert.INSTANCE.convert(dataProductionTreeEntity); - convert.setDataProductionTreeVos(dataProductionTreeVos); - dataProductionTreeVoArrayList.add(convert); - } - return dataProductionTreeVoArrayList; + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.orderByAsc(DataProductionTreeEntity::getOrderNo); + List dataFileCategoryEntities = baseMapper.selectList(wrapper); + List treeNodeVos = BeanUtil.copyListProperties(dataFileCategoryEntities, DataProductionTreeVo::new, (oldItem, newItem) -> { + newItem.setLabel(oldItem.getName()); + if (newItem.getPath().contains("/")) { + newItem.setParentPath(newItem.getPath().substring(0, newItem.getPath().lastIndexOf("/"))); + } + }); + return buildTree(treeNodeVos); } - private List findDataProductTreeVoList(DataProductionTreeEntity dataProductionTreeEntity) { - QueryWrapper dataProductionTreeEntityQueryWrapper = new QueryWrapper<>(); - dataProductionTreeEntityQueryWrapper.eq("parent_id",dataProductionTreeEntity.getId()); - List dataProductionTreeEntities = baseMapper.selectList(dataProductionTreeEntityQueryWrapper); - List convert = DataProductionTreeConvert.INSTANCE.convert(dataProductionTreeEntities); - return convert; + public static List buildTree(List nodeVos) { + List resultVos = new ArrayList<>(10); + for (DataProductionTreeVo node : nodeVos) { + // 一级菜单parentId为0 + if (node.getParentId() == 0) { + resultVos.add(node); + } + } + // 为一级菜单设置子菜单,getChild是递归调用的 + for (DataProductionTreeVo node : resultVos) { + node.setDataProductionTreeVos(getChild(node.getId(), nodeVos)); + } + return resultVos; + } + + + private static List getChild(Integer id, List nodeVos) { + // 子菜单 + List childList = new ArrayList<>(10); + for (DataProductionTreeVo node : nodeVos) { + // 遍历所有节点,将父菜单id与传过来的id比较 + if (node.getParentId() != 0) { + if (node.getParentId().equals(id)) { + childList.add(node); + } + } + } + // 把子菜单的子菜单再循环一遍 + for (DataProductionTreeVo node : childList) { + node.setDataProductionTreeVos(getChild(node.getId(), nodeVos)); + } + return childList; } @Override public void add(DataProductionTreeDto dataProductionTreeDto) { - DataProductionTreeEntity convert = DataProductionTreeConvert.INSTANCE.convert(dataProductionTreeDto); - if (convert.getParentPath()!=null && !convert.getParentPath().equals("")){ - String path=convert.getParentPath()+"/"+convert.getName(); - convert.setPath(path); - baseMapper.insert(convert); + DataProductionTreeEntity entity = DataProductionTreeConvert.INSTANCE.convert(dataProductionTreeDto); + entity.setPath(recursionPath(entity, null)); + entity.setProjectId(getProjectId()); + baseMapper.insert(entity); + } + + private String recursionPath(DataProductionTreeEntity categoryEntity, String path) { + if (StringUtil.isBlank(path)) { + path = categoryEntity.getName(); } - convert.setLabel(convert.getName()); - convert.setPath(convert.getName()); - baseMapper.insert(convert); + if (categoryEntity.getParentId() != 0) { + DataProductionTreeEntity parent = getById(categoryEntity.getParentId()); + path = parent.getName() + "/" + path; + return recursionPath(parent, path); + } + return path; } } From 4169100ce215545606b8b427cf6a9a62deadb806 Mon Sep 17 00:00:00 2001 From: chenbingxuan <3581044601@qq.com> Date: Sat, 23 Dec 2023 10:42:48 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/DataProductionTreeDto.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 srt-data-development/src/main/java/net/srt/disposition/dto/DataProductionTreeDto.java diff --git a/srt-data-development/src/main/java/net/srt/disposition/dto/DataProductionTreeDto.java b/srt-data-development/src/main/java/net/srt/disposition/dto/DataProductionTreeDto.java new file mode 100644 index 0000000..cbfa2ed --- /dev/null +++ b/srt-data-development/src/main/java/net/srt/disposition/dto/DataProductionTreeDto.java @@ -0,0 +1,31 @@ +package net.srt.disposition.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +public class DataProductionTreeDto { + private Integer id; + private Integer parentId; + private Integer ifLeaf; + private Long taskId; + private String taskType; + private String parentPath; + private String path; + private Integer orderNo; + private String label; + private Long metamodelId; + private String name; + private String icon; + private String code; + private Boolean builtin; + private String description; + private Long projectId; + private Integer creator; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private Date creatTime; +}