From ee3c99e1770f6971e884464000dc384644a5552d Mon Sep 17 00:00:00 2001 From: junjie Date: Tue, 25 May 2021 11:03:55 +0800 Subject: [PATCH] =?UTF-8?q?feat(backend):=E5=85=B3=E8=81=94=E8=A7=86?= =?UTF-8?q?=E5=9B=BE=E8=A1=A8=E3=80=81=E5=AD=97=E6=AE=B5=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E5=85=B3=E8=81=94=E6=A0=A1=E9=AA=8C=20=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataset/DataSetTableUnionService.java | 29 +++++++++++++++++++ .../resources/i18n/messages_en_US.properties | 3 +- .../resources/i18n/messages_zh_CN.properties | 1 + .../resources/i18n/messages_zh_TW.properties | 3 +- 4 files changed, 34 insertions(+), 2 deletions(-) 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 0c27d50439..3c8ec99224 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableUnionService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableUnionService.java @@ -1,10 +1,13 @@ package io.dataease.service.dataset; import io.dataease.base.domain.DatasetTableUnion; +import io.dataease.base.domain.DatasetTableUnionExample; import io.dataease.base.mapper.DatasetTableUnionMapper; import io.dataease.base.mapper.ext.ExtDatasetTableUnionMapper; import io.dataease.commons.utils.AuthUtils; import io.dataease.dto.dataset.DataSetTableUnionDTO; +import io.dataease.i18n.Translator; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -28,6 +31,7 @@ public class DataSetTableUnionService { private ExtDatasetTableUnionMapper extDatasetTableUnionMapper; public DatasetTableUnion save(DatasetTableUnion datasetTableUnion) { + checkUnion(datasetTableUnion); if (StringUtils.isEmpty(datasetTableUnion.getId())) { datasetTableUnion.setId(UUID.randomUUID().toString()); datasetTableUnion.setCreateBy(AuthUtils.getUser().getUsername()); @@ -71,4 +75,29 @@ public class DataSetTableUnionService { sourceList.sort(Comparator.comparing(DatasetTableUnion::getCreateTime)); return sourceList; } + + private void checkUnion(DatasetTableUnion datasetTableUnion) { + DatasetTableUnionExample datasetTableUnionExample = new DatasetTableUnionExample(); + DatasetTableUnionExample.Criteria criteria = datasetTableUnionExample.createCriteria(); + if (StringUtils.isNotEmpty(datasetTableUnion.getId())) { + criteria.andIdNotEqualTo(datasetTableUnion.getId()); + } + criteria.andSourceTableIdEqualTo(datasetTableUnion.getSourceTableId()); + criteria.andSourceTableFieldIdEqualTo(datasetTableUnion.getSourceTableFieldId()); + criteria.andTargetTableIdEqualTo(datasetTableUnion.getTargetTableId()); + criteria.andTargetTableFieldIdEqualTo(datasetTableUnion.getTargetTableFieldId()); + List sourceResult = datasetTableUnionMapper.selectByExample(datasetTableUnionExample); + datasetTableUnionExample.clear(); + if (StringUtils.isNotEmpty(datasetTableUnion.getId())) { + criteria.andIdNotEqualTo(datasetTableUnion.getId()); + } + criteria.andSourceTableIdEqualTo(datasetTableUnion.getTargetTableId()); + criteria.andSourceTableFieldIdEqualTo(datasetTableUnion.getTargetTableFieldId()); + criteria.andTargetTableIdEqualTo(datasetTableUnion.getSourceTableId()); + criteria.andTargetTableFieldIdEqualTo(datasetTableUnion.getSourceTableFieldId()); + List targetResult = datasetTableUnionMapper.selectByExample(datasetTableUnionExample); + if (CollectionUtils.isNotEmpty(sourceResult) || CollectionUtils.isNotEmpty(targetResult)) { + throw new RuntimeException(Translator.get("i18n_union_already_exists")); + } + } } diff --git a/backend/src/main/resources/i18n/messages_en_US.properties b/backend/src/main/resources/i18n/messages_en_US.properties index b8488fb325..bb404ef8ed 100644 --- a/backend/src/main/resources/i18n/messages_en_US.properties +++ b/backend/src/main/resources/i18n/messages_en_US.properties @@ -235,4 +235,5 @@ i18n_cron_expression_error=Cron expression error 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 \ No newline at end of file +i18n_processing_data=Processing data now, Refresh later +i18n_union_already_exists=Union relation already exists \ No newline at end of file diff --git a/backend/src/main/resources/i18n/messages_zh_CN.properties b/backend/src/main/resources/i18n/messages_zh_CN.properties index 428ee4eab3..3d91c59ea5 100644 --- a/backend/src/main/resources/i18n/messages_zh_CN.properties +++ b/backend/src/main/resources/i18n/messages_zh_CN.properties @@ -237,3 +237,4 @@ i18n_same_folder_can_not_repeat=相同的目录下名称不能重复 i18n_default_panel=默认仪表盘 i18n_panel_list=仪表盘列表 i18n_processing_data=正在处理数据,稍后刷新 +i18n_union_already_exists=关联关系已存在 diff --git a/backend/src/main/resources/i18n/messages_zh_TW.properties b/backend/src/main/resources/i18n/messages_zh_TW.properties index 4307cc1605..d309238695 100644 --- a/backend/src/main/resources/i18n/messages_zh_TW.properties +++ b/backend/src/main/resources/i18n/messages_zh_TW.properties @@ -236,4 +236,5 @@ i18n_cron_expression_error=Cron表達式校驗錯誤 i18n_same_folder_can_not_repeat=相同的目录下名称不能重复 i18n_default_panel=默认仪表盘 i18n_panel_list=仪表盘列表 -i18n_processing_data=正在處理數據,稍後刷新 \ No newline at end of file +i18n_processing_data=正在處理數據,稍後刷新 +i18n_union_already_exists=關聯關系已存在 \ No newline at end of file