diff --git a/pom.xml b/pom.xml index 8ce166e..9003ee4 100644 --- a/pom.xml +++ b/pom.xml @@ -24,7 +24,7 @@ srt-cloud-gateway srt-data-development srt-cloud-data-governance - srt-cloud-data-service + srt-cloud-data-server diff --git a/srt-cloud-data-governance/src/main/java/net/srt/controller/DatastandardController.java b/srt-cloud-data-governance/src/main/java/net/srt/controller/DatastandardController.java index e5c7840..ef9b703 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/controller/DatastandardController.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/controller/DatastandardController.java @@ -9,10 +9,7 @@ import net.srt.framework.common.utils.Result; import net.srt.query.DatastandrdQuery; import net.srt.service.DatastandardService; import net.srt.vo.DatastandardVo; -import net.srt.vo.MetamodelPropertyVO; -import net.srt.vo.StandardManagementVo; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; diff --git a/srt-cloud-data-governance/src/main/java/net/srt/controller/MetadataCollectRecordController.java b/srt-cloud-data-governance/src/main/java/net/srt/controller/MetadataCollectRecordController.java new file mode 100644 index 0000000..5ba843d --- /dev/null +++ b/srt-cloud-data-governance/src/main/java/net/srt/controller/MetadataCollectRecordController.java @@ -0,0 +1,45 @@ +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.MetadataCollectRecordConvert; +import net.srt.entity.MetadataCollectRecordEntity; +import net.srt.framework.common.page.PageResult; +import net.srt.framework.common.utils.Result; +import net.srt.query.MetadataCollectRecordQuery; +import net.srt.service.MetadataCollectRecordService; +import net.srt.vo.MetadataCollectRecordVO; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; + +@RestController +@RequestMapping("metadata-collect-record") +@Tag(name = "数据治理-元数据采集任务记录") +@AllArgsConstructor +public class MetadataCollectRecordController { + private final MetadataCollectRecordService metadataCollectRecordService; + + @GetMapping("page") + @Operation(summary = "分页") + public Result> page(@Valid MetadataCollectRecordQuery query){ + PageResult page = metadataCollectRecordService.page(query); + return Result.ok(page); + } + + @GetMapping("{id}") + @Operation(summary = "信息") + public Result get(@PathVariable Long id){ + MetadataCollectRecordEntity entity = metadataCollectRecordService.getById(id); + return Result.ok(MetadataCollectRecordConvert.INSTANCE.convert(entity)); + } + + @DeleteMapping + @Operation(summary = "删除") + public Result delete(@RequestBody List idList) { + metadataCollectRecordService.delete(idList); + return Result.ok(); + } +} diff --git a/srt-cloud-data-governance/src/main/java/net/srt/controller/MetadataPropertyController.java b/srt-cloud-data-governance/src/main/java/net/srt/controller/MetadataPropertyController.java new file mode 100644 index 0000000..2e6c6ed --- /dev/null +++ b/srt-cloud-data-governance/src/main/java/net/srt/controller/MetadataPropertyController.java @@ -0,0 +1,51 @@ +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.MetadataPropertyConvert; +import net.srt.entity.MetadataPropertyEntity; +import net.srt.framework.common.utils.Result; +import net.srt.service.MetadataPropertyService; +import net.srt.vo.MetadataPropertyVo; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; + +@RestController +@RequestMapping("metadata-property") +@Tag(name = "数据治理-元数据属性值") +@AllArgsConstructor +public class MetadataPropertyController { + private final MetadataPropertyService metadataPropertyService; + + @GetMapping("{id}") + @Operation(summary = "信息") + public Result get(@PathVariable("id") Long id) { + MetadataPropertyEntity entity = metadataPropertyService.getById(id); + return Result.ok(MetadataPropertyConvert.INSTANCE.convert(entity)); + } + + @PostMapping + @Operation(summary = "保存") + public Result save(@RequestBody MetadataPropertyVo vo){ + metadataPropertyService.save(vo); + return Result.ok(); + } + + @PutMapping + @Operation(summary = "修改") + public Result update(@RequestBody @Valid MetadataPropertyVo vo){ + metadataPropertyService.update(vo); + return Result.ok(); + } + + @DeleteMapping + @Operation(summary = "删除") + public Result delete(@RequestBody List idList){ + metadataPropertyService.delete(idList); + return Result.ok(); + } + +} diff --git a/srt-cloud-data-governance/src/main/java/net/srt/controller/MetadataStandarRelController.java b/srt-cloud-data-governance/src/main/java/net/srt/controller/MetadataStandarRelController.java new file mode 100644 index 0000000..af70399 --- /dev/null +++ b/srt-cloud-data-governance/src/main/java/net/srt/controller/MetadataStandarRelController.java @@ -0,0 +1,47 @@ +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.MetadataStandardRelConvert; +import net.srt.entity.MetadataStandardRelEntity; +import net.srt.framework.common.utils.Result; +import net.srt.service.MetadataStandardRelService; +import net.srt.vo.MetadataStandardRelVO; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("standard-rel") +@Tag(name = "数据治理-元数据标准关联表") +@AllArgsConstructor +public class MetadataStandarRelController { + private final MetadataStandardRelService metadataStandardRelService; + + @GetMapping("/{metadataId}/{metadata-rel}") + @Operation(summary = "根据metadataId获取标准字段") + public Result getMetadataRel(@PathVariable("metadataId") Long metadataId){ + MetadataStandardRelVO standardRelVO = metadataStandardRelService.getMetadataRel(metadataId); + return Result.ok(standardRelVO); + } + + @GetMapping("{id}") + @Operation(summary = "信息") + public Result get(@PathVariable("id") Long id) { + MetadataStandardRelEntity entity = metadataStandardRelService.getById(id); + return Result.ok(MetadataStandardRelConvert.INSTANCE.convert(entity)); + } + + @PostMapping + @Operation(summary = "保存") + public Result save(@RequestBody MetadataStandardRelVO vo){ + metadataStandardRelService.save(vo); + return Result.ok(); + } + + @DeleteMapping("/{metadataId}/{standardId}") + @Operation(summary = "删除") + public Result delete(@PathVariable Long metadataId,@PathVariable Long standardId){ + metadataStandardRelService.delete(metadataId,standardId); + return Result.ok(); + } +} diff --git a/srt-cloud-data-governance/src/main/java/net/srt/controller/MetamodelController.java b/srt-cloud-data-governance/src/main/java/net/srt/controller/MetamodelController.java index 7786527..15798bd 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/controller/MetamodelController.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/controller/MetamodelController.java @@ -2,7 +2,6 @@ package net.srt.controller; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.tags.Tags; import lombok.AllArgsConstructor; import net.srt.convert.MetamodelConvert; import net.srt.entity.MetamodelEntity; diff --git a/srt-cloud-data-governance/src/main/java/net/srt/controller/QualityRuleController.java b/srt-cloud-data-governance/src/main/java/net/srt/controller/QualityRuleController.java index 2e0fec1..5a1fd05 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/controller/QualityRuleController.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/controller/QualityRuleController.java @@ -1,6 +1,5 @@ package net.srt.controller; -import cn.hutool.db.Page; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.AllArgsConstructor; diff --git a/srt-cloud-data-governance/src/main/java/net/srt/controller/QualityTaskColumnController.java b/srt-cloud-data-governance/src/main/java/net/srt/controller/QualityTaskColumnController.java index 906952e..24a339f 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/controller/QualityTaskColumnController.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/controller/QualityTaskColumnController.java @@ -1,6 +1,5 @@ package net.srt.controller; -import cn.hutool.db.Page; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.AllArgsConstructor; diff --git a/srt-cloud-data-governance/src/main/java/net/srt/controller/QualityTaskController.java b/srt-cloud-data-governance/src/main/java/net/srt/controller/QualityTaskController.java index 495e40a..0bb51ed 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/controller/QualityTaskController.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/controller/QualityTaskController.java @@ -2,7 +2,6 @@ package net.srt.controller; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.tags.Tags; import lombok.AllArgsConstructor; import net.srt.convert.QualityTaskConvert; import net.srt.entity.QualityTaskEntity; diff --git a/srt-cloud-data-governance/src/main/java/net/srt/controller/StandardController.java b/srt-cloud-data-governance/src/main/java/net/srt/controller/StandardController.java index b18e791..20ae5b2 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/controller/StandardController.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/controller/StandardController.java @@ -2,9 +2,6 @@ package net.srt.controller; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; -import net.srt.entity.DatastandardEntity; -import net.srt.entity.StandardEntity; -import net.srt.framework.common.utils.BeanUtil; import net.srt.framework.common.utils.Result; import net.srt.framework.common.utils.TreeNodeVo; import net.srt.service.StandardService; @@ -12,8 +9,6 @@ import net.srt.vo.StandardManagementVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import javax.validation.Valid; -import java.util.ArrayList; import java.util.List; /** diff --git a/srt-cloud-data-governance/src/main/java/net/srt/convert/DatastandardConvert.java b/srt-cloud-data-governance/src/main/java/net/srt/convert/DatastandardConvert.java index 1f168b5..43fc2eb 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/convert/DatastandardConvert.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/convert/DatastandardConvert.java @@ -2,7 +2,6 @@ package net.srt.convert; import net.srt.entity.DatastandardEntity; import net.srt.vo.DatastandardVo; -import net.srt.vo.StandardManagementVo; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; diff --git a/srt-cloud-data-governance/src/main/java/net/srt/convert/MetadataCollectRecordConvert.java b/srt-cloud-data-governance/src/main/java/net/srt/convert/MetadataCollectRecordConvert.java new file mode 100644 index 0000000..61bb263 --- /dev/null +++ b/srt-cloud-data-governance/src/main/java/net/srt/convert/MetadataCollectRecordConvert.java @@ -0,0 +1,23 @@ +package net.srt.convert; + +import net.srt.api.module.data.governance.dto.DataGovernanceMetadataCollectRecordDto; +import net.srt.entity.MetadataCollectRecordEntity; +import net.srt.vo.MetadataCollectRecordVO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +@Mapper +public interface MetadataCollectRecordConvert { + MetadataCollectRecordConvert INSTANCE = Mappers.getMapper(MetadataCollectRecordConvert.class); + + MetadataCollectRecordEntity convert(MetadataCollectRecordVO vo); + + MetadataCollectRecordEntity convert(DataGovernanceMetadataCollectRecordDto dto); + + MetadataCollectRecordVO convert(MetadataCollectRecordEntity entity); + + List convertList(List list); + +} diff --git a/srt-cloud-data-governance/src/main/java/net/srt/convert/MetadataConvert.java b/srt-cloud-data-governance/src/main/java/net/srt/convert/MetadataConvert.java index 86c6cc9..45edd01 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/convert/MetadataConvert.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/convert/MetadataConvert.java @@ -1,22 +1,27 @@ package net.srt.convert; +import net.srt.api.module.data.governance.dto.DataGovernanceMetadataDto; import net.srt.entity.MetadataEntity; -import net.srt.vo.MetadataVo; +import net.srt.vo.MetadataVO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; -/** - * @BelongsProject: srt_cloud - * @BelongsPackage: net.srt.convert - * @Author: jpz - * @CreateTime: 2023/12/24 15:42 - */ +import java.util.List; + @Mapper public interface MetadataConvert { - MetadataConvert INSTANCE = Mappers.getMapper(MetadataConvert.class); - MetadataVo convert(MetadataEntity entity); + MetadataEntity convert(MetadataVO vo); + + MetadataEntity convert(DataGovernanceMetadataDto dto); + + MetadataVO convert(MetadataEntity entity); + + DataGovernanceMetadataDto convertDto(MetadataEntity entity); + + List convertList(List list); + + List convertDtoList(List list); - MetadataEntity convert(MetadataVo vo); } diff --git a/srt-cloud-data-governance/src/main/java/net/srt/convert/MetadataPropertyConvert.java b/srt-cloud-data-governance/src/main/java/net/srt/convert/MetadataPropertyConvert.java new file mode 100644 index 0000000..ec4581e --- /dev/null +++ b/srt-cloud-data-governance/src/main/java/net/srt/convert/MetadataPropertyConvert.java @@ -0,0 +1,25 @@ +package net.srt.convert; + +import net.srt.api.module.data.governance.dto.DataGovernanceMetadataPropertyDto; +import net.srt.entity.MetadataPropertyEntity; +import net.srt.vo.MetadataPropertyVo; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +@Mapper +public interface MetadataPropertyConvert { + MetadataPropertyConvert INSTANCE = Mappers.getMapper(MetadataPropertyConvert.class); + + MetadataPropertyEntity convert(MetadataPropertyVo vo); + + MetadataPropertyEntity convert(DataGovernanceMetadataPropertyDto dto); + + MetadataPropertyVo convert(MetadataPropertyEntity entity); + + DataGovernanceMetadataPropertyDto convertDto(MetadataPropertyEntity entity); + + List convertList(List list); + +} diff --git a/srt-cloud-data-governance/src/main/java/net/srt/convert/MetadataStandardRelConvert.java b/srt-cloud-data-governance/src/main/java/net/srt/convert/MetadataStandardRelConvert.java new file mode 100644 index 0000000..e24a843 --- /dev/null +++ b/srt-cloud-data-governance/src/main/java/net/srt/convert/MetadataStandardRelConvert.java @@ -0,0 +1,20 @@ +package net.srt.convert; + +import net.srt.entity.MetadataStandardRelEntity; +import net.srt.vo.MetadataStandardRelVO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +@Mapper +public interface MetadataStandardRelConvert { + MetadataStandardRelConvert INSTANCE = Mappers.getMapper(MetadataStandardRelConvert.class); + + MetadataStandardRelEntity convert(MetadataStandardRelVO vo); + + MetadataStandardRelVO convert(MetadataStandardRelEntity entity); + + List convertList(List list); + +} diff --git a/srt-cloud-data-governance/src/main/java/net/srt/convert/MetamodelConvert.java b/srt-cloud-data-governance/src/main/java/net/srt/convert/MetamodelConvert.java index 87e1f5f..711a48e 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/convert/MetamodelConvert.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/convert/MetamodelConvert.java @@ -4,7 +4,6 @@ import net.srt.entity.MetamodelEntity; import net.srt.vo.MetamodelVO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; -import org.springframework.stereotype.Component; import java.util.List; @Mapper diff --git a/srt-cloud-data-governance/src/main/java/net/srt/convert/QualityTaskColumnConvert.java b/srt-cloud-data-governance/src/main/java/net/srt/convert/QualityTaskColumnConvert.java index a42fde4..5829068 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/convert/QualityTaskColumnConvert.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/convert/QualityTaskColumnConvert.java @@ -1,8 +1,6 @@ package net.srt.convert; -import net.srt.entity.QualityQueryEntity; import net.srt.entity.QualityTaskColumnEntity; -import net.srt.vo.QualityRuleVo; import net.srt.vo.QualityTaskColumnVo; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; diff --git a/srt-cloud-data-governance/src/main/java/net/srt/convert/QualityTaskConvert.java b/srt-cloud-data-governance/src/main/java/net/srt/convert/QualityTaskConvert.java index 9bc23c4..d4ff546 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/convert/QualityTaskConvert.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/convert/QualityTaskConvert.java @@ -1,13 +1,10 @@ package net.srt.convert; -import net.srt.controller.QualityTaskController; import net.srt.entity.QualityTaskEntity; import net.srt.vo.QualityTaskVo; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; -import org.springframework.stereotype.Component; -import javax.swing.*; import java.util.List; /** diff --git a/srt-cloud-data-governance/src/main/java/net/srt/dao/MetadataCollectRecordDao.java b/srt-cloud-data-governance/src/main/java/net/srt/dao/MetadataCollectRecordDao.java new file mode 100644 index 0000000..f675986 --- /dev/null +++ b/srt-cloud-data-governance/src/main/java/net/srt/dao/MetadataCollectRecordDao.java @@ -0,0 +1,9 @@ +package net.srt.dao; + +import net.srt.entity.MetadataCollectRecordEntity; +import net.srt.framework.mybatis.dao.BaseDao; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface MetadataCollectRecordDao extends BaseDao { +} diff --git a/srt-cloud-data-governance/src/main/java/net/srt/dao/MetadataPropertyDao.java b/srt-cloud-data-governance/src/main/java/net/srt/dao/MetadataPropertyDao.java index 5253481..62b6525 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/dao/MetadataPropertyDao.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/dao/MetadataPropertyDao.java @@ -8,13 +8,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; -/** - * @BelongsProject: srt_cloud - * @BelongsPackage: net.srt.dao - * @Author: jpz - * @CreateTime: 2023/12/24 15:49 - */ @Mapper public interface MetadataPropertyDao extends BaseDao { - List listPropertyById(@Param("id") Long id, Long metamodelId); + List listPropertyById(@Param("id") Long id, @Param("metamodelId") Long metamodelId); } diff --git a/srt-cloud-data-governance/src/main/java/net/srt/dao/MetadataStandardRelDao.java b/srt-cloud-data-governance/src/main/java/net/srt/dao/MetadataStandardRelDao.java new file mode 100644 index 0000000..38dbd4a --- /dev/null +++ b/srt-cloud-data-governance/src/main/java/net/srt/dao/MetadataStandardRelDao.java @@ -0,0 +1,9 @@ +package net.srt.dao; + +import net.srt.entity.MetadataStandardRelEntity; +import net.srt.framework.mybatis.dao.BaseDao; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface MetadataStandardRelDao extends BaseDao { +} diff --git a/srt-cloud-data-governance/src/main/java/net/srt/dao/QualityTaskColumnDao.java b/srt-cloud-data-governance/src/main/java/net/srt/dao/QualityTaskColumnDao.java index 22aa102..4a2991b 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/dao/QualityTaskColumnDao.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/dao/QualityTaskColumnDao.java @@ -1,8 +1,6 @@ package net.srt.dao; import net.srt.entity.QualityTaskColumnEntity; -import net.srt.entity.QualityTaskEntity; -import net.srt.entity.QualityTaskTableEntity; import net.srt.framework.mybatis.dao.BaseDao; import org.apache.ibatis.annotations.Mapper; diff --git a/srt-cloud-data-governance/src/main/java/net/srt/dao/QualityTaskTableDao.java b/srt-cloud-data-governance/src/main/java/net/srt/dao/QualityTaskTableDao.java index be018d5..e871de1 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/dao/QualityTaskTableDao.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/dao/QualityTaskTableDao.java @@ -1,6 +1,5 @@ package net.srt.dao; -import net.srt.entity.QualityTaskEntity; import net.srt.entity.QualityTaskTableEntity; import net.srt.framework.mybatis.dao.BaseDao; import org.apache.ibatis.annotations.Mapper; diff --git a/srt-cloud-data-governance/src/main/java/net/srt/entity/DatastandardEntity.java b/srt-cloud-data-governance/src/main/java/net/srt/entity/DatastandardEntity.java index 8bf82db..f71ac74 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/entity/DatastandardEntity.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/entity/DatastandardEntity.java @@ -1,6 +1,5 @@ package net.srt.entity; -import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/srt-cloud-data-governance/src/main/java/net/srt/entity/MetadataCollectRecordEntity.java b/srt-cloud-data-governance/src/main/java/net/srt/entity/MetadataCollectRecordEntity.java new file mode 100644 index 0000000..12eb390 --- /dev/null +++ b/srt-cloud-data-governance/src/main/java/net/srt/entity/MetadataCollectRecordEntity.java @@ -0,0 +1,51 @@ +package net.srt.entity; + +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_record") +public class MetadataCollectRecordEntity extends BaseEntity { + + /** + * 采集任务id + */ + private Long metadataCollectId; + + /** + * 1-成功 0-失败 2-运行中 + */ + private Integer status; + + /** + * 实时日志 + */ + private String realTimeLog; + + /** + * 错误日志 + */ + private String errorLog; + + /** + * 开始时间 + */ + private Date startTime; + + /** + * 结束时间 + */ + private Date endTime; + + /** + * 项目(租户)id + */ + private Long projectId; + + +} diff --git a/srt-cloud-data-governance/src/main/java/net/srt/entity/MetadataPropertyEntity.java b/srt-cloud-data-governance/src/main/java/net/srt/entity/MetadataPropertyEntity.java index 7131f44..2571fe6 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/entity/MetadataPropertyEntity.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/entity/MetadataPropertyEntity.java @@ -5,16 +5,11 @@ import lombok.Data; import lombok.EqualsAndHashCode; import net.srt.framework.mybatis.entity.BaseEntity; -/** - * @BelongsProject: srt_cloud - * @BelongsPackage: net.srt.entity - * @Author: jpz - * @CreateTime: 2023/12/24 15:50 - */ -@EqualsAndHashCode(callSuper=false) +@EqualsAndHashCode(callSuper = false) @Data @TableName("data_governance_metadata_property") public class MetadataPropertyEntity extends BaseEntity { + /** * 属性id */ @@ -35,4 +30,6 @@ public class MetadataPropertyEntity extends BaseEntity { */ private Long projectId; + + } diff --git a/srt-cloud-data-governance/src/main/java/net/srt/entity/MetadataStandardEntity.java b/srt-cloud-data-governance/src/main/java/net/srt/entity/MetadataStandardEntity.java new file mode 100644 index 0000000..2615fbd --- /dev/null +++ b/srt-cloud-data-governance/src/main/java/net/srt/entity/MetadataStandardEntity.java @@ -0,0 +1,76 @@ +package net.srt.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import net.srt.framework.mybatis.entity.BaseEntity; + +@EqualsAndHashCode(callSuper = false) +@Data +@TableName("data_governance_standard") +public class MetadataStandardEntity extends BaseEntity { + + /** + * 所属目录id + */ + private Long categoryId; + + /** + * 标准英文名称 + */ + private String engName; + + /** + * 标准中文名称 + */ + private String cnName; + + /** + * 编码数 + */ + private Integer codeNum; + + /** + * 数据类型 数字,字符串,日期,小数 + */ + private String dataType; + + /** + * 长度 + */ + private Integer dataLength; + + /** + * 精度 + */ + private Integer dataPrecision; + + /** + * 非空 0-否 1-是 + */ + private Integer nullable; + + /** + * 标准码表id + */ + private Integer standardCodeId; + + /** + * 1-标准字段 2-标准码表 + */ + private Integer type; + + /** + * 描述 + */ + private String note; + + /** + * 项目(租户)id + */ + private Long projectId; + + private Integer status; + + +} diff --git a/srt-cloud-data-governance/src/main/java/net/srt/entity/MetadataStandardRelEntity.java b/srt-cloud-data-governance/src/main/java/net/srt/entity/MetadataStandardRelEntity.java new file mode 100644 index 0000000..b186c5f --- /dev/null +++ b/srt-cloud-data-governance/src/main/java/net/srt/entity/MetadataStandardRelEntity.java @@ -0,0 +1,29 @@ +package net.srt.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import net.srt.framework.mybatis.entity.BaseEntity; + +@EqualsAndHashCode(callSuper = false) +@Data +@TableName("data_governance_metadata_standard_rel") +public class MetadataStandardRelEntity extends BaseEntity { + + /** + * 元数据id + */ + private Long metadataId; + + /** + * 标准字段id + */ + private Long standardId; + + /** + * 真删除 + */ + private Integer deleted; + + +} diff --git a/srt-cloud-data-governance/src/main/java/net/srt/init/BusinessInitializer.java b/srt-cloud-data-governance/src/main/java/net/srt/init/BusinessInitializer.java new file mode 100644 index 0000000..947e95a --- /dev/null +++ b/srt-cloud-data-governance/src/main/java/net/srt/init/BusinessInitializer.java @@ -0,0 +1,34 @@ +package net.srt.init; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import net.srt.service.MetadataCollectRecordService; +import net.srt.service.QualityTaskService; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.stereotype.Component; + +@Slf4j +@Component +@RequiredArgsConstructor +public class BusinessInitializer implements ApplicationRunner { + + private final MetadataCollectRecordService metadataCollectRecordService; + private final QualityTaskService qualityTaskService; + + @Override + public void run(ApplicationArguments args) { + initScheduleMonitor(); + } + + /** + * init task monitor + */ + private void initScheduleMonitor() { + //处理没执行完的采集任务 + metadataCollectRecordService.dealNotFinished(); + //处理没执行完的质量检测任务 + qualityTaskService.dealNotFinished(); + } + +} diff --git a/srt-cloud-data-governance/src/main/java/net/srt/query/MetadataCollectRecordQuery.java b/srt-cloud-data-governance/src/main/java/net/srt/query/MetadataCollectRecordQuery.java new file mode 100644 index 0000000..3d6e768 --- /dev/null +++ b/srt-cloud-data-governance/src/main/java/net/srt/query/MetadataCollectRecordQuery.java @@ -0,0 +1,27 @@ +package net.srt.query; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import net.srt.framework.common.query.Query; +import net.srt.framework.common.utils.DateUtils; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = false) +@Schema(description = "数据治理-源数据采集任务记录查询") +public class MetadataCollectRecordQuery extends Query { + private Long metadataCollectId; + @Schema(description = "开始时间") + @DateTimeFormat(pattern = DateUtils.DATE_TIME_PATTERN) + @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN) + private Date startTime; + @Schema(description = "结束时间") + @DateTimeFormat(pattern = DateUtils.DATE_TIME_PATTERN) + @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN) + private Date endTime; + private Integer status; +} diff --git a/srt-cloud-data-governance/src/main/java/net/srt/service/MetadataCollectRecordService.java b/srt-cloud-data-governance/src/main/java/net/srt/service/MetadataCollectRecordService.java new file mode 100644 index 0000000..64970c7 --- /dev/null +++ b/srt-cloud-data-governance/src/main/java/net/srt/service/MetadataCollectRecordService.java @@ -0,0 +1,16 @@ +package net.srt.service; + +import net.srt.entity.MetadataCollectQuery; +import net.srt.entity.MetadataCollectRecordEntity; +import net.srt.framework.common.page.PageResult; +import net.srt.framework.mybatis.service.BaseService; +import net.srt.query.MetadataCollectRecordQuery; +import net.srt.vo.MetadataCollectRecordVO; + +import java.util.List; + +public interface MetadataCollectRecordService extends BaseService { + PageResult page(MetadataCollectRecordQuery query); + + void delete(List idList); +} diff --git a/srt-cloud-data-governance/src/main/java/net/srt/service/MetadataPropertyService.java b/srt-cloud-data-governance/src/main/java/net/srt/service/MetadataPropertyService.java new file mode 100644 index 0000000..1048fa0 --- /dev/null +++ b/srt-cloud-data-governance/src/main/java/net/srt/service/MetadataPropertyService.java @@ -0,0 +1,15 @@ +package net.srt.service; + +import net.srt.entity.MetadataPropertyEntity; +import net.srt.framework.mybatis.service.BaseService; +import net.srt.vo.MetadataPropertyVo; + +import java.util.List; + +public interface MetadataPropertyService extends BaseService { + void save(MetadataPropertyVo vo); + + void update(MetadataPropertyVo vo); + + void delete(List idList); +} diff --git a/srt-cloud-data-governance/src/main/java/net/srt/service/MetadataStandardRelService.java b/srt-cloud-data-governance/src/main/java/net/srt/service/MetadataStandardRelService.java new file mode 100644 index 0000000..57514e0 --- /dev/null +++ b/srt-cloud-data-governance/src/main/java/net/srt/service/MetadataStandardRelService.java @@ -0,0 +1,13 @@ +package net.srt.service; + +import net.srt.entity.MetadataStandardRelEntity; +import net.srt.framework.mybatis.service.BaseService; +import net.srt.vo.MetadataStandardRelVO; + +public interface MetadataStandardRelService extends BaseService { + void delete(Long metadataId, Long standardId); + + MetadataStandardRelVO getMetadataRel(Long metadataId); + + void save(MetadataStandardRelVO vo); +} diff --git a/srt-cloud-data-governance/src/main/java/net/srt/service/impl/MetadataCollectRecordServiceImpl.java b/srt-cloud-data-governance/src/main/java/net/srt/service/impl/MetadataCollectRecordServiceImpl.java new file mode 100644 index 0000000..1a56fa2 --- /dev/null +++ b/srt-cloud-data-governance/src/main/java/net/srt/service/impl/MetadataCollectRecordServiceImpl.java @@ -0,0 +1,45 @@ +package net.srt.service.impl; + +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.MetadataCollectRecordConvert; +import net.srt.dao.MetadataCollectRecordDao; +import net.srt.entity.MetadataCollectRecordEntity; +import net.srt.framework.common.page.PageResult; +import net.srt.framework.mybatis.service.impl.BaseServiceImpl; +import net.srt.query.MetadataCollectRecordQuery; +import net.srt.service.MetadataCollectRecordService; +import net.srt.vo.MetadataCollectRecordVO; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +@AllArgsConstructor +public class MetadataCollectRecordServiceImpl extends BaseServiceImpl implements MetadataCollectRecordService { + @Override + public PageResult page(MetadataCollectRecordQuery query) { + IPage page = baseMapper.selectPage(getPage(query),getWrapper(query)); + return new PageResult<>(MetadataCollectRecordConvert.INSTANCE.convertList(page.getRecords()),page.getTotal()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(List idList) { + removeByIds(idList); + } + + private LambdaQueryWrapper getWrapper(MetadataCollectRecordQuery query) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.eq(query.getMetadataCollectId() != null,MetadataCollectRecordEntity::getMetadataCollectId,query.getMetadataCollectId()) + .eq(query.getStatus() != null, MetadataCollectRecordEntity::getStatus,query.getStatus()) + .gt(query.getStartTime()!=null,MetadataCollectRecordEntity::getStartTime,query.getStartTime()) + .lt(query.getEndTime()!=null,MetadataCollectRecordEntity::getEndTime,query.getEndTime()) + .orderByDesc(MetadataCollectRecordEntity::getId); + return wrapper; + } + +} 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 1dddcf8..a341d72 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 @@ -10,8 +10,10 @@ 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.dao.MetadataCollectRecordDao; import net.srt.entity.MetadataCollectEntity; import net.srt.entity.MetadataCollectQuery; +import net.srt.entity.MetadataCollectRecordEntity; import net.srt.framework.common.exception.ServerException; import net.srt.framework.common.page.PageResult; import net.srt.framework.mybatis.service.impl.BaseServiceImpl; @@ -29,6 +31,7 @@ import java.util.List; public class MetadataCollectServiceImpl extends BaseServiceImpl implements MetadataCollectService { private final QuartzDataGovernanceMetadataCollectApi metadataCollectApi; + private final MetadataCollectRecordDao collectRecordDao; @Override public PageResult page(MetadataCollectQuery query) { @@ -78,10 +81,12 @@ public class MetadataCollectServiceImpl extends BaseServiceImpl idList) { removeByIds(idList); -// for (Long id : idList) { -// LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); -// -// } + + for (Long id : idList) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.eq(MetadataCollectRecordEntity::getMetadataCollectId,id); + collectRecordDao.delete(wrapper); + } } private void checkParam(MetadataCollectVO vo){ diff --git a/srt-cloud-data-governance/src/main/java/net/srt/service/impl/MetadataPropertyServiceImpl.java b/srt-cloud-data-governance/src/main/java/net/srt/service/impl/MetadataPropertyServiceImpl.java new file mode 100644 index 0000000..65d0b59 --- /dev/null +++ b/srt-cloud-data-governance/src/main/java/net/srt/service/impl/MetadataPropertyServiceImpl.java @@ -0,0 +1,35 @@ +package net.srt.service.impl; + +import lombok.AllArgsConstructor; +import net.srt.convert.MetadataPropertyConvert; +import net.srt.dao.MetadataPropertyDao; +import net.srt.entity.MetadataPropertyEntity; +import net.srt.framework.mybatis.service.impl.BaseServiceImpl; +import net.srt.service.MetadataPropertyService; +import net.srt.vo.MetadataPropertyVo; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +@AllArgsConstructor +public class MetadataPropertyServiceImpl extends BaseServiceImpl implements MetadataPropertyService { + @Override + public void save(MetadataPropertyVo vo) { + MetadataPropertyEntity entity = MetadataPropertyConvert.INSTANCE.convert(vo); + baseMapper.insert(entity); + } + + @Override + public void update(MetadataPropertyVo vo) { + MetadataPropertyEntity entity = MetadataPropertyConvert.INSTANCE.convert(vo); + updateById(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(List idList) { + removeByIds(idList); + } +} diff --git a/srt-cloud-data-governance/src/main/java/net/srt/service/impl/MetadataServiceImpl.java b/srt-cloud-data-governance/src/main/java/net/srt/service/impl/MetadataServiceImpl.java index 1e64ca1..9dd5d33 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/service/impl/MetadataServiceImpl.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/service/impl/MetadataServiceImpl.java @@ -1,12 +1,234 @@ package net.srt.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import io.swagger.v3.oas.annotations.servers.Server; import lombok.AllArgsConstructor; +import net.srt.api.module.data.governance.constant.BuiltInMetamodel; +import net.srt.convert.MetadataConvert; import net.srt.dao.MetadataDao; +import net.srt.dao.MetadataPropertyDao; import net.srt.entity.MetadataEntity; +import net.srt.entity.MetadataPropertyEntity; +import net.srt.framework.common.cache.bean.Neo4jInfo; +import net.srt.framework.common.exception.ServerException; +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 net.srt.framework.security.cache.TokenStoreCache; import net.srt.service.MetadataService; -@Server +import net.srt.vo.MetadataVO; +import net.srt.vo.MetamodelPropertyVO; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import srt.cloud.framework.dbswitch.common.util.StringUtil; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; + +@Service @AllArgsConstructor public class MetadataServiceImpl extends BaseServiceImpl implements MetadataService { + + private final MetadataDao metadataDao; + private final MetadataPropertyDao metadataPropertyDao; + private final TokenStoreCache tokenStoreCache; + + @Override + public List listByParentId(Long parentId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(MetadataEntity::getParentId,parentId) + .orderByAsc(MetadataEntity::getOrderNo); + dataScopeWithOrgId(wrapper); + List metadataEntities = baseMapper.selectList(wrapper); + return BeanUtil.copyListProperties(metadataEntities,TreeNodeVo::new, (oldItem, newItem) ->{ + newItem.setLabel(oldItem.getName()); + newItem.setValue(oldItem.getId()); + newItem.setLeaf(BuiltInMetamodel.COLUMN.getId().equals(oldItem.getMetamodelId())); + if(newItem.getPath().contains("/")){ + newItem.setParentPath(newItem.getPath().substring(0,newItem.getPath().lastIndexOf("/"))); + } + }); + } + + @Override + public List listFloder() { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(MetadataEntity::getIfLeaf,1) + .orderByAsc(MetadataEntity::getOrderNo) + .orderByAsc(MetadataEntity::getId); + dataScopeWithOrgId(wrapper); + List metadatas = baseMapper.selectList(wrapper); + List treeNodeVos = BeanUtil.copyListProperties(metadatas, TreeNodeVo::new, (oldItem, newItem) -> { + newItem.setLabel(oldItem.getName()); + newItem.setValue(oldItem.getId()); + if (newItem.getPath().contains("/")) { + newItem.setParentPath(newItem.getPath().substring(0, newItem.getPath().lastIndexOf("/"))); + } + }); + return BuildTreeUtils.buildTree(treeNodeVos); + } + + @Override + public List listDb() { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(MetadataEntity::getMetamodelId,BuiltInMetamodel.SCHEMA.getId(),BuiltInMetamodel.TABLE.getId()) + .or() + .isNull(MetadataEntity::getMetamodelId) + .orderByAsc(MetadataEntity::getOrderNo); + dataScopeWithOrgId(wrapper); + List metadatas = baseMapper.selectList(wrapper); + List treeNodeVos = BeanUtil.copyListProperties(metadatas,TreeNodeVo::new, (oldItem, newItem) -> { + newItem.setLabel(oldItem.getName()); + newItem.setValue(oldItem.getId()); + newItem.setDisabled(!BuiltInMetamodel.TABLE.getId().equals(oldItem.getMetamodelId())); + if(newItem.getPath().contains("/")) { + newItem.setParentPath(newItem.getPath().substring(0,newItem.getPath().lastIndexOf("/"))); + } + }); + return BuildTreeUtils.buildTree(treeNodeVos); + } + + @Override + public List listByKeyword(String keyword) { + if(StringUtil.isBlank(keyword)){ + return listByParentId(0L); + } + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.like(MetadataEntity::getName,keyword) + .or() + .like(MetadataEntity::getCode,keyword) + .orderByAsc(MetadataEntity::getOrderNo) + .orderByAsc(MetadataEntity::getId); + dataScopeWithOrgId(wrapper); + List metadatas = baseMapper.selectList(wrapper); + List resultList = new ArrayList<>(); + //递归获取父级 + for (MetadataEntity metadata : metadatas) { + recursionAddParent(metadata,resultList); + } + List result = resultList.stream().sorted(Comparator.comparing(MetadataEntity::getOrderNo)).collect(Collectors.toList()); + List treeNodeVos = BeanUtil.copyListProperties(result ,TreeNodeVo::new, (oldItem, newItem) -> { + newItem.setLabel(oldItem.getName()); + newItem.setValue(oldItem.getId()); + newItem.setLeaf(BuiltInMetamodel.COLUMN.getId().equals(oldItem.getMetamodelId())); + if(newItem.getPath().contains("/")) { + newItem.setParentPath(newItem.getPath().substring(0,newItem.getPath().lastIndexOf("/"))); + } + }); + return BuildTreeUtils.buildTree(treeNodeVos); + } + + @Override + public MetadataVO get(Long id) { + MetadataEntity metadataEntity = getById(id); + MetadataVO metadataVO = MetadataConvert.INSTANCE.convert(metadataEntity); + metadataVO.setProperties(metadataPropertyDao.listPropertyById(id,metadataEntity.getMetamodelId())); + return metadataVO; + } + + @Override + public void save(MetadataVO vo) { + MetadataEntity entity = MetadataConvert.INSTANCE.convert(vo); + entity.setProjectId(getProjectId()); + entity.setPath(recursionPath(entity,null)); + buildField(entity); + MetadataEntity parentMetadata = baseMapper.selectById(vo.getParentId()); + if(parentMetadata != null) { + entity.setDbType(parentMetadata.getDbType()); + entity.setDatasourceId(parentMetadata.getDatasourceId()); + entity.setCollectTaskId(parentMetadata.getCollectTaskId()); + } + baseMapper.insert(entity); + buildProperties(entity,vo.getProperties()); + } + + @Override + public void update(MetadataVO vo) { + MetadataEntity entity = MetadataConvert.INSTANCE.convert(vo); + entity.setProjectId(getProjectId()); + entity.setPath(recursionPath(entity,null)); + buildField(entity); + updateById(entity); + buildProperties(entity,vo.getProperties()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(Long id) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(MetadataEntity::getParentId,id).last("limit 1"); + if(baseMapper.selectOne(wrapper)!=null){ + throw new ServerException("存在子节点,不可删除!"); + } + removeById(id); + LambdaQueryWrapper propertyWrapper = new LambdaQueryWrapper<>(); + propertyWrapper.eq(MetadataPropertyEntity::getMetadataId,id); + metadataPropertyDao.delete(propertyWrapper); + } + + @Override + public void upNeo4jInfo(Neo4jInfo neo4jInfo) { + tokenStoreCache.saveNeo4jInfo(getProjectId(),neo4jInfo); + } + + @Override + public Neo4jInfo getNeo4jInfo() { + return tokenStoreCache.getNeo4jInfo(getProjectId()); + } + + private void recursionAddParent(MetadataEntity metadataEntity, List resultList){ + if(resultList.stream().noneMatch(item -> metadataEntity.getId().equals(item.getId()))) { + resultList.add(metadataEntity); + } + + if(metadataEntity.getParentId()!=0){ + MetadataEntity parent = getById(metadataEntity.getParentId()); + recursionAddParent(parent,resultList); + } + } + + private void buildField(MetadataEntity entity){ + if(entity.getMetamodelId()!=null){ + entity.setIcon(metadataDao.selectById(entity.getMetamodelId()).getIcon()); + } + if(entity.getIfLeaf() == 1 && entity.getMetamodelId() == null) { + entity.setIcon("/src/assets/folder.png"); + } + } + + private String recursionPath(MetadataEntity metadataEntity, String path) { + if(StringUtil.isBlank(path)){ + path = metadataEntity.getName(); + } + if(metadataEntity.getParentId()!=0){ + MetadataEntity parent = getById(metadataEntity.getParentId()); + path = parent.getName() + "/" +path; + return recursionPath(parent,path); + } + return path; + } + + private void buildProperties(MetadataEntity entity, List properties){ + if(!CollectionUtils.isEmpty(properties)){ + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(MetadataPropertyEntity::getMetadataId,entity.getId()); + for (MetamodelPropertyVO property : properties) { + MetadataPropertyEntity metadataPropertyEntity = new MetadataPropertyEntity(); + metadataPropertyEntity.setMetamodelPropertyId(property.getId()); + metadataPropertyEntity.setMetadataId(entity.getId()); + metadataPropertyEntity.setProperty(property.getValue()); + metadataPropertyEntity.setProjectId(entity.getProjectId()); + if(property.getMetadataPropertyId()!=null){ + metadataPropertyEntity.setId(property.getMetadataPropertyId()); + metadataPropertyDao.updateById(metadataPropertyEntity); + }else { + metadataPropertyDao.insert(metadataPropertyEntity); + } + } + } + } } diff --git a/srt-cloud-data-governance/src/main/java/net/srt/service/impl/MetadataStandardRelServiceImpl.java b/srt-cloud-data-governance/src/main/java/net/srt/service/impl/MetadataStandardRelServiceImpl.java new file mode 100644 index 0000000..47cf725 --- /dev/null +++ b/srt-cloud-data-governance/src/main/java/net/srt/service/impl/MetadataStandardRelServiceImpl.java @@ -0,0 +1,57 @@ +package net.srt.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.AllArgsConstructor; +import net.srt.convert.MetadataStandardRelConvert; +import net.srt.dao.MetadataStandardRelDao; +import net.srt.dao.StandardDao; +import net.srt.entity.MetadataStandardRelEntity; +import net.srt.entity.StandardEntity; +import net.srt.framework.mybatis.service.impl.BaseServiceImpl; +import net.srt.service.MetadataStandardRelService; +import net.srt.vo.MetadataStandardRelVO; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@AllArgsConstructor +public class MetadataStandardRelServiceImpl extends BaseServiceImpl implements MetadataStandardRelService { + private final StandardDao standardDao; + + @Override + public MetadataStandardRelVO getMetadataRel(Long metadataId) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.eq(MetadataStandardRelEntity::getMetadataId,metadataId).last("limit 1"); + MetadataStandardRelEntity relEntity = baseMapper.selectOne(wrapper); + if(relEntity!=null){ + StandardEntity standardEntity = standardDao.selectById(relEntity.getStandardId()); + MetadataStandardRelVO convert = MetadataStandardRelConvert.INSTANCE.convert(relEntity); + convert.setStandardCategoryId(standardEntity.getParentId()); + return convert; + } + return null; + } + + @Override + public void save(MetadataStandardRelVO vo) { + MetadataStandardRelEntity entity = MetadataStandardRelConvert.INSTANCE.convert(vo); + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.eq(MetadataStandardRelEntity::getMetadataId,vo.getMetadataId()).eq(MetadataStandardRelEntity::getStandardId,vo.getStandardId()).last("limit 1"); + MetadataStandardRelEntity relEntity = baseMapper.selectOne(wrapper); + if(relEntity!=null) { + entity.setId(relEntity.getId()); + baseMapper.updateById(entity); + }else { + baseMapper.insert(entity); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(Long metadataId, Long standardId) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.eq(MetadataStandardRelEntity::getMetadataId,metadataId).eq(MetadataStandardRelEntity::getStandardId,standardId); + baseMapper.delete(wrapper); + } +} diff --git a/srt-cloud-data-governance/src/main/java/net/srt/vo/DatastandardVO.java b/srt-cloud-data-governance/src/main/java/net/srt/vo/DatastandardVO.java new file mode 100644 index 0000000..bc4a826 --- /dev/null +++ b/srt-cloud-data-governance/src/main/java/net/srt/vo/DatastandardVO.java @@ -0,0 +1,49 @@ +package net.srt.vo; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * @ClassName : DatastandardVo + * @Description : + * @Author : FJJ + * @Date: 2023-12-23 12:05 + */ +@Data +@Schema(description = "标准管理查询") +public class DatastandardVo implements Serializable { + private static final long serialVersionUID = 1L; + @TableId("id") + private Long id; + private Integer categoryId; + private String engName; + private String cnName; + private Integer codeNum; + private String dataType; + private Integer dataLength; + private Integer dataPrecision; + private Integer nullable; + private Integer standardCodeId; + private Integer type; + private String note; + private Long projectId; + private Integer status; + private Integer version; + private Integer deleted; + private String creator; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + private String updater; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date updateTime; + private Integer ifStandardRel; + private String group; +} diff --git a/srt-cloud-data-governance/src/main/java/net/srt/vo/MetadataCollectRecordRelVO.java b/srt-cloud-data-governance/src/main/java/net/srt/vo/MetadataCollectRecordRelVO.java new file mode 100644 index 0000000..c8241bb --- /dev/null +++ b/srt-cloud-data-governance/src/main/java/net/srt/vo/MetadataCollectRecordRelVO.java @@ -0,0 +1,49 @@ +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 MetadataCollectRecordRelVO implements Serializable { + private static final long serialVersionUID = 1L; + + + @Schema(description = "主键id") + private Long id; + + @Schema(description = "元数据id") + private Long metadataId; + + @Schema(description = "标准字段id") + private Long standardId; + + @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; + + private Long standardCategoryId; + + +} diff --git a/srt-cloud-data-governance/src/main/java/net/srt/vo/MetadataCollectRecordVO.java b/srt-cloud-data-governance/src/main/java/net/srt/vo/MetadataCollectRecordVO.java new file mode 100644 index 0000000..9230afe --- /dev/null +++ b/srt-cloud-data-governance/src/main/java/net/srt/vo/MetadataCollectRecordVO.java @@ -0,0 +1,64 @@ +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 MetadataCollectRecordVO implements Serializable { + private static final long serialVersionUID = 1L; + + @Schema(description = "主键id") + private Long id; + + @Schema(description = "采集任务id") + private Long metadataCollectId; + + @Schema(description = "1-成功 0-失败 2-运行中") + private Integer status; + + @Schema(description = "实时日志") + private String realTimeLog; + + @Schema(description = "错误日志") + private String errorLog; + + @Schema(description = "开始时间") + @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN) + private Date startTime; + + @Schema(description = "结束时间") + @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN) + private Date endTime; + + @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; + + + +} diff --git a/srt-cloud-data-governance/src/main/java/net/srt/vo/MetadataStandardRelVO.java b/srt-cloud-data-governance/src/main/java/net/srt/vo/MetadataStandardRelVO.java new file mode 100644 index 0000000..b31f1eb --- /dev/null +++ b/srt-cloud-data-governance/src/main/java/net/srt/vo/MetadataStandardRelVO.java @@ -0,0 +1,48 @@ +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 MetadataStandardRelVO implements Serializable { + private static final long serialVersionUID = 1L; + + @Schema(description = "主键id") + private Long id; + + @Schema(description = "元数据id") + private Long metadataId; + + @Schema(description = "标准字段id") + private Long standardId; + + @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; + + private Long standardCategoryId; + + +} diff --git a/srt-cloud-data-governance/src/main/java/net/srt/vo/MetadataVo.java b/srt-cloud-data-governance/src/main/java/net/srt/vo/MetadataVO.java similarity index 97% rename from srt-cloud-data-governance/src/main/java/net/srt/vo/MetadataVo.java rename to srt-cloud-data-governance/src/main/java/net/srt/vo/MetadataVO.java index 0ba283c..a60fc8d 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/vo/MetadataVo.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/vo/MetadataVO.java @@ -17,7 +17,7 @@ import java.util.List; */ @Data @Schema(description = "数据治理-元数据") -public class MetadataVo implements Serializable { +public class MetadataVO implements Serializable { private static final long serialVersionUID = 1L; @Schema(description = "主键id") diff --git a/srt-cloud-data-governance/src/main/java/net/srt/vo/QualityConfigVo.java b/srt-cloud-data-governance/src/main/java/net/srt/vo/QualityConfigVO.java similarity index 97% rename from srt-cloud-data-governance/src/main/java/net/srt/vo/QualityConfigVo.java rename to srt-cloud-data-governance/src/main/java/net/srt/vo/QualityConfigVO.java index 1c10b51..5ec83a9 100644 --- a/srt-cloud-data-governance/src/main/java/net/srt/vo/QualityConfigVo.java +++ b/srt-cloud-data-governance/src/main/java/net/srt/vo/QualityConfigVO.java @@ -18,7 +18,7 @@ import java.util.List; */ @Data @Schema(description = "数据治理-质量规则配置") -public class QualityConfigVo implements Serializable { +public class QualityConfigVO implements Serializable { private static final long serialVersionUID = 1L; @Schema(description = "自增id") diff --git a/srt-cloud-data-governance/src/main/resources/mapper/MetadataPropertyDao.xml b/srt-cloud-data-governance/src/main/resources/mapper/MetadataPropertyDao.xml index 1b9c111..b336680 100644 --- a/srt-cloud-data-governance/src/main/resources/mapper/MetadataPropertyDao.xml +++ b/srt-cloud-data-governance/src/main/resources/mapper/MetadataPropertyDao.xml @@ -1,12 +1,30 @@ - - + diff --git a/srt-cloud-data-server/.gitignore b/srt-cloud-data-server/.gitignore new file mode 100644 index 0000000..5ff6309 --- /dev/null +++ b/srt-cloud-data-server/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/srt-cloud-data-server/pom.xml b/srt-cloud-data-server/pom.xml new file mode 100644 index 0000000..9d2401b --- /dev/null +++ b/srt-cloud-data-server/pom.xml @@ -0,0 +1,204 @@ + + + 4.0.0 + + net.srt + srt-cloud + 2.0.0 + + + srt-cloud-data-server + + + 8 + 8 + UTF-8 + + + + + net.srt + srt-cloud-api + 2.0.0 + + + + org.springframework.boot + spring-boot-starter-log4j2 + + + net.srt + srt-cloud-mybatis + 2.0.0 + + + net.srt + srt-cloud-dbswitch + 2.0.0 + + + jsqlparser + com.github.jsqlparser + + + spring-boot-starter-logging + org.springframework.boot + + + + + org.springframework.cloud + spring-cloud-starter-bootstrap + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + com.github.xiaoymin + knife4j-springdoc-ui + + + + + + + + org.codehaus.mojo + appassembler-maven-plugin + 2.1.0 + + + + + generate-jsw-scripts + package + + generate-daemons + + + + + + + flat + + src/main/resources + true + + true + + conf + + lib + + bin + UTF-8 + logs + + + + ${project.artifactId} + net.srt.DataServiceApplication + + jsw + + + + jsw + + linux-x86-32 + linux-x86-64 + windows-x86-32 + windows-x86-64 + + + + configuration.directory.in.classpath.first + conf + + + wrapper.ping.timeout + 120 + + + set.default.REPO_DIR + lib + + + wrapper.logfile + logs/wrapper.log + + + + + + + + + -server + -Dfile.encoding=utf-8 + -Xms128m + -Xmx1024m + -XX:+PrintGCDetails + -XX:+PrintGCDateStamps + -Xloggc:logs/gc.log + + + + + + + net.srt.DataServiceApplication + ${project.artifactId} + + + + + + + + maven-assembly-plugin + + + ${project.parent.basedir}/assembly/assembly-win.xml + ${project.parent.basedir}/assembly/assembly-linux.xml + + + + + make-assembly + package + + single + + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + true + + + + + + diff --git a/srt-cloud-data-server/src/main/java/net/srt/DataServiceApplication.java b/srt-cloud-data-server/src/main/java/net/srt/DataServiceApplication.java new file mode 100644 index 0000000..08dc8b9 --- /dev/null +++ b/srt-cloud-data-server/src/main/java/net/srt/DataServiceApplication.java @@ -0,0 +1,16 @@ +package net.srt; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.openfeign.EnableFeignClients; + +@EnableFeignClients +@EnableDiscoveryClient +@SpringBootApplication +public class DataServiceApplication { + public static void main(String[] args) { + SpringApplication.run(DataServiceApplication.class, args); + System.out.println("==============启动成功==================="); + } +} diff --git a/srt-cloud-data-server/src/main/java/net/srt/controller/ApiConfigController.java b/srt-cloud-data-server/src/main/java/net/srt/controller/ApiConfigController.java new file mode 100644 index 0000000..3cad1b4 --- /dev/null +++ b/srt-cloud-data-server/src/main/java/net/srt/controller/ApiConfigController.java @@ -0,0 +1,119 @@ +package net.srt.controller; + +import io.swagger.v3.oas.annotations.Operation; +import lombok.AllArgsConstructor; +import net.srt.dto.ApiConfigDto; +import net.srt.entity.ApiConfigEntity; +import net.srt.framework.common.page.PageResult; +import net.srt.framework.common.utils.Result; +import net.srt.framework.common.utils.TreeNodeVo; +import net.srt.query.ApiConfigQuery; +import net.srt.service.ApiConfigService; +import net.srt.vo.ApiConfig; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; + +@RestController +@RequestMapping("/api-config") +@AllArgsConstructor +public class ApiConfigController { + + private final ApiConfigService apiConfigService; + + + + /** + * 查询文件分组树 + * + * @return 结果列表 + */ + @GetMapping("/api-group") + @Operation(summary = "查询文件分组树") + public Result> listTree() { + return Result.ok(apiConfigService.listTree()); + } + + /** + * 分页查询API配置 + * @param query API配置查询对象 + * @return 分页结果 + */ + @GetMapping("/page") + @Operation(summary = "分页") + @PreAuthorize("hasAuthority('data-service:api-config:page')") + public Result> page(@Valid ApiConfigQuery query) { + PageResult page = apiConfigService.page(query); + + return Result.ok(page); + } + + /** + * 获取IP和端口信息 + * + * @return 返回IP和端口信息 + */ + @GetMapping("/getIpPort") + public Result getIpPort() { + return Result.ok(apiConfigService.getIpPort()); + } + + /** + * 根据ID获取API配置信息 + * + * @param id API配置ID + * @return API配置实体对象 + */ + @GetMapping("/{id}") + @Operation(summary = "查看") + @PreAuthorize("hasAuthority('data-service:api-config:info')") + public Result get(@PathVariable("id") Long id) { + ApiConfigEntity apiConfig = apiConfigService.getByI(id); + + return Result.ok(apiConfig); + } + + @PutMapping("/{id}") + @Operation(summary = "修改") + @PreAuthorize("hasAuthority('data-service:api-config:update')") + public Result update(@PathVariable Long id, @RequestBody @Valid ApiConfigEntity vo) { + apiConfigService.update(id,vo); + return Result.ok(); + } + @PutMapping("/{id}/offline") + @Operation(summary = "下线") + @PreAuthorize("hasAuthority('data-service:api-config:update')") + public Result xia(@PathVariable Long id) { + apiConfigService.xia(id); + return Result.ok(); + } + + @PutMapping("/{id}/online") + @Operation(summary = "上线") + @PreAuthorize("hasAuthority('data-service:api-config:update')") + public Result shang(@PathVariable Long id) { + apiConfigService.shang(id); + return Result.ok(); + } + + + @PostMapping + @Operation(summary = "新增") + @PreAuthorize("hasAuthority('data-service:api-config:save')") + public Result insert(@RequestBody ApiConfig vo) { + apiConfigService.sav(vo); + return Result.ok(); + } + + @DeleteMapping + @Operation(summary = "删除") + @PreAuthorize("hasAuthority('data-service:api-config:delete')") + public Result delete(@RequestBody List idList) { + apiConfigService.removeByI(idList); + return Result.ok(); + } + + +} diff --git a/srt-cloud-data-server/src/main/java/net/srt/controller/ApiGroupController.java b/srt-cloud-data-server/src/main/java/net/srt/controller/ApiGroupController.java new file mode 100644 index 0000000..d63facc --- /dev/null +++ b/srt-cloud-data-server/src/main/java/net/srt/controller/ApiGroupController.java @@ -0,0 +1,70 @@ +package net.srt.controller; + +import io.swagger.v3.oas.annotations.Operation; +import lombok.AllArgsConstructor; +import net.srt.convert.ApiGroupConvert; +import net.srt.entity.ApiGroupEntity; +import net.srt.framework.common.utils.Result; +import net.srt.framework.common.utils.TreeNodeVo; +import net.srt.service.ApiGroupService; +import net.srt.vo.ApiGroup; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; + +/** +* 数据服务-api分组 +* +* @author zrx 985134801@qq.com +* @since 1.0.0 2023-01-28 +*/ +@RestController +@RequestMapping("/api-group") +@AllArgsConstructor +public class ApiGroupController { + private final ApiGroupService apiGroupService; + + @GetMapping + @Operation(summary = "查询文件分组树") + public Result> listTree() { + return Result.ok(apiGroupService.listTree()); + } + + @GetMapping("{id}") + @Operation(summary = "信息") + @PreAuthorize("hasAuthority('data-service:api-group:info')") + public Result get(@PathVariable("id") Long id){ + ApiGroupEntity entity = apiGroupService.getById(id); + return Result.ok(ApiGroupConvert.INSTANCE.convert(entity)); + } + + + @PostMapping + @Operation(summary = "保存") + @PreAuthorize("hasAuthority('data-service:api-group:save')") + public Result save(@RequestBody ApiGroup vo) { + apiGroupService.save(vo); + return Result.ok(); + } + + + @PutMapping + @Operation(summary = "修改") + @PreAuthorize("hasAuthority('data-service:api-group:update')") + public Result update(@RequestBody @Valid ApiGroup vo) { + apiGroupService.update(vo); + return Result.ok(); + } + + + @DeleteMapping("/{id}") + @Operation(summary = "删除") + @PreAuthorize("hasAuthority('data-service:api-group:delete')") + public Result delete(@PathVariable Long id) { + apiGroupService.delete(id); + return Result.ok(); + } + +} diff --git a/srt-cloud-data-server/src/main/java/net/srt/controller/ApiTest.java b/srt-cloud-data-server/src/main/java/net/srt/controller/ApiTest.java new file mode 100644 index 0000000..2568106 --- /dev/null +++ b/srt-cloud-data-server/src/main/java/net/srt/controller/ApiTest.java @@ -0,0 +1,43 @@ +package net.srt.controller; + +import io.swagger.v3.oas.annotations.Operation; +import lombok.AllArgsConstructor; +import net.srt.framework.common.page.PageResult; +import net.srt.framework.common.utils.Result; +import net.srt.query.ApiConfigQuery; +import net.srt.query.ApiLogQuery; +import net.srt.service.ApiLogService; +import net.srt.vo.ApiConfig; +import net.srt.vo.ApiLog; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; + +/** + * @ClassName ApiTest + * @Description 描述 + * @Author 栗永斌 + */ +@RestController +@RequestMapping("/log") +@AllArgsConstructor +public class ApiTest { + + @Autowired + ApiLogService apiLogService; + + @GetMapping("/page") + @Operation(summary = "日志列表") + @PreAuthorize("hasAuthority('data-service:api-config:page')") + public Result> page(@Valid ApiLogQuery query) { + PageResult page = apiLogService.pag(query); + + return Result.ok(page); + } + +} diff --git a/srt-cloud-data-server/src/main/java/net/srt/convert/ApiConfigConvert.java b/srt-cloud-data-server/src/main/java/net/srt/convert/ApiConfigConvert.java new file mode 100644 index 0000000..d411d67 --- /dev/null +++ b/srt-cloud-data-server/src/main/java/net/srt/convert/ApiConfigConvert.java @@ -0,0 +1,29 @@ +package net.srt.convert; + +import net.srt.dto.ApiConfigDto; +import net.srt.entity.ApiConfigEntity; +import net.srt.vo.ApiConfig; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** +* 数据服务-api配置 +* +* @author zrx 985134801@qq.com +* @since 1.0.0 2023-01-28 +*/ +@Mapper +public interface ApiConfigConvert { + ApiConfigConvert INSTANCE = Mappers.getMapper(ApiConfigConvert.class); + + ApiConfigEntity convert(ApiConfig vo); + + ApiConfig convert(ApiConfigEntity entity); + + ApiConfigDto convertDto(ApiConfigEntity entity); + + List convertList(List list); + +} diff --git a/srt-cloud-data-server/src/main/java/net/srt/convert/ApiGroupConvert.java b/srt-cloud-data-server/src/main/java/net/srt/convert/ApiGroupConvert.java new file mode 100644 index 0000000..1c4f4bb --- /dev/null +++ b/srt-cloud-data-server/src/main/java/net/srt/convert/ApiGroupConvert.java @@ -0,0 +1,26 @@ +package net.srt.convert; + +import net.srt.entity.ApiGroupEntity; +import net.srt.vo.ApiGroup; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** +* 数据服务-api分组 +* +* @author zrx 985134801@qq.com +* @since 1.0.0 2023-01-28 +*/ +@Mapper +public interface ApiGroupConvert { + ApiGroupConvert INSTANCE = Mappers.getMapper(ApiGroupConvert.class); + + ApiGroupEntity convert(ApiGroup vo); + + ApiGroup convert(ApiGroupEntity entity); + + List convertList(List list); + +} diff --git a/srt-cloud-data-server/src/main/java/net/srt/convert/ApiLogConvert.java b/srt-cloud-data-server/src/main/java/net/srt/convert/ApiLogConvert.java new file mode 100644 index 0000000..6399679 --- /dev/null +++ b/srt-cloud-data-server/src/main/java/net/srt/convert/ApiLogConvert.java @@ -0,0 +1,26 @@ +package net.srt.convert; + +import net.srt.entity.ApiLogEntity; +import net.srt.vo.ApiLog; + +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * @ClassName ApiLogConvert + * @Description 描述 + * @Author 栗永斌 + */ +@Mapper +public interface ApiLogConvert { + + ApiLogConvert INSTANCE = Mappers.getMapper(ApiLogConvert.class); + + ApiLogEntity convert(ApiLog vo); + + ApiLog convert(ApiLogEntity entity); + + List convertList(List list); +} diff --git a/srt-cloud-data-server/src/main/java/net/srt/dto/ApiConfigDto.java b/srt-cloud-data-server/src/main/java/net/srt/dto/ApiConfigDto.java new file mode 100644 index 0000000..ce03da4 --- /dev/null +++ b/srt-cloud-data-server/src/main/java/net/srt/dto/ApiConfigDto.java @@ -0,0 +1,49 @@ +package net.srt.dto; + +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 +public class ApiConfigDto implements Serializable { + private static final long serialVersionUID = 1L; + private Long id; + private Long groupId; + private String path; + private String type; + private String name; + private String note; + private String sqlText; + private String sqlSeparator; + private Integer sqlMaxRow; + private String sqlParam; + private String jsonParam; + private String responseResult; + private String contentType; + private Integer status; + private Date releaseTime; + private Long releaseUserId; + private Integer sqlDbType; + private Long databaseId; + private Integer previlege; + private Integer openTrans; + private Long projectId; + private Integer version; + private Integer deleted; + private Long creator; + private Date createTime; + private Long updater; + private Date updateTime; + private Integer requestedTimes; + private Integer requestedSuccessTimes; + private Integer requestedFailedTimes; + private Long authId; + private String group; + + +} diff --git a/srt-cloud-data-server/src/main/java/net/srt/entity/ApiConfigEntity.java b/srt-cloud-data-server/src/main/java/net/srt/entity/ApiConfigEntity.java new file mode 100644 index 0000000..7b9dec0 --- /dev/null +++ b/srt-cloud-data-server/src/main/java/net/srt/entity/ApiConfigEntity.java @@ -0,0 +1,61 @@ +package net.srt.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import net.srt.framework.mybatis.entity.BaseEntity; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@Data +@TableName("data_dispatch_catalogue") +public class ApiConfigEntity extends BaseEntity { + /** + * 父级id(顶级为0) + */ + private Long parentId; + + /** + * 分组名称 + */ + private String name; + + /** + * 分组序号 + */ + private Integer orderNo; + + /** + * 描述 + */ + private String description; + + /** + * 分组路径 + */ + private String path; + + private Integer type; + + /** + * 项目id + */ + private Long projectId; + private Long id; + + // 私有属性,状态 + private Integer status; + // 私有属性,发布用户ID + private Long releaseUserId; + // 自定义注解,日期格式化,格式为"yyyy-MM-dd HH:mm:ss" + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date releaseTime; + // 私有属性,内容类型 + private String contentType; + private Integer previlege; + private Integer openTrans; + +} diff --git a/srt-cloud-data-server/src/main/java/net/srt/entity/ApiGroupEntity.java b/srt-cloud-data-server/src/main/java/net/srt/entity/ApiGroupEntity.java new file mode 100644 index 0000000..aabf06c --- /dev/null +++ b/srt-cloud-data-server/src/main/java/net/srt/entity/ApiGroupEntity.java @@ -0,0 +1,41 @@ +package net.srt.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import net.srt.framework.mybatis.entity.BaseEntity; + +@Data +@TableName(value = "data_dispatch_catalogue",autoResultMap = true) +public class ApiGroupEntity extends BaseEntity { + /** + * 父级id(顶级为0) + */ + private Long parentId; + + /** + * 分组名称 + */ + private String name; + + /** + * 分组序号 + */ + private Integer orderNo; + + /** + * 描述 + */ + private String description; + + /** + * 分组路径 + */ + private String path; + + private Integer type; + + /** + * 项目id + */ + private Long projectId; +} diff --git a/srt-cloud-data-server/src/main/java/net/srt/entity/ApiLogEntity.java b/srt-cloud-data-server/src/main/java/net/srt/entity/ApiLogEntity.java new file mode 100644 index 0000000..f819add --- /dev/null +++ b/srt-cloud-data-server/src/main/java/net/srt/entity/ApiLogEntity.java @@ -0,0 +1,31 @@ +package net.srt.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import net.srt.framework.mybatis.entity.BaseEntity; + +import java.util.Date; + +/** + * @ClassName ApiLogEntity + * @Description 描述 + * @Author 栗永斌 + */ +@Data +@TableName(value = "data_service_api_log",autoResultMap = true) +public class ApiLogEntity extends BaseEntity { +// private Integer id; + private String url; + private Integer duration; + private String ip; + private Integer apiId; + private String error; + private Integer projectId; +// private String deleted; +// private Integer creator; +// private String createTime; +// private Integer updater; + private Date updateTime; + private String apiName; + +} diff --git a/srt-cloud-data-server/src/main/java/net/srt/mapper/ApiConfigDao.java b/srt-cloud-data-server/src/main/java/net/srt/mapper/ApiConfigDao.java new file mode 100644 index 0000000..6ddc07f --- /dev/null +++ b/srt-cloud-data-server/src/main/java/net/srt/mapper/ApiConfigDao.java @@ -0,0 +1,14 @@ +package net.srt.mapper; + +import net.srt.entity.ApiConfigEntity; +import net.srt.framework.mybatis.dao.BaseDao; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +@Mapper +public interface ApiConfigDao extends BaseDao { + void xia(@Param("id") Long id); + + void shang(@Param("id") Long id); + +} diff --git a/srt-cloud-data-server/src/main/java/net/srt/mapper/ApiGroupDao.java b/srt-cloud-data-server/src/main/java/net/srt/mapper/ApiGroupDao.java new file mode 100644 index 0000000..a8bd1f0 --- /dev/null +++ b/srt-cloud-data-server/src/main/java/net/srt/mapper/ApiGroupDao.java @@ -0,0 +1,9 @@ +package net.srt.mapper; + +import net.srt.entity.ApiGroupEntity; +import net.srt.framework.mybatis.dao.BaseDao; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface ApiGroupDao extends BaseDao { +} diff --git a/srt-cloud-data-server/src/main/java/net/srt/mapper/ApiLogDao.java b/srt-cloud-data-server/src/main/java/net/srt/mapper/ApiLogDao.java new file mode 100644 index 0000000..6e45e61 --- /dev/null +++ b/srt-cloud-data-server/src/main/java/net/srt/mapper/ApiLogDao.java @@ -0,0 +1,15 @@ +package net.srt.mapper; + +import net.srt.entity.ApiGroupEntity; +import net.srt.entity.ApiLogEntity; +import net.srt.framework.mybatis.dao.BaseDao; +import org.apache.ibatis.annotations.Mapper; + +/** + * @ClassName ApiLogDao + * @Description 描述 + * @Author 栗永斌 + */ +@Mapper +public interface ApiLogDao extends BaseDao { +} diff --git a/srt-cloud-data-server/src/main/java/net/srt/query/ApiConfigQuery.java b/srt-cloud-data-server/src/main/java/net/srt/query/ApiConfigQuery.java new file mode 100644 index 0000000..a9631c1 --- /dev/null +++ b/srt-cloud-data-server/src/main/java/net/srt/query/ApiConfigQuery.java @@ -0,0 +1,22 @@ +package net.srt.query; + +import lombok.Data; +import net.srt.framework.common.query.Query; + +@Data +public class ApiConfigQuery extends Query { + + private Long groupId; + private Long resourceId; + private Long appId; + private String name; + private String path; + private String contentType; + private Integer status; + private Integer sqlDbType; + private Long databaseId; + private Integer privates; + private Integer openTrans; + private Integer queryApply; + private Integer ifMarket; +} diff --git a/srt-cloud-data-server/src/main/java/net/srt/query/ApiLogQuery.java b/srt-cloud-data-server/src/main/java/net/srt/query/ApiLogQuery.java new file mode 100644 index 0000000..09aded7 --- /dev/null +++ b/srt-cloud-data-server/src/main/java/net/srt/query/ApiLogQuery.java @@ -0,0 +1,16 @@ +package net.srt.query; + +import lombok.Data; +import net.srt.framework.common.query.Query; + +/** + * @ClassName ApiLogQuery + * @Description 描述 + * @Author 栗永斌 + */ +@Data +public class ApiLogQuery extends Query { + + private String ip; + private String apiName; +} diff --git a/srt-cloud-data-server/src/main/java/net/srt/service/ApiConfigService.java b/srt-cloud-data-server/src/main/java/net/srt/service/ApiConfigService.java new file mode 100644 index 0000000..83335ce --- /dev/null +++ b/srt-cloud-data-server/src/main/java/net/srt/service/ApiConfigService.java @@ -0,0 +1,38 @@ +package net.srt.service; + +import net.srt.dto.ApiConfigDto; +import net.srt.entity.ApiConfigEntity; +import net.srt.framework.common.page.PageResult; +import net.srt.framework.common.utils.Result; +import net.srt.framework.common.utils.TreeNodeVo; +import net.srt.framework.mybatis.service.BaseService; +import net.srt.query.ApiConfigQuery; +import net.srt.vo.ApiConfig; + +import java.util.List; + +public interface ApiConfigService extends BaseService { + String getIpPort(); + + List listTree(); + + + PageResult page(ApiConfigQuery query); + + ApiConfigEntity getByI(Long id); + + + void update(Long id, ApiConfigEntity vo); + + void xia(Long id); + + + void shang(Long id); + + + + void sav(ApiConfig vo); + + void removeByI(List idList); + +} diff --git a/srt-cloud-data-server/src/main/java/net/srt/service/ApiGroupService.java b/srt-cloud-data-server/src/main/java/net/srt/service/ApiGroupService.java new file mode 100644 index 0000000..df523d0 --- /dev/null +++ b/srt-cloud-data-server/src/main/java/net/srt/service/ApiGroupService.java @@ -0,0 +1,18 @@ +package net.srt.service; + +import net.srt.entity.ApiGroupEntity; +import net.srt.framework.common.utils.TreeNodeVo; +import net.srt.framework.mybatis.service.BaseService; +import net.srt.vo.ApiGroup; + +import java.util.List; + +public interface ApiGroupService extends BaseService { + List listTree(); + + void save(ApiGroup vo); + + void update(ApiGroup vo); + + void delete(Long id); +} diff --git a/srt-cloud-data-server/src/main/java/net/srt/service/ApiLogService.java b/srt-cloud-data-server/src/main/java/net/srt/service/ApiLogService.java new file mode 100644 index 0000000..3404363 --- /dev/null +++ b/srt-cloud-data-server/src/main/java/net/srt/service/ApiLogService.java @@ -0,0 +1,18 @@ +package net.srt.service; + +import net.srt.entity.ApiLogEntity; +import net.srt.framework.common.page.PageResult; +import net.srt.framework.mybatis.service.BaseService; +import net.srt.query.ApiLogQuery; +import net.srt.vo.ApiLog; + +/** + * @ClassName ApiLogService + * @Description 描述 + * @Author 栗永斌 + */ +public interface ApiLogService extends BaseService { + + PageResult pag(ApiLogQuery query); + +} diff --git a/srt-cloud-data-server/src/main/java/net/srt/service/impl/ApiConfigServiceImpl.java b/srt-cloud-data-server/src/main/java/net/srt/service/impl/ApiConfigServiceImpl.java new file mode 100644 index 0000000..e17bf7c --- /dev/null +++ b/srt-cloud-data-server/src/main/java/net/srt/service/impl/ApiConfigServiceImpl.java @@ -0,0 +1,171 @@ +package net.srt.service.impl; + +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.ApiConfigConvert; +import net.srt.convert.ApiGroupConvert; +import net.srt.dto.ApiConfigDto; +import net.srt.entity.ApiConfigEntity; +import net.srt.entity.ApiGroupEntity; +import net.srt.framework.common.page.PageResult; +import net.srt.framework.common.utils.BeanUtil; +import net.srt.framework.common.utils.BuildTreeUtils; +import net.srt.framework.common.utils.Result; +import net.srt.framework.common.utils.TreeNodeVo; +import net.srt.framework.mybatis.service.impl.BaseServiceImpl; +import net.srt.mapper.ApiConfigDao; +import net.srt.query.ApiConfigQuery; +import net.srt.service.ApiConfigService; +import net.srt.vo.ApiConfig; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import srt.cloud.framework.dbswitch.common.util.StringUtil; + +import javax.annotation.Resource; +import java.util.List; + +@Service +@AllArgsConstructor +public class ApiConfigServiceImpl extends BaseServiceImpl implements ApiConfigService { + @Override + public String getIpPort() { + return null; + } + + + /** + * 从数据库中查询并返回树结构的节点列表 + * @return List 树节点列表 + */ + @Override + public List listTree() { + // 创建查询条件 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + // 设置查询条件,排除组织id + dataScopeWithoutOrgId(wrapper); + // 按照排序字段升序排序 + wrapper.orderByAsc(ApiConfigEntity::getOrderNo); + // 从数据库中查询列表数据 + List dataFileCategoryEntities = baseMapper.selectList(wrapper); + // 将数据转换为树节点vo列表 + List treeNodeVos = BeanUtil.copyListProperties(dataFileCategoryEntities, TreeNodeVo::new, (oldItem, newItem) -> { + // 设置树节点的标签为名称 + newItem.setLabel(oldItem.getName()); + // 设置树节点的值为id + newItem.setValue(oldItem.getId()); + // 设置树节点是否不可用,类型为0表示不可用 + newItem.setDisabled(oldItem.getType() == 0); + // 如果树节点路径包含斜杠,则设置父路径为路径截取到倒数第一个斜杠的位置 + if (newItem.getPath().contains("/")) { + newItem.setParentPath(newItem.getPath().substring(0, newItem.getPath().lastIndexOf("/"))); + } + }); + // 调用工具类构建树结构 + return BuildTreeUtils.buildTree(treeNodeVos); + } + + + + + /** + * 分页查询API配置信息 + * + * @param query 查询条件 + * @return 分页结果 + */ + @Override + public PageResult page(ApiConfigQuery query) { + // 调用Mapper层方法,查询分页数据 + IPage page = baseMapper.selectPage(getPage(query), getWrapper(query)); + + // 将查询结果转换为ApiConfig对象列表 + // 返回分页结果 + return new PageResult<>(ApiConfigConvert.INSTANCE.convertList(page.getRecords()), page.getTotal()); + } + + + /** + * 根据ID获取ApiConfigEntity对象 + * + * @param id ID值 + * @return ApiConfigEntity对象 + */ + @Override + public ApiConfigEntity getByI(Long id) { + return id != null ? baseMapper.selectById(id) : null; + } + + @Override + public void update(Long id,ApiConfigEntity vo) { + baseMapper.deleteById(id); + baseMapper.insert(vo); +// if (vo.getType() == 0) { +// ApiGroupEntity apiGroupEntity = new ApiGroupEntity(); +// apiGroupEntity.setId(vo.getId()); +// apiGroupEntity.setVersion(vo.getVersion()); +// apiGroupEntity.setDeleted(vo.getDeleted()); +// apiGroupEntity.setUpdateTime(vo.getUpdateTime()); +// apiGroupEntity.setCreateTime(vo.getCreateTime()); +// apiGroupEntity.setUpdater(vo.getUpdater()); +// } + } + + @Resource + ApiConfigDao apiConfigDto; + + @Override + public void xia(Long id) { + apiConfigDto.xia(id); + } + + + + @Override + public void shang(Long id) { + apiConfigDto.shang(id); + } + + + + @Override + public void sav(ApiConfig vo) { + + + ApiConfigEntity entity = ApiConfigConvert.INSTANCE.convert(vo); + entity.setPath(recursionPath(entity, null)); + entity.setProjectId(getProjectId()); + baseMapper.insert(entity); // 使用 insertSelective() 方法进行插入操作 + } + + + @Override + public void removeByI(List idList) { + baseMapper.deleteBatchIds(idList); + } + + private String recursionPath(ApiConfigEntity groupEntity, String path) { + if (StringUtil.isBlank(path)) { + path = groupEntity.getName(); + } + if (groupEntity.getParentId() != 0) { + ApiConfigEntity parent = getById(groupEntity.getParentId()); + path = parent.getName() + "/" + path; + return recursionPath(parent, path); + } + return path; + } + + private LambdaQueryWrapper getWrapper(ApiConfigQuery query) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.like(StringUtil.isNotBlank(query.getName()), ApiConfigEntity::getName, query.getName()); + wrapper.like(StringUtil.isNotBlank(query.getPath()), ApiConfigEntity::getPath, query.getPath()); +// wrapper.eq(StringUtil.isNotBlank(query.getContentType()), ApiConfigEntity::getContentType, query.getContentType()); +// wrapper.eq(query.getStatus()!= null, ApiConfigEntity::getStatus, query.getStatus()); +// wrapper.eq(query.getSqlDbType() != null, ApiConfigEntity::getSqlDbType, query.getSqlDbType()); +// + return wrapper; + } + +} diff --git a/srt-cloud-data-server/src/main/java/net/srt/service/impl/ApiGroupServiceImpl.java b/srt-cloud-data-server/src/main/java/net/srt/service/impl/ApiGroupServiceImpl.java new file mode 100644 index 0000000..bce878f --- /dev/null +++ b/srt-cloud-data-server/src/main/java/net/srt/service/impl/ApiGroupServiceImpl.java @@ -0,0 +1,93 @@ +package net.srt.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.AllArgsConstructor; +import net.srt.convert.ApiGroupConvert; +import net.srt.entity.ApiConfigEntity; +import net.srt.entity.ApiGroupEntity; +import net.srt.framework.common.exception.ServerException; +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 net.srt.mapper.ApiGroupDao; +import net.srt.service.ApiConfigService; +import net.srt.service.ApiGroupService; +import net.srt.vo.ApiGroup; +import org.springframework.stereotype.Service; +import srt.cloud.framework.dbswitch.common.util.StringUtil; + +import java.util.List; + +@Service +@AllArgsConstructor +public class ApiGroupServiceImpl extends BaseServiceImpl implements ApiGroupService{ +// private final ApiConfigService apiConfigService; + @Override + public List listTree() { + List treeNodeVos = getTreeNodeVos(); + return BuildTreeUtils.buildTree(treeNodeVos); + } + + private List getTreeNodeVos() { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + dataScopeWithoutOrgId(wrapper); + wrapper.orderByAsc(ApiGroupEntity::getOrderNo); + List apiGroupEntities = baseMapper.selectList(wrapper); + return BeanUtil.copyListProperties(apiGroupEntities, TreeNodeVo::new, (oldItem, newItem) -> { + newItem.setLabel(oldItem.getName()); + newItem.setValue(oldItem.getId()); + newItem.setDisabled(oldItem.getType() == 1); + if (newItem.getPath().contains("/")) { + newItem.setParentPath(newItem.getPath().substring(0, newItem.getPath().lastIndexOf("/"))); + } + }); + } + + @Override + public void save(ApiGroup vo) { + ApiGroupEntity entity = ApiGroupConvert.INSTANCE.convert(vo); + entity.setPath(recursionPath(entity, null)); + entity.setProjectId(getProjectId()); + baseMapper.insert(entity); // 使用 insertSelective() 方法进行插入操作 + } + + @Override + public void update(ApiGroup vo) { + ApiGroupEntity entity = ApiGroupConvert.INSTANCE.convert(vo); + entity.setPath(recursionPath(entity, null)); + entity.setProjectId(getProjectId()); + updateById(entity); + } + + private String recursionPath(ApiGroupEntity groupEntity, String path) { + if (StringUtil.isBlank(path)) { + path = groupEntity.getName(); + } + if (groupEntity.getParentId() != 0) { + ApiGroupEntity parent = getById(groupEntity.getParentId()); + path = parent.getName() + "/" + path; + return recursionPath(parent, path); + } + return path; + } + + @Override + public void delete(Long id) { + //查询有没有子节点 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ApiGroupEntity::getParentId, id).last(" limit 1"); + ApiGroupEntity one = baseMapper.selectOne(wrapper); + if (one != null) { + throw new ServerException("存在子节点,不允许删除!"); + } +// //查询有没有api与之关联 +// LambdaQueryWrapper serviceApiConfigWrapper = new LambdaQueryWrapper<>(); +// serviceApiConfigWrapper.eq(ApiConfigEntity::getParentId, id).last(" limit 1"); +// ApiConfigEntity apiConfigEntity = apiConfigService.getOne(serviceApiConfigWrapper); +// if (apiConfigEntity != null) { +// throw new ServerException("节点下有 api 与之关联,不允许删除!"); +// } +// removeById(id); + } +} diff --git a/srt-cloud-data-server/src/main/java/net/srt/service/impl/ApiLogServiceImpl.java b/srt-cloud-data-server/src/main/java/net/srt/service/impl/ApiLogServiceImpl.java new file mode 100644 index 0000000..18e2019 --- /dev/null +++ b/srt-cloud-data-server/src/main/java/net/srt/service/impl/ApiLogServiceImpl.java @@ -0,0 +1,55 @@ +package net.srt.service.impl; + +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.ApiLogConvert; + + +import net.srt.entity.ApiLogEntity; +import net.srt.framework.common.page.PageResult; +import net.srt.framework.mybatis.service.impl.BaseServiceImpl; +import net.srt.mapper.ApiLogDao; + +import net.srt.query.ApiLogQuery; + +import net.srt.service.ApiLogService; +import net.srt.vo.ApiLog; +import org.springframework.stereotype.Service; +import srt.cloud.framework.dbswitch.common.util.StringUtil; + +/** + * @ClassName ApiLogServiceImpl + * @Description 描述 + * @Author 栗永斌 + */ +@Service +@AllArgsConstructor +public class ApiLogServiceImpl extends BaseServiceImpl implements ApiLogService { + + + @Override + public PageResult pag(ApiLogQuery query) { + // 调用Mapper层方法,查询分页数据 + IPage page = baseMapper.selectPage(getPage(query), getWrapper(query)); + + + // 将查询结果转换为ApiConfig对象列表 + // 返回分页结果 + return new PageResult<>(ApiLogConvert.INSTANCE.convertList(page.getRecords()), page.getTotal()); + } + + private LambdaQueryWrapper getWrapper(ApiLogQuery query) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.like(StringUtil.isNotBlank(query.getApiName()), ApiLogEntity::getApiName, query.getApiName()); + wrapper.like(StringUtil.isNotBlank(query.getIp()), ApiLogEntity::getIp, query.getIp()); +// wrapper.eq(StringUtil.isNotBlank(query.getContentType()), ApiConfigEntity::getContentType, query.getContentType()); +// wrapper.eq(query.getStatus()!= null, ApiConfigEntity::getStatus, query.getStatus()); +// wrapper.eq(query.getSqlDbType() != null, ApiConfigEntity::getSqlDbType, query.getSqlDbType()); + + return wrapper; + } + +} diff --git a/srt-cloud-data-server/src/main/java/net/srt/vo/ApiConfig.java b/srt-cloud-data-server/src/main/java/net/srt/vo/ApiConfig.java new file mode 100644 index 0000000..73251a0 --- /dev/null +++ b/srt-cloud-data-server/src/main/java/net/srt/vo/ApiConfig.java @@ -0,0 +1,101 @@ +package net.srt.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +/** +* 数据服务-api配置 +* +* @author zrx 985134801@qq.com +* @since 1.0.0 2023-01-28 +*/ +@Data +public class ApiConfig implements Serializable { + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Long id; + private Integer parentId; + private Integer type; + private String name; + private Integer orderNo; + private String description; + private String path; + private Integer projectId; + private Integer version; + private Integer deleted; + private Integer creator; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + private Integer updater; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date updateTime; + private Integer status; + private String contentType; + private Integer releaseUserId; + private Date releaseTime; + private Integer previlege; + private Integer openTrans; + + + + + + + + + + + + + + + +// @TableId(value = "id", type = IdType.AUTO) +// private Long id; +// private Long groupId; +// private String path; +// private String type; +// private String name; +//// private String note; +// private String sqlText; +// private String sqlSeparator; +// private Integer sqlMaxRow; +// private String sqlParam; +// private String jsonParam; +// private String responseResult; +// private Integer contentType; +// private Integer status +// private Date releaseTime; +// private Long releaseUserId; +// private Integer sqlDbType; +// private Long databaseId; +// private Integer previlege; +// private Integer openTrans; +// private Long projectId; +// private Integer version; +// private Integer deleted; +// private Long creator; +// @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") +// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") +// private Date createTime; +// private Long updater; +// @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") +// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") +// private Date updateTime; +// private Integer requestedTimes; +// private Integer requestedSuccessTimes; +// private Integer requestedFailedTimes; +// private Long authId; +// private String group; +// private String groupPath; + +} diff --git a/srt-cloud-data-server/src/main/java/net/srt/vo/ApiGroup.java b/srt-cloud-data-server/src/main/java/net/srt/vo/ApiGroup.java new file mode 100644 index 0000000..dcaa232 --- /dev/null +++ b/srt-cloud-data-server/src/main/java/net/srt/vo/ApiGroup.java @@ -0,0 +1,25 @@ +package net.srt.vo; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +@Data +public class ApiGroup implements Serializable { + private static final long serialVersionUID = 1L; + private Long id; + private Long parentId; + private Integer type; + private String name; + private String description; + private Integer orderNo; + private String path; + private Long projectId; + private Integer version; + private Integer deleted; + private Long creator; + private Date createTime; + private Long updater; + private Date updateTime; +} diff --git a/srt-cloud-data-server/src/main/java/net/srt/vo/ApiLog.java b/srt-cloud-data-server/src/main/java/net/srt/vo/ApiLog.java new file mode 100644 index 0000000..e45af60 --- /dev/null +++ b/srt-cloud-data-server/src/main/java/net/srt/vo/ApiLog.java @@ -0,0 +1,32 @@ +package net.srt.vo; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * @ClassName ApiLog + * @Description 描述 + * @Author 栗永斌 + */ +@Data +public class ApiLog implements Serializable { + private static final long serialVersionUID = 1L; + + + private Integer id; + private String url; + private Integer duration; + private String ip; + private Integer apiId; + private String error; + private Integer projectId; + private String deleted; + private Integer creator; + private String createTime; + private Integer updater; + private Date updateTime; + + +} diff --git a/srt-cloud-data-server/src/main/resources/auth.yml b/srt-cloud-data-server/src/main/resources/auth.yml new file mode 100644 index 0000000..0e6a006 --- /dev/null +++ b/srt-cloud-data-server/src/main/resources/auth.yml @@ -0,0 +1,7 @@ +auth: + ignore_urls: + - /auth/captcha + - /auth/login + - /auth/send/code + - /auth/mobile + - /upload/** \ No newline at end of file diff --git a/srt-cloud-data-server/src/main/resources/log4j2.xml b/srt-cloud-data-server/src/main/resources/log4j2.xml new file mode 100644 index 0000000..14461eb --- /dev/null +++ b/srt-cloud-data-server/src/main/resources/log4j2.xml @@ -0,0 +1,48 @@ + + + + + ./logs/ + srt-cloud-system + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/srt-cloud-data-server/src/main/resources/mapper/ApiConfigMapper.xml b/srt-cloud-data-server/src/main/resources/mapper/ApiConfigMapper.xml new file mode 100644 index 0000000..a15f3e3 --- /dev/null +++ b/srt-cloud-data-server/src/main/resources/mapper/ApiConfigMapper.xml @@ -0,0 +1,14 @@ + + + + + + + update data_dispatch_catalogue set status = 0 where id = #{id} + + + update data_dispatch_catalogue set status = 1 where id = #{id} + + diff --git a/srt-cloud-framework/srt-cloud-flink/build/app/flink-app-1.14-2.0.0-jar-with-dependencies.jar b/srt-cloud-framework/srt-cloud-flink/build/app/flink-app-1.14-2.0.0-jar-with-dependencies.jar index 0595467..e9979b7 100644 Binary files a/srt-cloud-framework/srt-cloud-flink/build/app/flink-app-1.14-2.0.0-jar-with-dependencies.jar and b/srt-cloud-framework/srt-cloud-flink/build/app/flink-app-1.14-2.0.0-jar-with-dependencies.jar differ diff --git a/srt-cloud-framework/srt-cloud-flink/build/extends/flink-catalog-mysql-1.14-2.0.0.jar b/srt-cloud-framework/srt-cloud-flink/build/extends/flink-catalog-mysql-1.14-2.0.0.jar index e848764..bc7b2a0 100644 Binary files a/srt-cloud-framework/srt-cloud-flink/build/extends/flink-catalog-mysql-1.14-2.0.0.jar and b/srt-cloud-framework/srt-cloud-flink/build/extends/flink-catalog-mysql-1.14-2.0.0.jar differ diff --git a/srt-cloud-framework/srt-cloud-flink/build/extends/flink-client-1.14-2.0.0.jar b/srt-cloud-framework/srt-cloud-flink/build/extends/flink-client-1.14-2.0.0.jar index e6aa6cd..724cdbd 100644 Binary files a/srt-cloud-framework/srt-cloud-flink/build/extends/flink-client-1.14-2.0.0.jar and b/srt-cloud-framework/srt-cloud-flink/build/extends/flink-client-1.14-2.0.0.jar differ diff --git a/srt-cloud-framework/srt-cloud-mybatis/src/main/java/net/srt/framework/mybatis/service/impl/BaseServiceImpl.java b/srt-cloud-framework/srt-cloud-mybatis/src/main/java/net/srt/framework/mybatis/service/impl/BaseServiceImpl.java index 89a427e..077c62b 100644 --- a/srt-cloud-framework/srt-cloud-mybatis/src/main/java/net/srt/framework/mybatis/service/impl/BaseServiceImpl.java +++ b/srt-cloud-framework/srt-cloud-mybatis/src/main/java/net/srt/framework/mybatis/service/impl/BaseServiceImpl.java @@ -198,13 +198,20 @@ public class BaseServiceImpl, T> extends ServiceImpl queryWrapper) { - DataScope dataScope = getDataScope(null, null, null, null, false, true); - if (dataScope != null) { - queryWrapper.apply(dataScope.getSqlFilter()); - } - } +// protected void dataScopeWithoutOrgId(LambdaQueryWrapper queryWrapper) { +// DataScope dataScope = getDataScope(null, null, null, null, false, true); +// if (dataScope != null) { +// queryWrapper.apply(dataScope.getSqlFilter()); +// } +// } + protected void dataScopeWithoutOrgId(LambdaQueryWrapper queryWrapper) { + DataScope dataScope = this.getDataScope((String)null, (String)null, (String)null, (String)null, false, true); + if (dataScope != null) { + queryWrapper.apply(dataScope.getSqlFilter(), new Object[0]); + } + + } /** * MyBatis-Plus 数据权限 */ diff --git a/srt-cloud-module/srt-cloud-datax/pom.xml b/srt-cloud-module/srt-cloud-datax/pom.xml index 4ccd30a..5ba3ab9 100644 --- a/srt-cloud-module/srt-cloud-datax/pom.xml +++ b/srt-cloud-module/srt-cloud-datax/pom.xml @@ -101,11 +101,11 @@ - - com.alibaba.datax - mysqlreader - 0.0.1-SNAPSHOT - + + + + + @@ -117,11 +117,11 @@ - - com.alibaba.datax - oraclereader - 0.0.1-SNAPSHOT - + + + + +