Merge remote-tracking branch 'origin/dev' into dev

pull/3/head
jpz 2023-12-23 13:29:19 +08:00
commit 486346b618
11 changed files with 319 additions and 29 deletions

View File

@ -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,4 +22,10 @@ import org.springframework.web.bind.annotation.RestController;
public class MetadataCollectController {
private final MetadataCollectService metadataCollectService;
@GetMapping("page")
@Operation(summary = "分页")
public Result<PageResult<MetadataCollectVO>> page(@Valid MetadataCollectQuery query){
PageResult<MetadataCollectVO> page = metadataCollectService.page(query);
return Result.ok(page);
}
}

View File

@ -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<MetadataCollectVO> convertList(List<MetadataCollectEntity> list);
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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<MetadataCollectEntity> {
PageResult<MetadataCollectVO> page(MetadataCollectQuery query);
}

View File

@ -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<MetadataCollectDao, MetadataCollectEntity> implements MetadataCollectService {
@Override
public PageResult<MetadataCollectVO> page(MetadataCollectQuery query) {
IPage<MetadataCollectEntity> page = baseMapper.selectPage(getPage(query), getWrapper(query));
return new PageResult<>(MetadataCollectConvert.INSTANCE.convertList(page.getRecords()), page.getTotal());
}
private Wrapper<MetadataCollectEntity> getWrapper(MetadataCollectQuery query) {
LambdaQueryWrapper<MetadataCollectEntity> 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;
}
}

View File

@ -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;
}

View File

@ -42,7 +42,7 @@ public class HadoopController {
}
/**
*
*
* @param HadoopAddDto
* @return
*/

View File

@ -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;

View File

@ -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;
}

View File

@ -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<DataProductionMapper, DataProductionTreeEntity> implements DataProductionService {
@Override
public List<DataProductionTreeVo> dataTreeList() {
ArrayList<DataProductionTreeVo> dataProductionTreeVoArrayList = new ArrayList<>();
List<DataProductionTreeEntity> dataProductionTreeEntities = baseMapper.selectList(null);
for (DataProductionTreeEntity dataProductionTreeEntity : dataProductionTreeEntities) {
List<DataProductionTreeVo> dataProductionTreeVos=findDataProductTreeVoList(dataProductionTreeEntity);
DataProductionTreeVo convert = DataProductionTreeConvert.INSTANCE.convert(dataProductionTreeEntity);
convert.setDataProductionTreeVos(dataProductionTreeVos);
dataProductionTreeVoArrayList.add(convert);
LambdaQueryWrapper<DataProductionTreeEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.orderByAsc(DataProductionTreeEntity::getOrderNo);
List<DataProductionTreeEntity> dataFileCategoryEntities = baseMapper.selectList(wrapper);
List<DataProductionTreeVo> 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 dataProductionTreeVoArrayList;
});
return buildTree(treeNodeVos);
}
private List<DataProductionTreeVo> findDataProductTreeVoList(DataProductionTreeEntity dataProductionTreeEntity) {
QueryWrapper<DataProductionTreeEntity> dataProductionTreeEntityQueryWrapper = new QueryWrapper<>();
dataProductionTreeEntityQueryWrapper.eq("parent_id",dataProductionTreeEntity.getId());
List<DataProductionTreeEntity> dataProductionTreeEntities = baseMapper.selectList(dataProductionTreeEntityQueryWrapper);
List<DataProductionTreeVo> convert = DataProductionTreeConvert.INSTANCE.convert(dataProductionTreeEntities);
return convert;
public static List<DataProductionTreeVo> buildTree(List<DataProductionTreeVo> nodeVos) {
List<DataProductionTreeVo> 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<DataProductionTreeVo> getChild(Integer id, List<DataProductionTreeVo> nodeVos) {
// 子菜单
List<DataProductionTreeVo> 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);
}
convert.setLabel(convert.getName());
convert.setPath(convert.getName());
baseMapper.insert(convert);
private String recursionPath(DataProductionTreeEntity categoryEntity, String path) {
if (StringUtil.isBlank(path)) {
path = categoryEntity.getName();
}
if (categoryEntity.getParentId() != 0) {
DataProductionTreeEntity parent = getById(categoryEntity.getParentId());
path = parent.getName() + "/" + path;
return recursionPath(parent, path);
}
return path;
}
}