Commit c602c70f by yuwei

项目初始化

parent a67d3f4b
...@@ -155,10 +155,13 @@ public class MetadataColumnController extends BaseController { ...@@ -155,10 +155,13 @@ public class MetadataColumnController extends BaseController {
* @return * @return
*/ */
@ApiOperation(value = "获取层级树", notes = "根据url的层级来获取树对象") @ApiOperation(value = "获取层级树", notes = "根据url的层级来获取树对象")
@ApiImplicitParam(name = "level", value = "层级", required = true, dataType = "String", paramType = "path") @ApiImplicitParams({
@ApiImplicitParam(name = "level", value = "层级", required = true, dataType = "String", paramType = "path"),
@ApiImplicitParam(name = "metadataColumnQuery", value = "查询实体metadataColumnQuery", required = false, dataType = "MetadataColumnQuery")
})
@GetMapping("/tree/{level}") @GetMapping("/tree/{level}")
public R getDataMetadataTree(@PathVariable String level) { public R getDataMetadataTree(@PathVariable String level, MetadataColumnQuery metadataColumnQuery) {
List<MetadataTreeVo> list = metadataColumnService.getDataMetadataTree(level); List<MetadataTreeVo> list = metadataColumnService.getDataMetadataTree(level, metadataColumnQuery);
return R.ok().setData(list); return R.ok().setData(list);
} }
} }
...@@ -3,6 +3,7 @@ package cn.datax.service.data.metadata.service; ...@@ -3,6 +3,7 @@ package cn.datax.service.data.metadata.service;
import cn.datax.service.data.metadata.api.dto.MetadataColumnDto; import cn.datax.service.data.metadata.api.dto.MetadataColumnDto;
import cn.datax.common.base.BaseService; import cn.datax.common.base.BaseService;
import cn.datax.service.data.metadata.api.entity.MetadataColumnEntity; import cn.datax.service.data.metadata.api.entity.MetadataColumnEntity;
import cn.datax.service.data.metadata.api.query.MetadataColumnQuery;
import cn.datax.service.data.metadata.api.vo.MetadataTreeVo; import cn.datax.service.data.metadata.api.vo.MetadataTreeVo;
import java.util.List; import java.util.List;
...@@ -27,5 +28,5 @@ public interface MetadataColumnService extends BaseService<MetadataColumnEntity> ...@@ -27,5 +28,5 @@ public interface MetadataColumnService extends BaseService<MetadataColumnEntity>
void deleteMetadataColumnBatch(List<String> ids); void deleteMetadataColumnBatch(List<String> ids);
List<MetadataTreeVo> getDataMetadataTree(String level); List<MetadataTreeVo> getDataMetadataTree(String level, MetadataColumnQuery metadataColumnQuery);
} }
...@@ -6,6 +6,7 @@ import cn.datax.service.data.metadata.api.entity.MetadataColumnEntity; ...@@ -6,6 +6,7 @@ import cn.datax.service.data.metadata.api.entity.MetadataColumnEntity;
import cn.datax.service.data.metadata.api.entity.MetadataSourceEntity; import cn.datax.service.data.metadata.api.entity.MetadataSourceEntity;
import cn.datax.service.data.metadata.api.entity.MetadataTableEntity; import cn.datax.service.data.metadata.api.entity.MetadataTableEntity;
import cn.datax.service.data.metadata.api.enums.DataLevel; import cn.datax.service.data.metadata.api.enums.DataLevel;
import cn.datax.service.data.metadata.api.query.MetadataColumnQuery;
import cn.datax.service.data.metadata.api.vo.MetadataTreeVo; import cn.datax.service.data.metadata.api.vo.MetadataTreeVo;
import cn.datax.service.data.metadata.dao.MetadataSourceDao; import cn.datax.service.data.metadata.dao.MetadataSourceDao;
import cn.datax.service.data.metadata.dao.MetadataTableDao; import cn.datax.service.data.metadata.dao.MetadataTableDao;
...@@ -83,9 +84,11 @@ public class MetadataColumnServiceImpl extends BaseServiceImpl<MetadataColumnDao ...@@ -83,9 +84,11 @@ public class MetadataColumnServiceImpl extends BaseServiceImpl<MetadataColumnDao
} }
@Override @Override
public List<MetadataTreeVo> getDataMetadataTree(String level) { public List<MetadataTreeVo> getDataMetadataTree(String level, MetadataColumnQuery metadataColumnQuery) {
List<MetadataSourceEntity> sourceList = metadataSourceDao.selectList(Wrappers.emptyWrapper()); List<MetadataSourceEntity> sourceList = metadataSourceDao.selectList(Wrappers.<MetadataSourceEntity>lambdaQuery()
List<MetadataTableEntity> tableList = metadataTableDao.selectList(Wrappers.emptyWrapper()); .eq(StrUtil.isNotBlank(metadataColumnQuery.getSourceId()), MetadataSourceEntity::getId, metadataColumnQuery.getSourceId()));
List<MetadataTableEntity> tableList = metadataTableDao.selectList(Wrappers.<MetadataTableEntity>lambdaQuery()
.eq(StrUtil.isNotBlank(metadataColumnQuery.getTableId()), MetadataTableEntity::getId, metadataColumnQuery.getTableId()));
List<MetadataColumnEntity> columnList = metadataColumnDao.selectList(Wrappers.emptyWrapper()); List<MetadataColumnEntity> columnList = metadataColumnDao.selectList(Wrappers.emptyWrapper());
List<MetadataTreeVo> list = sourceList.stream().filter(s -> DataConstant.EnableState.ENABLE.getKey().equals(s.getStatus())) List<MetadataTreeVo> list = sourceList.stream().filter(s -> DataConstant.EnableState.ENABLE.getKey().equals(s.getStatus()))
.map(m -> { .map(m -> {
......
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-netflix-eureka-client:2.2.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter:2.2.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-context:2.2.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.security:spring-security-crypto:5.3.3.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-commons:2.2.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.security:spring-security-rsa:1.0.9.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.64" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.64" level="project" />
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-netflix-hystrix:2.2.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-aop:5.2.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-netflix-eureka-client:2.2.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.netflix.eureka:eureka-client:1.9.25" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.jettison:jettison:1.3.7" level="project" />
<orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" />
<orderEntry type="library" name="Maven: com.netflix.netflix-commons:netflix-eventbus:0.3.0" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.netflix-commons:netflix-infix:0.3.0" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: commons-jxpath:commons-jxpath:1.3" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: joda-time:joda-time:2.10.6" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.antlr:antlr-runtime:3.4" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.antlr:stringtemplate:3.2.1" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: antlr:antlr:2.7.7" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: com.google.code.gson:gson:2.8.6" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.commons:commons-math:2.2" level="project" />
<orderEntry type="library" name="Maven: com.netflix.archaius:archaius-core:0.7.6" level="project" />
<orderEntry type="library" name="Maven: javax.ws.rs:jsr311-api:1.1.1" level="project" />
<orderEntry type="library" name="Maven: com.netflix.servo:servo-core:0.12.21" level="project" />
<orderEntry type="library" name="Maven: com.sun.jersey:jersey-core:1.19.1" level="project" />
<orderEntry type="library" name="Maven: com.sun.jersey:jersey-client:1.19.1" level="project" />
<orderEntry type="library" name="Maven: com.sun.jersey.contribs:jersey-apache-client4:1.19.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.12" level="project" />
<orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.13" level="project" />
<orderEntry type="library" name="Maven: commons-codec:commons-codec:1.13" level="project" />
<orderEntry type="library" name="Maven: commons-configuration:commons-configuration:1.10" level="project" />
<orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
<orderEntry type="library" name="Maven: com.google.inject:guice:4.1.0" level="project" />
<orderEntry type="library" name="Maven: javax.inject:javax.inject:1" level="project" />
<orderEntry type="library" name="Maven: aopalliance:aopalliance:1.0" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.11.1" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.11.1" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.11.1" level="project" />
<orderEntry type="library" name="Maven: com.netflix.eureka:eureka-core:1.9.25" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.woodstox:woodstox-core:5.3.0" level="project" />
<orderEntry type="library" name="Maven: org.codehaus.woodstox:stax2-api:4.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-netflix-archaius:2.2.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-netflix-archaius:2.2.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-netflix-ribbon:2.2.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon:2.3.0" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.ribbon:ribbon-transport:2.3.0" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: io.reactivex:rxnetty-contexts:0.4.9" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: io.reactivex:rxnetty-servo:0.4.9" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: io.reactivex:rxnetty:0.4.9" level="project" />
<orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon-core:2.3.0" level="project" />
<orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon-httpclient:2.3.0" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.netflix-commons:netflix-commons-util:0.3.0" level="project" />
<orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon-loadbalancer:2.3.0" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: com.netflix.netflix-commons:netflix-statistics:0.1.1" level="project" />
<orderEntry type="library" name="Maven: io.reactivex:rxjava:1.3.8" level="project" />
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-loadbalancer:2.2.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-loadbalancer:2.2.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-validation:2.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: jakarta.validation:jakarta.validation-api:2.0.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:9.0.34" level="project" />
<orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.0.19.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.4.1.Final" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml:classmate:1.5.1" level="project" />
<orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.3.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.projectreactor.addons:reactor-extra:3.3.3.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-cache:2.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.2.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.stoyanr:evictor:1.0.0" level="project" />
<orderEntry type="library" name="Maven: com.netflix.ribbon:ribbon-eureka:2.3.0" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
<orderEntry type="library" name="Maven: com.thoughtworks.xstream:xstream:1.4.11.1" level="project" />
<orderEntry type="library" name="Maven: xmlpull:xmlpull:1.1.3.1" level="project" />
<orderEntry type="library" name="Maven: xpp3:xpp3_min:1.1.4c" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-configuration-processor:2.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-actuator:2.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.12.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.13.3" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.30" level="project" />
<orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.25" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-actuator-autoconfigure:2.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-actuator:2.2.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context:5.2.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-beans:5.2.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.2.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.11.1" level="project" />
<orderEntry type="library" name="Maven: io.micrometer:micrometer-core:1.5.3" level="project" />
<orderEntry type="library" name="Maven: org.hdrhistogram:HdrHistogram:2.1.12" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.latencyutils:LatencyUtils:2.0.3" level="project" />
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-starter-netflix-hystrix:2.2.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.cloud:spring-cloud-netflix-ribbon:2.2.4.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.netflix.hystrix:hystrix-core:1.5.18" level="project" />
<orderEntry type="library" name="Maven: com.netflix.hystrix:hystrix-serialization:1.5.18" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: com.fasterxml.jackson.module:jackson-module-afterburner:2.11.1" level="project" />
<orderEntry type="library" name="Maven: com.netflix.hystrix:hystrix-metrics-event-stream:1.5.18" level="project" />
<orderEntry type="library" name="Maven: com.netflix.hystrix:hystrix-javanica:1.5.18" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.commons:commons-lang3:3.9" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.ow2.asm:asm:5.0.4" level="project" />
<orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.5" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:guava:29.0-jre" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" />
<orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
<orderEntry type="library" name="Maven: org.checkerframework:checker-qual:2.11.1" level="project" />
<orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.3.4" level="project" />
<orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" />
<orderEntry type="library" name="Maven: io.reactivex:rxjava-reactive-streams:1.2.1" level="project" />
<orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.2.7.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:2.2.7.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.2.7.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.4.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:1.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: jakarta.xml.bind:jakarta.xml.bind-api:2.3.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: jakarta.activation:jakarta.activation-api:1.2.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter:5.6.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-api:5.6.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.opentest4j:opentest4j:1.2.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-commons:1.6.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-params:5.6.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-engine:5.6.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.vintage:junit-vintage-engine:5.6.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.apiguardian:apiguardian-api:1.1.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-engine:1.6.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.12" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-junit-jupiter:3.1.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:3.13.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest:2.1" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:3.1.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy:1.10.10" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy-agent:1.10.10" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.6" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.5.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-core:5.2.8.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.2.8.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:5.2.8.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.xmlunit:xmlunit-core:2.6.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.projectlombok:lombok:1.18.12" level="project" />
</component>
</module>
\ No newline at end of file
...@@ -53,9 +53,10 @@ export function updateDataColumn (data) { ...@@ -53,9 +53,10 @@ export function updateDataColumn (data) {
}) })
} }
export function getDataMetadataTree (level) { export function getDataMetadataTree (level, data) {
return request({ return request({
url: '/data/metadata/columns/tree/' + level, url: '/data/metadata/columns/tree/' + level,
method: 'get' method: 'get',
params: data
}) })
} }
...@@ -521,11 +521,11 @@ export default { ...@@ -521,11 +521,11 @@ export default {
} }
}) || {} }) || {}
this.form2 = this.form1.executeConfig this.form2 = this.form1.executeConfig
this.form2.table = {id: this.form2.tableId} this.form2.table = { id: this.form2.tableId }
this.form3.reqParams = this.form1.reqParams this.form3.reqParams = this.form1.reqParams
this.form3.resParams = this.form1.resParams this.form3.resParams = this.form1.resParams
if (this.form2.configType === '1') { if (this.form2.configType === '1') {
this.tableOptions = await listDataTable({sourceId: this.form2.sourceId}).then(response => { this.tableOptions = await listDataTable({ sourceId: this.form2.sourceId }).then(response => {
if (response.success) { if (response.success) {
return response.data return response.data
} }
......
...@@ -222,8 +222,7 @@ export default { ...@@ -222,8 +222,7 @@ export default {
}, },
/** 查询树结构 */ /** 查询树结构 */
getTree () { getTree () {
let level = 'table' getDataMetadataTree('table', {}).then(response => {
getDataMetadataTree(level).then(response => {
if (response.success) { if (response.success) {
const { data } = response const { data } = response
this.treeOptions = data this.treeOptions = data
......
<template> <template>
<div class="app-container"> <div class="app-container">
DataMap <el-card class="box-card" shadow="always">
<div :style="classCardbody">
<el-form :inline="true" :model="searchForm">
<el-form-item label="数据库">
<el-select v-model="searchForm.sourceId" placeholder="数据库">
<el-option
v-for="item in sourceOptions"
:key="item.id"
:label="item.sourceName"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="数据表">
<el-select v-model="searchForm.tableId" clearable placeholder="数据表">
<el-option
v-for="item in tableOptions"
:key="item.id"
:label="item.tableComment ? item.tableComment : item.tableName"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" :disabled="btnEnable" @click="onSubmit">查询</el-button>
</el-form-item>
</el-form>
<div class="line"></div>
<div id="chart" :style="{width: '100%', height: '85%'}"></div>
</div>
</el-card>
</div> </div>
</template> </template>
<script> <script>
import { listDataSource } from '@/api/metadata/datasource'
import { listDataTable } from '@/api/metadata/datatable'
import { getDataMetadataTree } from '@/api/metadata/datacolumn'
import echarts from 'echarts'
export default { export default {
name: 'DataMap' name: 'DataMap',
data: function () {
return {
classCardbody: {
overflow: 'auto',
height: document.body.offsetHeight - 170 + 'px'
},
searchForm: {
sourceId: '',
tableId: ''
},
btnEnable: true,
sourceOptions: [],
tableOptions: [],
treeData: [],
chart: null,
chartList: [],
chartLinks: [],
chartLegend: [],
colors: [{
c1: '#00c7ef',
c2: '#0AF3FF'
},
{
c1: '#FF8E14',
c2: '#FFA12F'
},
{
c1: '#AF5AFF',
c2: '#B62AFF'
},
{
c1: '#25dd59',
c2: '#29f463'
},
{
c1: '#6E35FF',
c2: '#6E67FF'
},
{
c1: '#002AFF',
c2: '#0048FF'
},
{
c1: '#8CD282',
c2: '#95F300'
},
{
c1: '#3B0EFF',
c2: '#604BFF'
},
{
c1: '#00BE74',
c2: '#04FDB8'
},
{
c1: '#4a3ac6',
c2: '#604BFF'
}
]
}
},
created () {
this.getDataSourceList()
},
methods: {
getDataSourceList () {
listDataSource().then(response => {
if (response.success) {
this.sourceOptions = response.data
}
})
},
getDataTableList (sourceId) {
let data = {}
data.sourceId = sourceId
listDataTable(data).then(response => {
if (response.success) {
this.tableOptions = response.data
}
})
},
onSubmit () {
getDataMetadataTree('column', { sourceId: this.searchForm.sourceId, tableId: this.searchForm.tableId }).then(response => {
if (response.success) {
const { data } = response
this.treeData = data
this.initChart()
}
})
},
handleList (arr, idx, color, category) {
arr.forEach((item, index) => {
// 设置节点大小
let symbolSize = 10
switch (idx) {
case 0:
symbolSize = 70
break
case 1:
symbolSize = 50
break
default:
symbolSize = 10
break
}
// 每个节点所对应的文本标签的样式
let label = null
switch (idx) {
case 0:
case 1:
label = {
position: 'inside',
rotate: 0
}
break
default:
break
}
// 计算出颜色,从第二级开始
if (idx === 0) {
color = this.colors[0]
}
if (idx === 1) {
color = this.colors.find((itemm, eq) => eq === index % 10)
this.chartLegend.push(item.label)
}
// 设置线条颜色
let lineStyle = {
color: color.c2
}
// 设置节点样式
let bgcolor = null
if (idx === 0) {
bgcolor = {
type: 'radial',
x: 0.5,
y: 0.5,
r: 0.5,
colorStops: [{
offset: 0,
color: color.c1 // 0% 处的颜色
},
{
offset: 0.8,
color: color.c1 // 80% 处的颜色
},
{
offset: 1,
color: 'rgba(0, 0, 0, 0.3)' // 100% 处的颜色
}
],
global: false
}
} else {
bgcolor = {
type: 'radial',
x: 0.5,
y: 0.5,
r: 0.5,
colorStops: [{
offset: 0,
color: color.c1 // 0% 处的颜色
},
{
offset: 0.4,
color: color.c1 // 0% 处的颜色
},
{
offset: 1,
color: color.c2 // 100% 处的颜色
}
],
global: false
}
}
let itemStyle = null
if (item.list && item.list.length !== 0) {
// 非子节点
itemStyle = {
borderColor: color.c2,
color: bgcolor
}
} else {
// 子节点
item.isEnd = true
if (item.isdisease === 'true') {
itemStyle = {
color: color.c2,
borderColor: color.c2
}
} else {
itemStyle = {
color: 'transparent',
borderColor: color.c2
}
}
}
// 可以改变来实现节点发光效果,但体验不好
itemStyle = Object.assign(itemStyle, {
shadowColor: 'rgba(255, 255, 255, 0.5)',
shadowBlur: 10
})
if (idx === 1) {
category = item.name
}
let obj = {
name: item.name,
symbolSize: symbolSize,
category: category,
label,
color: bgcolor,
itemStyle,
lineStyle
}
obj = Object.assign(item, obj)
if (idx === 0) {
obj = Object.assign(obj, {
root: true
})
}
if (item.list && item.list.length === 0) {
obj = Object.assign(obj, {
isEnd: true
})
}
this.chartList.push(obj)
if (item.list && item.list.length > 0) {
this.handleList(item.list, idx + 1, color, category)
}
})
},
handleLink (arr, idx, color) {
arr.forEach(item => {
if (item.list) {
item.list.forEach((item2, eq) => {
if (idx === 0) {
color = this.colors.find((itemm, eq2) => eq2 === eq % 10)
}
let lineStyle = null
switch (idx) {
case 0:
if (item2.list.length > 0) {
lineStyle = {
normal: {
color: 'target'
}
}
} else {
lineStyle = {
normal: {
color: color.c2
}
}
}
break
default:
lineStyle = {
normal: {
color: 'source'
}
}
break
}
let obj = {
source: item.label,
target: item2.label,
lineStyle
}
this.chartLinks.push(obj)
if (item2.list && item.list.length > 0) {
this.handleLink(item.list, idx + 1)
}
})
}
})
},
initChart () {
this.chart = echarts.init(document.getElementById('chart'))
this.chart.showLoading()
// 获取表名
let categories = this.treeData[0].children.map(item => {
return {
name: item.label
}
})
// 计算list
this.handleList(JSON.parse(JSON.stringify(this.treeData)), 0)
// 计算links
this.handleLink(JSON.parse(JSON.stringify(this.treeData)), 0)
// 绘制图表
const option = {
backgroundColor: '#000',
toolbox: {
show: true,
left: 'right',
right: 20,
top: 'bottom',
bottom: 20
},
legend: {
show: true,
data: this.chartLegend,
textStyle: {
color: '#fff',
fontSize: 10
},
// inactiveColor: "#fff",
icon: 'circle',
type: 'scroll',
orient: 'vertical',
left: 'right',
right: 20,
top: 20,
bottom: 80,
// itemWidth: 12,
// itemHeight: 12,
pageIconColor: '#00f6ff',
pageIconInactiveColor: '#fff',
pageIconSize: 12,
pageTextStyle: {
color: '#fff',
fontSize: 12
}
},
tooltip: {
trigger: 'item',
triggerOn: 'click',
formatter (params) {
return params.data.label
}
},
selectedMode: 'false',
bottom: 20,
left: 0,
right: 0,
top: 0,
animationDuration: 1500,
animationEasingUpdate: 'quinticInOut',
series: [{
name: '知识图谱',
type: 'graph',
hoverAnimation: true,
layout: 'force',
force: {
repulsion: 300,
edgeLength: 100
},
nodeScaleRatio: 0.6,
draggable: true,
roam: true,
symbol: 'circle',
data: this.chartList,
links: this.chartLinks,
categories: categories,
focusNodeAdjacency: true,
scaleLimit: {
// 所属组件的z分层,z值小的图形会被z值大的图形覆盖
min: 0.5, // 最小的缩放值
max: 9 // 最大的缩放值
},
edgeSymbol: ['circle', 'arrow'],
edgeSymbolSize: [4, 8],
label: {
normal: {
show: true,
position: 'right',
color: '#fff',
distance: 5,
fontSize: 10
}
},
lineStyle: {
normal: {
width: 1.5,
curveness: 0,
type: 'solid'
}
}
}]
}
this.chart.setOption(option)
this.chart.hideLoading()
}
},
beforeDestroy () {
if (!this.chart) {
return false
}
this.chart.dispose()
this.chart = null
},
watch: {
'searchForm.sourceId': {
immediate: true,
// handler:是一个回调函数,即监听到变化应该执行的函数
handler (value) {
if (value) {
// 清空数据
this.searchForm.tableId = ''
this.getDataTableList(value)
this.btnEnable = false
}
}
}
}
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.line {
height: 1px;
background-color: #e0e6ed;
}
</style> </style>
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
<el-option label="数据表" value="2"></el-option> <el-option label="数据表" value="2"></el-option>
<el-option label="数据元" value="3"></el-option> <el-option label="数据元" value="3"></el-option>
</el-select> </el-select>
<el-button slot="append" icon="el-icon-search"></el-button> <el-button slot="append" :disabled="btnEnable" icon="el-icon-search"></el-button>
</el-input> </el-input>
</el-col> </el-col>
</el-row> </el-row>
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
<el-option label="数据表" value="2"></el-option> <el-option label="数据表" value="2"></el-option>
<el-option label="数据元" value="3"></el-option> <el-option label="数据元" value="3"></el-option>
</el-select> </el-select>
<el-button slot="append" icon="el-icon-search" @click="search"></el-button> <el-button slot="append" icon="el-icon-search" :disabled="btnEnable" @click="search"></el-button>
</el-input> </el-input>
</div> </div>
</div> </div>
...@@ -51,14 +51,30 @@ export default { ...@@ -51,14 +51,30 @@ export default {
height: document.body.offsetHeight - 170 + 'px' height: document.body.offsetHeight - 170 + 'px'
}, },
searchExecuting: false, searchExecuting: false,
type: '',
keyword: '', keyword: '',
type: '' btnEnable: true
} }
}, },
methods: { methods: {
search () { search () {
this.searchExecuting = true this.searchExecuting = true
} }
},
computed: {
listenChange () {
const { type, keyword } = this
return { type, keyword }
}
},
watch: {
listenChange (val) {
if (val.type && val.keyword) {
this.btnEnable = false
} else {
this.btnEnable = true
}
}
} }
} }
</script> </script>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment