diff --git a/backend/src/main/java/io/dataease/base/mapper/ext/ExtDatasetTableUnionMapper.java b/backend/src/main/java/io/dataease/base/mapper/ext/ExtDatasetTableUnionMapper.java index afb8988f4e..b9b11c6a65 100644 --- a/backend/src/main/java/io/dataease/base/mapper/ext/ExtDatasetTableUnionMapper.java +++ b/backend/src/main/java/io/dataease/base/mapper/ext/ExtDatasetTableUnionMapper.java @@ -1,5 +1,6 @@ package io.dataease.base.mapper.ext; +import io.dataease.base.domain.DatasetTableUnion; import io.dataease.dto.dataset.DataSetTableUnionDTO; import java.util.List; @@ -8,4 +9,8 @@ public interface ExtDatasetTableUnionMapper { List selectBySourceTableId(String tableId); List selectByTargetTableId(String tableId); + + List selectUsedFieldBySource(DatasetTableUnion datasetTableUnion); + + List selectUsedFieldByTarget(DatasetTableUnion datasetTableUnion); } \ No newline at end of file diff --git a/backend/src/main/java/io/dataease/base/mapper/ext/ExtDatasetTableUnionMapper.xml b/backend/src/main/java/io/dataease/base/mapper/ext/ExtDatasetTableUnionMapper.xml index d824e9227e..15dceb504f 100644 --- a/backend/src/main/java/io/dataease/base/mapper/ext/ExtDatasetTableUnionMapper.xml +++ b/backend/src/main/java/io/dataease/base/mapper/ext/ExtDatasetTableUnionMapper.xml @@ -39,4 +39,28 @@ where dtu.target_table_id = #{tableId,jdbcType=VARCHAR} order by dtu.create_time + + + + \ No newline at end of file diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java index 6680619ae4..e2c3910b4d 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -867,14 +867,15 @@ public class DataSetTableService { } public Boolean checkDorisTableIsExists(String id) throws Exception { - Datasource dorisDatasource = (Datasource) CommonBeanFactory.getBean("DorisDatasource"); - JdbcProvider jdbcProvider = CommonBeanFactory.getBean(JdbcProvider.class); - DatasourceRequest datasourceRequest = new DatasourceRequest(); - datasourceRequest.setDatasource(dorisDatasource); - QueryProvider qp = ProviderFactory.getQueryProvider(dorisDatasource.getType()); - datasourceRequest.setQuery(qp.searchTable(DorisTableUtils.dorisName(id))); - List data = jdbcProvider.getData(datasourceRequest); - return CollectionUtils.isNotEmpty(data); +// Datasource dorisDatasource = (Datasource) CommonBeanFactory.getBean("DorisDatasource"); +// JdbcProvider jdbcProvider = CommonBeanFactory.getBean(JdbcProvider.class); +// DatasourceRequest datasourceRequest = new DatasourceRequest(); +// datasourceRequest.setDatasource(dorisDatasource); +// QueryProvider qp = ProviderFactory.getQueryProvider(dorisDatasource.getType()); +// datasourceRequest.setQuery(qp.searchTable(DorisTableUtils.dorisName(id))); +// List data = jdbcProvider.getData(datasourceRequest); +// return CollectionUtils.isNotEmpty(data); + return true; } public void updateDatasetTableStatus(){ diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetTableUnionService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetTableUnionService.java index 12a8004b7a..9ee96a51ce 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableUnionService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableUnionService.java @@ -77,6 +77,7 @@ public class DataSetTableUnionService { } private void checkUnion(DatasetTableUnion datasetTableUnion) { + // check 关联关系是否存在 DatasetTableUnionExample datasetTableUnionExample = new DatasetTableUnionExample(); DatasetTableUnionExample.Criteria criteria = datasetTableUnionExample.createCriteria(); if (StringUtils.isNotEmpty(datasetTableUnion.getId())) { @@ -100,5 +101,11 @@ public class DataSetTableUnionService { if (CollectionUtils.isNotEmpty(sourceResult) || CollectionUtils.isNotEmpty(targetResult)) { throw new RuntimeException(Translator.get("i18n_union_already_exists")); } + // check 同一字段是否在两个关联表中重复出现 + List sourceResult1 = extDatasetTableUnionMapper.selectUsedFieldBySource(datasetTableUnion); + List targetResult1 = extDatasetTableUnionMapper.selectUsedFieldByTarget(datasetTableUnion); + if (CollectionUtils.isNotEmpty(sourceResult1) || CollectionUtils.isNotEmpty(targetResult1)) { + throw new RuntimeException(Translator.get("i18n_union_field_exists")); + } } } diff --git a/backend/src/main/resources/db/migration/V6__alter_table.sql b/backend/src/main/resources/db/migration/V6__alter_table.sql new file mode 100644 index 0000000000..9551f19b98 --- /dev/null +++ b/backend/src/main/resources/db/migration/V6__alter_table.sql @@ -0,0 +1 @@ +ALTER TABLE `dataease`.`dataset_table` ADD COLUMN `sync_status` VARCHAR(45) NULL AFTER `create_time`; diff --git a/backend/src/main/resources/i18n/messages_en_US.properties b/backend/src/main/resources/i18n/messages_en_US.properties index bb404ef8ed..f7882d0ab7 100644 --- a/backend/src/main/resources/i18n/messages_en_US.properties +++ b/backend/src/main/resources/i18n/messages_en_US.properties @@ -236,4 +236,5 @@ i18n_same_folder_can_not_repeat=Same Folder Can Not Repeat i18n_default_panel=Default Panel i18n_panel_list=Panel List i18n_processing_data=Processing data now, Refresh later -i18n_union_already_exists=Union relation already exists \ No newline at end of file +i18n_union_already_exists=Union relation already exists +i18n_union_field_exists=The same field can't in two dataset diff --git a/backend/src/main/resources/i18n/messages_zh_CN.properties b/backend/src/main/resources/i18n/messages_zh_CN.properties index 3d91c59ea5..e6782ea459 100644 --- a/backend/src/main/resources/i18n/messages_zh_CN.properties +++ b/backend/src/main/resources/i18n/messages_zh_CN.properties @@ -238,3 +238,4 @@ i18n_default_panel=默认仪表盘 i18n_panel_list=仪表盘列表 i18n_processing_data=正在处理数据,稍后刷新 i18n_union_already_exists=关联关系已存在 +i18n_union_field_exists=两个数据集之间关联不能出现多次相同字段 diff --git a/backend/src/main/resources/i18n/messages_zh_TW.properties b/backend/src/main/resources/i18n/messages_zh_TW.properties index d309238695..e57835050b 100644 --- a/backend/src/main/resources/i18n/messages_zh_TW.properties +++ b/backend/src/main/resources/i18n/messages_zh_TW.properties @@ -237,4 +237,5 @@ i18n_same_folder_can_not_repeat=相同的目录下名称不能重复 i18n_default_panel=默认仪表盘 i18n_panel_list=仪表盘列表 i18n_processing_data=正在處理數據,稍後刷新 -i18n_union_already_exists=關聯關系已存在 \ No newline at end of file +i18n_union_already_exists=關聯關系已存在 +i18n_union_field_exists=兩個數據集之間關聯不能出現多次相同字段