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 2de2c03a4d..781647b6ce 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -819,35 +819,22 @@ public class DataSetTableService { String f = field.substring(0, field.length() - 1); StringBuilder join = new StringBuilder(); - List unions = new ArrayList<>(); for (DataTableInfoCustomUnion dataTableInfoCustomUnion : dataTableInfoDTO.getList()) { for (DataSetTableUnionDTO dto : list) { // 被关联表和自助数据集的表相等 if (StringUtils.equals(dto.getTargetTableId(), dataTableInfoCustomUnion.getTableId())) { - unions.add(dto); - } - } - } - if (CollectionUtils.isNotEmpty(unions)) { - for (int i = 0; i < unions.size(); i++) { - DataSetTableUnionDTO dto = unions.get(i); - DatasetTableField sourceField = dataSetTableFieldsService.get(dto.getSourceTableFieldId()); - DatasetTableField targetField = dataSetTableFieldsService.get(dto.getTargetTableFieldId()); - if (ObjectUtils.isEmpty(sourceField) || ObjectUtils.isEmpty(targetField)) { - DEException.throwException(Translator.get("i18n_dataset_field_delete")); - } - if (i == 0) { + DatasetTableField sourceField = dataSetTableFieldsService.get(dto.getSourceTableFieldId()); + DatasetTableField targetField = dataSetTableFieldsService.get(dto.getTargetTableFieldId()); + if (ObjectUtils.isEmpty(sourceField) || ObjectUtils.isEmpty(targetField)) { + DEException.throwException(Translator.get("i18n_dataset_field_delete")); + } + join.append(convertUnionTypeToSQL(dto.getSourceUnionRelation())) .append(DorisTableUtils.dorisName(dto.getTargetTableId())) .append(" ON ") .append(DorisTableUtils.dorisName(dto.getSourceTableId())).append(".").append(sourceField.getDataeaseName()) .append(" = ") .append(DorisTableUtils.dorisName(dto.getTargetTableId())).append(".").append(targetField.getDataeaseName()); - } else { - join.append(" AND ") - .append(DorisTableUtils.dorisName(dto.getSourceTableId())).append(".").append(sourceField.getDataeaseName()) - .append(" = ") - .append(DorisTableUtils.dorisName(dto.getTargetTableId())).append(".").append(targetField.getDataeaseName()); } } } @@ -893,39 +880,25 @@ public class DataSetTableService { String f = field.substring(0, field.length() - 1); StringBuilder join = new StringBuilder(); - List unions = new ArrayList<>(); for (DataTableInfoCustomUnion dataTableInfoCustomUnion : dataTableInfoDTO.getList()) { for (DataSetTableUnionDTO dto : list) { // 被关联表和自助数据集的表相等 if (StringUtils.equals(dto.getTargetTableId(), dataTableInfoCustomUnion.getTableId())) { - unions.add(dto); - } - } - } - if (CollectionUtils.isNotEmpty(unions)) { - for (int i = 0; i < unions.size(); i++) { - DataSetTableUnionDTO dto = unions.get(i); - DatasetTableField sourceField = dataSetTableFieldsService.get(dto.getSourceTableFieldId()); - DatasetTableField targetField = dataSetTableFieldsService.get(dto.getTargetTableFieldId()); - if (ObjectUtils.isEmpty(sourceField) || ObjectUtils.isEmpty(targetField)) { - DEException.throwException(Translator.get("i18n_dataset_field_delete")); - } - DatasetTable sourceTable = datasetTableMapper.selectByPrimaryKey(dto.getSourceTableId()); - String sourceTableName = new Gson().fromJson(sourceTable.getInfo(), DataTableInfoDTO.class).getTable(); - DatasetTable targetTable = datasetTableMapper.selectByPrimaryKey(dto.getTargetTableId()); - String targetTableName = new Gson().fromJson(targetTable.getInfo(), DataTableInfoDTO.class).getTable(); - if (i == 0) { + DatasetTableField sourceField = dataSetTableFieldsService.get(dto.getSourceTableFieldId()); + DatasetTableField targetField = dataSetTableFieldsService.get(dto.getTargetTableFieldId()); + if (ObjectUtils.isEmpty(sourceField) || ObjectUtils.isEmpty(targetField)) { + DEException.throwException(Translator.get("i18n_dataset_field_delete")); + } + DatasetTable sourceTable = datasetTableMapper.selectByPrimaryKey(dto.getSourceTableId()); + String sourceTableName = new Gson().fromJson(sourceTable.getInfo(), DataTableInfoDTO.class).getTable(); + DatasetTable targetTable = datasetTableMapper.selectByPrimaryKey(dto.getTargetTableId()); + String targetTableName = new Gson().fromJson(targetTable.getInfo(), DataTableInfoDTO.class).getTable(); join.append(convertUnionTypeToSQL(dto.getSourceUnionRelation())) .append(String.format(keyword, targetTableName)) .append(" ON ") .append(String.format(keyword, sourceTableName)).append(".").append(String.format(keyword, sourceField.getOriginName())) .append(" = ") .append(String.format(keyword, targetTableName)).append(".").append(String.format(keyword, targetField.getOriginName())); - } else { - join.append(" AND ") - .append(String.format(keyword, sourceTableName)).append(".").append(String.format(keyword, sourceField.getOriginName())) - .append(" = ") - .append(String.format(keyword, targetTableName)).append(".").append(String.format(keyword, targetField.getOriginName())); } } }