diff --git a/srt-cloud-data-governance/pom.xml b/srt-cloud-data-governance/pom.xml index 068eff2..bc88a35 100644 --- a/srt-cloud-data-governance/pom.xml +++ b/srt-cloud-data-governance/pom.xml @@ -73,6 +73,10 @@ io.minio minio + + org.quartz-scheduler + quartz + 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 c5ea661..1b59370 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 @@ -3,17 +3,18 @@ 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.convert.MetadataCollectConvert; +import net.srt.entity.MetadataCollectEntity; 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 org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; @RestController @RequestMapping("metadata-collect") @@ -24,8 +25,66 @@ public class MetadataCollectController { @GetMapping("page") @Operation(summary = "分页") + @PreAuthorize("hasAuthority('data-governance:metadata-collect:page')") public Result> page(@Valid MetadataCollectQuery query){ PageResult page = metadataCollectService.page(query); return Result.ok(page); } + + @GetMapping("{id}") + @Operation(summary = "信息") + @PreAuthorize("hasAuthority('data-governance:metadata-collect:info')") + public Result get(@PathVariable("id") Long id){ + MetadataCollectEntity entity = metadataCollectService.getById(id); + return Result.ok(MetadataCollectConvert.INSTANCE.convert(entity)); + } + + @PostMapping + @Operation(summary = "保存") + @PreAuthorize("hasAuthority('data-governance:metadata-collect:save')") + public Result save(@RequestBody MetadataCollectVO vo){ + metadataCollectService.save(vo); + return Result.ok(); + } + + @PutMapping + @Operation(summary = "修改") + @PreAuthorize("hasAuthority('data-governance:metadata-collect:update')") + public Result update(@RequestBody @Valid MetadataCollectVO vo){ + metadataCollectService.update(vo); + return Result.ok(); + } + + @PutMapping("/release/{id}") + @Operation(summary = "发布") + @PreAuthorize("hasAuthority('data-governance:metadata-collect:release')") + public Result release(@PathVariable Long id){ + metadataCollectService.release(id); + return Result.ok(); + } + + @PutMapping("/cancel/{id}") + @Operation(summary = "取消发布") + @PreAuthorize("hasAuthority('data-governance:metadata-collect:cancel')") + public Result cancel(@PathVariable Long id){ + metadataCollectService.cancel(id); + return Result.ok(); + } + + @PostMapping("hand-run/{id}") + @Operation(summary = "手动执行") + @PreAuthorize("hasAuthority('data-governance:metadata-collect:hand-run')") + public Result handRun(@PathVariable Long id){ + metadataCollectService.handRun(id); + return Result.ok(); + } + + @DeleteMapping + @Operation(summary = "删除") + @PreAuthorize("hasAuthority('data-governance:metadata-collect:delete')") + public Result delete(@RequestBody List idList){ + metadataCollectService.delete(idList); + return Result.ok(); + } + } 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 992d16f..a3dccc5 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 @@ -6,7 +6,21 @@ import net.srt.framework.common.page.PageResult; import net.srt.framework.mybatis.service.BaseService; import net.srt.vo.MetadataCollectVO; +import java.util.List; + public interface MetadataCollectService extends BaseService { PageResult page(MetadataCollectQuery query); + + void save(MetadataCollectVO vo); + + void update(MetadataCollectVO vo); + + void cancel(Long id); + + void release(Long id); + + void handRun(Long id); + + void delete(List idList); } 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 29af401..1dddcf8 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,30 +1,97 @@ package net.srt.service.impl; +import cn.hutool.cron.CronException; 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.api.module.data.governance.constant.MetadataCollectType; +import net.srt.api.module.quartz.QuartzDataGovernanceMetadataCollectApi; 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.exception.ServerException; 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.quartz.CronExpression; import org.springframework.stereotype.Service; import srt.cloud.framework.dbswitch.common.util.StringUtil; +import java.util.Date; +import java.util.List; + @Service @AllArgsConstructor public class MetadataCollectServiceImpl extends BaseServiceImpl implements MetadataCollectService { + + private final QuartzDataGovernanceMetadataCollectApi metadataCollectApi; + @Override public PageResult page(MetadataCollectQuery query) { IPage page = baseMapper.selectPage(getPage(query), getWrapper(query)); return new PageResult<>(MetadataCollectConvert.INSTANCE.convertList(page.getRecords()), page.getTotal()); } + @Override + public void save(MetadataCollectVO vo) { + checkParam(vo); + MetadataCollectEntity entity = MetadataCollectConvert.INSTANCE.convert(vo); + entity.setProjectId(getProjectId()); + baseMapper.insert(entity); + } + + @Override + public void update(MetadataCollectVO vo) { + checkParam(vo); + MetadataCollectEntity entity = MetadataCollectConvert.INSTANCE.convert(vo); + entity.setProjectId(getProjectId()); + updateById(entity); + } + + @Override + public void cancel(Long id) { + metadataCollectApi.cancel(id); + MetadataCollectEntity entity = baseMapper.selectById(id); + entity.setReleaseTime(null); + entity.setStatus(0); + baseMapper.updateById(entity); + } + + @Override + public void release(Long id) { + metadataCollectApi.release(id); + MetadataCollectEntity entity = baseMapper.selectById(id); + entity.setReleaseTime(new Date()); + entity.setStatus(1); + baseMapper.updateById(entity); + } + + @Override + public void handRun(Long id) { + metadataCollectApi.handRun(id); + } + + @Override + public void delete(List idList) { + removeByIds(idList); +// for (Long id : idList) { +// LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); +// +// } + } + + private void checkParam(MetadataCollectVO vo){ + if(MetadataCollectType.CRON.getValue().equals(vo.getTaskType())){ + if(!CronExpression.isValidExpression(vo.getCron())){ + throw new ServerException("cron表达式有误,请检查!"); + } + } + } + private Wrapper getWrapper(MetadataCollectQuery query) { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); wrapper.like(StringUtil.isNotBlank(query.getName()),MetadataCollectEntity::getName,query.getName()) @@ -34,4 +101,6 @@ public class MetadataCollectServiceImpl extends BaseServiceImpl