diff --git a/core/backend/pom.xml b/core/backend/pom.xml index 0c95790bef..ec135f10b9 100644 --- a/core/backend/pom.xml +++ b/core/backend/pom.xml @@ -109,7 +109,7 @@ com.github.jsqlparser jsqlparser - 4.6 + 4.8 org.apache.shiro diff --git a/core/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java b/core/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java index 28847c937f..2a04280eb9 100644 --- a/core/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/core/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -69,6 +69,7 @@ import net.sf.jsqlparser.parser.CCJSqlParserUtil; import net.sf.jsqlparser.statement.Statement; import net.sf.jsqlparser.statement.select.*; import net.sf.jsqlparser.util.deparser.ExpressionDeParser; +import net.sf.jsqlparser.util.deparser.SelectDeParser; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; @@ -179,8 +180,7 @@ public class DataSetTableService { } private void extractData(DataSetTableRequest datasetTable) throws Exception { - if (datasetTable.getMode() == 1 && StringUtils.isNotEmpty(datasetTable.getSyncType()) - && datasetTable.getSyncType().equalsIgnoreCase("sync_now")) { + if (datasetTable.getMode() == 1 && StringUtils.isNotEmpty(datasetTable.getSyncType()) && datasetTable.getSyncType().equalsIgnoreCase("sync_now")) { DataSetTaskRequest dataSetTaskRequest = new DataSetTaskRequest(); DatasetTableTask datasetTableTask = new DatasetTableTask(); datasetTableTask.setTableId(datasetTable.getId()); @@ -203,8 +203,7 @@ public class DataSetTableService { if (StringUtils.isEmpty(datasetTable.getId())) { List list = new ArrayList<>(); if (datasetTable.isMergeSheet()) { - Map> map = datasetTable.getSheets().stream() - .collect(Collectors.groupingBy(ExcelSheetData::getFieldsMd5)); + Map> map = datasetTable.getSheets().stream().collect(Collectors.groupingBy(ExcelSheetData::getFieldsMd5)); for (String s : map.keySet()) { DataSetTableRequest sheetTable = new DataSetTableRequest(); BeanUtils.copyBean(sheetTable, datasetTable); @@ -215,8 +214,7 @@ public class DataSetTableService { sheetTable.setName(excelSheetDataList.get(0).getDatasetName()); checkName(sheetTable); excelSheetDataList.forEach(excelSheetData -> { - String[] fieldArray = excelSheetData.getFields().stream().map(TableField::getFieldName) - .toArray(String[]::new); + String[] fieldArray = excelSheetData.getFields().stream().map(TableField::getFieldName).toArray(String[]::new); checkIsRepeat(fieldArray); excelSheetData.setData(null); excelSheetData.setJsonArray(null); @@ -244,13 +242,10 @@ public class DataSetTableService { list.add(sheetTable); DeLogUtils.save(SysLogConstants.OPERATE_TYPE.CREATE, SysLogConstants.SOURCE_TYPE.DATASET, datasetTable.getId(), datasetTable.getSceneId(), null, null); } - datasetIdList.forEach(datasetId -> commonThreadPool.addTask(() -> - extractDataService.extractExcelData(datasetId, "all_scope", "初始导入", - null, datasetIdList))); + datasetIdList.forEach(datasetId -> commonThreadPool.addTask(() -> extractDataService.extractExcelData(datasetId, "all_scope", "初始导入", null, datasetIdList))); } else { for (ExcelSheetData sheet : datasetTable.getSheets()) { - String[] fieldArray = sheet.getFields().stream().map(TableField::getFieldName) - .toArray(String[]::new); + String[] fieldArray = sheet.getFields().stream().map(TableField::getFieldName).toArray(String[]::new); checkIsRepeat(fieldArray); } @@ -276,22 +271,18 @@ public class DataSetTableService { list.add(sheetTable); DeLogUtils.save(SysLogConstants.OPERATE_TYPE.MODIFY, SysLogConstants.SOURCE_TYPE.DATASET, datasetTable.getId(), datasetTable.getSceneId(), null, null); } - datasetIdList.forEach(datasetId -> commonThreadPool.addTask(() -> - extractDataService.extractExcelData(datasetId, "all_scope", "初始导入", - null, datasetIdList))); + datasetIdList.forEach(datasetId -> commonThreadPool.addTask(() -> extractDataService.extractExcelData(datasetId, "all_scope", "初始导入", null, datasetIdList))); } return list; } List excelSheetDataList = new ArrayList<>(); - List oldFields = datasetTable.getSheets().get(0).getFields().stream().map(TableField::getRemarks) - .collect(Collectors.toList()); + List oldFields = datasetTable.getSheets().get(0).getFields().stream().map(TableField::getRemarks).collect(Collectors.toList()); for (ExcelSheetData sheet : datasetTable.getSheets()) { // 替换时, if (datasetTable.getEditType() == 0) { - List newFields = sheet.getFields().stream().map(TableField::getRemarks) - .collect(Collectors.toList()); + List newFields = sheet.getFields().stream().map(TableField::getRemarks).collect(Collectors.toList()); if (!oldFields.equals(newFields)) { DataEaseException.throwException(Translator.get("i18n_excel_column_inconsistent")); } @@ -310,12 +301,9 @@ public class DataSetTableService { datasetTableMapper.updateByPrimaryKeySelective(datasetTable); // 替換時,先不刪除旧字段;同步成功后再删除 if (datasetTable.getEditType() == 0) { - commonThreadPool.addTask(() -> extractDataService.extractExcelData(datasetTable.getId(), "all_scope", "替换", - saveExcelTableField(datasetTable.getId(), datasetTable.getSheets().get(0).getFields(), false), - Collections.singletonList(datasetTable.getId()))); + commonThreadPool.addTask(() -> extractDataService.extractExcelData(datasetTable.getId(), "all_scope", "替换", saveExcelTableField(datasetTable.getId(), datasetTable.getSheets().get(0).getFields(), false), Collections.singletonList(datasetTable.getId()))); } else if (datasetTable.getEditType() == 1) { - commonThreadPool.addTask(() -> extractDataService.extractExcelData(datasetTable.getId(), "add_scope", "追加", - null, Collections.singletonList(datasetTable.getId()))); + commonThreadPool.addTask(() -> extractDataService.extractExcelData(datasetTable.getId(), "add_scope", "追加", null, Collections.singletonList(datasetTable.getId()))); } DeLogUtils.save(SysLogConstants.OPERATE_TYPE.MODIFY, SysLogConstants.SOURCE_TYPE.DATASET, datasetTable.getId(), datasetTable.getSceneId(), null, null); return Collections.singletonList(datasetTable); @@ -353,9 +341,7 @@ public class DataSetTableService { if (datasetTable.getIsRename() == null || !datasetTable.getIsRename()) { // 更新数据和字段 if (update == 1) { - if (StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.SQL.name()) - || StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.CUSTOM.name()) - || StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.UNION.name())) { + if (StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.SQL.name()) || StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.CUSTOM.name()) || StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.UNION.name())) { saveTableField(datasetTable); } extractData(datasetTable); @@ -398,8 +384,7 @@ public class DataSetTableService { DatasourceRequest datasourceRequest = new DatasourceRequest(); datasourceRequest.setDatasource(dorisDatasource); DDLProvider ddlProvider = ProviderFactory.getDDLProvider(dorisDatasource.getType()); - if (StringUtils.equalsIgnoreCase(DatasetType.CUSTOM.name(), table.getType()) - || StringUtils.equalsIgnoreCase(DatasetType.UNION.name(), table.getType())) { + if (StringUtils.equalsIgnoreCase(DatasetType.CUSTOM.name(), table.getType()) || StringUtils.equalsIgnoreCase(DatasetType.UNION.name(), table.getType())) { datasourceRequest.setQuery(ddlProvider.dropView(dorisTableName)); jdbcProvider.exec(datasourceRequest); datasourceRequest.setQuery(ddlProvider.dropView(TableUtils.tmpName(dorisTableName))); @@ -541,19 +526,7 @@ public class DataSetTableService { } }); // quota add count - DatasetTableField count = DatasetTableField.builder() - .id("count") - .tableId(dataSetTableRequest.getId()) - .originName("*") - .name(Translator.get("i18n_chart_count")) - .dataeaseName("*") - .type("INT") - .checked(true) - .columnIndex(999) - .deType(2) - .extField(1) - .groupType("q") - .build(); + DatasetTableField count = DatasetTableField.builder().id("count").tableId(dataSetTableRequest.getId()).originName("*").name(Translator.get("i18n_chart_count")).dataeaseName("*").type("INT").checked(true).columnIndex(999).deType(2).extField(1).groupType("q").build(); quota.add(count); Map> map = new HashMap<>(); @@ -563,12 +536,10 @@ public class DataSetTableService { return map; } - public Map getPreviewData(DataSetTableRequest dataSetTableRequest, Integer page, Integer pageSize, - List extFields, DatasetRowPermissionsTreeObj extTree) throws Exception { + public Map getPreviewData(DataSetTableRequest dataSetTableRequest, Integer page, Integer pageSize, List extFields, DatasetRowPermissionsTreeObj extTree) throws Exception { Map map = new HashMap<>(); String syncStatus = ""; - DatasetTableField datasetTableField = DatasetTableField.builder().tableId(dataSetTableRequest.getId()) - .checked(Boolean.TRUE).build(); + DatasetTableField datasetTableField = DatasetTableField.builder().tableId(dataSetTableRequest.getId()).checked(Boolean.TRUE).build(); List fields = dataSetTableFieldsService.list(datasetTableField); if (CollectionUtils.isNotEmpty(extFields)) { fields = extFields; @@ -607,9 +578,7 @@ public class DataSetTableService { dataSetPreviewPage.setShow(Integer.valueOf(dataSetTableRequest.getRow())); dataSetPreviewPage.setPage(page); dataSetPreviewPage.setPageSize(pageSize); - int realSize = Integer.parseInt(dataSetTableRequest.getRow()) < pageSize - ? Integer.parseInt(dataSetTableRequest.getRow()) - : pageSize; + int realSize = Integer.parseInt(dataSetTableRequest.getRow()) < pageSize ? Integer.parseInt(dataSetTableRequest.getRow()) : pageSize; if (page == Integer.parseInt(dataSetTableRequest.getRow()) / pageSize + 1) { realSize = Integer.parseInt(dataSetTableRequest.getRow()) % pageSize; } @@ -628,8 +597,7 @@ public class DataSetTableService { String table = dataTableInfoDTO.getTable(); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); - datasourceRequest.setQuery( - qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, null, rowPermissionsTree)); + datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, null, rowPermissionsTree)); map.put("sql", java.util.Base64.getEncoder().encodeToString(datasourceRequest.getQuery().getBytes())); datasourceRequest.setPage(page); @@ -646,8 +614,7 @@ public class DataSetTableService { } try { - datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, - Integer.valueOf(dataSetTableRequest.getRow()), false, ds, null, rowPermissionsTree)); + datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds, null, rowPermissionsTree)); datasourceRequest.setPageable(false); dataSetPreviewPage.setTotal(datasourceProvider.getData(datasourceRequest).size()); } catch (Exception e) { @@ -672,8 +639,7 @@ public class DataSetTableService { datasourceRequest.setDatasource(ds); String table = TableUtils.tableName(dataSetTableRequest.getId()); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); - datasourceRequest.setQuery( - qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, null, rowPermissionsTree)); + datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, null, rowPermissionsTree)); map.put("sql", java.util.Base64.getEncoder().encodeToString(datasourceRequest.getQuery().getBytes())); try { data.addAll(jdbcProvider.getData(datasourceRequest)); @@ -682,8 +648,7 @@ public class DataSetTableService { DataEaseException.throwException(Translator.get("i18n_ds_error") + "->" + e.getMessage()); } try { - datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, - Integer.valueOf(dataSetTableRequest.getRow()), false, ds, null, rowPermissionsTree)); + datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds, null, rowPermissionsTree)); dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size()); } catch (Exception e) { logger.error(e.getMessage()); @@ -707,8 +672,7 @@ public class DataSetTableService { String sql = dataTableInfo.isBase64Encryption() ? new String(java.util.Base64.getDecoder().decode(dataTableInfo.getSql())) : dataTableInfo.getSql(); sql = handleVariableDefaultValue(sql, datasetTable.getSqlVariableDetails(), ds.getType(), false); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); - datasourceRequest.setQuery( - qp.createQuerySQLWithPage(sql, fields, page, pageSize, realSize, false, null, rowPermissionsTree)); + datasourceRequest.setQuery(qp.createQuerySQLWithPage(sql, fields, page, pageSize, realSize, false, null, rowPermissionsTree)); map.put("sql", java.util.Base64.getEncoder().encodeToString(datasourceRequest.getQuery().getBytes())); datasourceRequest.setPage(page); datasourceRequest.setFetchSize(Integer.parseInt(dataSetTableRequest.getRow())); @@ -725,8 +689,7 @@ public class DataSetTableService { } try { datasourceRequest.setPageable(false); - datasourceRequest.setQuery(qp.createQuerySqlWithLimit(sql, fields, - Integer.valueOf(dataSetTableRequest.getRow()), false, null, rowPermissionsTree)); + datasourceRequest.setQuery(qp.createQuerySqlWithLimit(sql, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, null, rowPermissionsTree)); dataSetPreviewPage.setTotal(datasourceProvider.getData(datasourceRequest).size()); } catch (Exception e) { logger.error(e.getMessage()); @@ -743,8 +706,7 @@ public class DataSetTableService { datasourceRequest.setDatasource(ds); String table = TableUtils.tableName(dataSetTableRequest.getId()); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); - datasourceRequest.setQuery( - qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, null, rowPermissionsTree)); + datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, null, rowPermissionsTree)); map.put("sql", java.util.Base64.getEncoder().encodeToString(datasourceRequest.getQuery().getBytes())); try { data.addAll(jdbcProvider.getData(datasourceRequest)); @@ -753,8 +715,7 @@ public class DataSetTableService { DataEaseException.throwException(Translator.get("i18n_ds_error") + "->" + e.getMessage()); } try { - datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, - Integer.valueOf(dataSetTableRequest.getRow()), false, ds, null, rowPermissionsTree)); + datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds, null, rowPermissionsTree)); dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size()); } catch (Exception e) { logger.error(e.getMessage()); @@ -772,8 +733,7 @@ public class DataSetTableService { datasourceRequest.setDatasource(ds); String table = TableUtils.tableName(dataSetTableRequest.getId()); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); - datasourceRequest.setQuery( - qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, null, rowPermissionsTree)); + datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, null, rowPermissionsTree)); map.put("sql", java.util.Base64.getEncoder().encodeToString(datasourceRequest.getQuery().getBytes())); try { data.addAll(jdbcProvider.getData(datasourceRequest)); @@ -782,8 +742,7 @@ public class DataSetTableService { DataEaseException.throwException(Translator.get("i18n_ds_error") + "->" + e.getMessage()); } try { - datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, - Integer.valueOf(dataSetTableRequest.getRow()), false, ds, null, rowPermissionsTree)); + datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds, null, rowPermissionsTree)); dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size()); } catch (Exception e) { logger.error(e.getMessage()); @@ -809,8 +768,7 @@ public class DataSetTableService { datasourceRequest.setDatasource(ds); DataTableInfoDTO dt = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class); - List list = dataSetTableUnionService - .listByTableId(dt.getList().get(0).getTableId()); + List list = dataSetTableUnionService.listByTableId(dt.getList().get(0).getTableId()); String sql = ""; try { @@ -820,8 +778,7 @@ public class DataSetTableService { DataEaseException.throwException(Translator.get("i18n_ds_error") + "->" + e.getMessage()); } QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); - datasourceRequest.setQuery( - qp.createQuerySQLWithPage(sql, fields, page, pageSize, realSize, false, null, rowPermissionsTree)); + datasourceRequest.setQuery(qp.createQuerySQLWithPage(sql, fields, page, pageSize, realSize, false, null, rowPermissionsTree)); map.put("sql", java.util.Base64.getEncoder().encodeToString(datasourceRequest.getQuery().getBytes())); datasourceRequest.setPage(page); datasourceRequest.setFetchSize(Integer.parseInt(dataSetTableRequest.getRow())); @@ -837,8 +794,7 @@ public class DataSetTableService { } try { datasourceRequest.setPageable(false); - datasourceRequest.setQuery(qp.createQuerySqlWithLimit(sql, fields, - Integer.valueOf(dataSetTableRequest.getRow()), false, null, rowPermissionsTree)); + datasourceRequest.setQuery(qp.createQuerySqlWithLimit(sql, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, null, rowPermissionsTree)); dataSetPreviewPage.setTotal(datasourceProvider.getData(datasourceRequest).size()); } catch (Exception e) { logger.error(e.getMessage()); @@ -851,8 +807,7 @@ public class DataSetTableService { datasourceRequest.setDatasource(ds); String table = TableUtils.tableName(dataSetTableRequest.getId()); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); - datasourceRequest.setQuery( - qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, null, rowPermissionsTree)); + datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, null, rowPermissionsTree)); map.put("sql", java.util.Base64.getEncoder().encodeToString(datasourceRequest.getQuery().getBytes())); try { data.addAll(jdbcProvider.getData(datasourceRequest)); @@ -862,8 +817,7 @@ public class DataSetTableService { } try { - datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, - Integer.valueOf(dataSetTableRequest.getRow()), false, ds, null, rowPermissionsTree)); + datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds, null, rowPermissionsTree)); dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size()); } catch (Exception e) { logger.error(e.getMessage()); @@ -890,8 +844,7 @@ public class DataSetTableService { DataEaseException.throwException(Translator.get("i18n_ds_error") + "->" + e.getMessage()); } QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); - datasourceRequest.setQuery( - qp.createQuerySQLWithPage(sql, fields, page, pageSize, realSize, false, null, rowPermissionsTree)); + datasourceRequest.setQuery(qp.createQuerySQLWithPage(sql, fields, page, pageSize, realSize, false, null, rowPermissionsTree)); map.put("sql", java.util.Base64.getEncoder().encodeToString(datasourceRequest.getQuery().getBytes())); datasourceRequest.setPage(page); datasourceRequest.setFetchSize(Integer.parseInt(dataSetTableRequest.getRow())); @@ -907,8 +860,7 @@ public class DataSetTableService { } try { datasourceRequest.setPageable(false); - datasourceRequest.setQuery(qp.createQuerySqlWithLimit(sql, fields, - Integer.valueOf(dataSetTableRequest.getRow()), false, null, rowPermissionsTree)); + datasourceRequest.setQuery(qp.createQuerySqlWithLimit(sql, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, null, rowPermissionsTree)); dataSetPreviewPage.setTotal(datasourceProvider.getData(datasourceRequest).size()); } catch (Exception e) { logger.error(e.getMessage()); @@ -921,8 +873,7 @@ public class DataSetTableService { datasourceRequest.setDatasource(ds); String table = TableUtils.tableName(dataSetTableRequest.getId()); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); - datasourceRequest.setQuery( - qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, null, rowPermissionsTree)); + datasourceRequest.setQuery(qp.createQueryTableWithPage(table, fields, page, pageSize, realSize, false, ds, null, rowPermissionsTree)); map.put("sql", java.util.Base64.getEncoder().encodeToString(datasourceRequest.getQuery().getBytes())); try { data.addAll(jdbcProvider.getData(datasourceRequest)); @@ -932,8 +883,7 @@ public class DataSetTableService { } try { - datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, - Integer.valueOf(dataSetTableRequest.getRow()), false, ds, null, rowPermissionsTree)); + datasourceRequest.setQuery(qp.createQueryTableWithLimit(table, fields, Integer.valueOf(dataSetTableRequest.getRow()), false, ds, null, rowPermissionsTree)); dataSetPreviewPage.setTotal(jdbcProvider.getData(datasourceRequest).size()); } catch (Exception e) { logger.error(e.getMessage()); @@ -1065,8 +1015,7 @@ public class DataSetTableService { break; } } - if (!isEdit && defaultsSqlVariableDetail != null && defaultsSqlVariableDetail.getDefaultValueScope() != null && - defaultsSqlVariableDetail.getDefaultValueScope().equals(SqlVariableDetails.DefaultValueScope.ALLSCOPE) && StringUtils.isNotEmpty(defaultsSqlVariableDetail.getDefaultValue())) { + if (!isEdit && defaultsSqlVariableDetail != null && defaultsSqlVariableDetail.getDefaultValueScope() != null && defaultsSqlVariableDetail.getDefaultValueScope().equals(SqlVariableDetails.DefaultValueScope.ALLSCOPE) && StringUtils.isNotEmpty(defaultsSqlVariableDetail.getDefaultValue())) { sql = sql.replace(matcher.group(), defaultsSqlVariableDetail.getDefaultValue()); } if (isEdit && defaultsSqlVariableDetail != null && StringUtils.isNotEmpty(defaultsSqlVariableDetail.getDefaultValue())) { @@ -1122,17 +1071,16 @@ public class DataSetTableService { } private void handleSelectItems(PlainSelect plainSelect, String dsType) throws Exception { - List selectItems = new ArrayList<>(); + List> selectItems = new ArrayList<>(); for (SelectItem selectItem : plainSelect.getSelectItems()) { try { - SelectExpressionItem selectExpressionItem = (SelectExpressionItem) selectItem; - if (selectExpressionItem.getExpression() instanceof SubSelect) { - SubSelect subSelect = (SubSelect) selectExpressionItem.getExpression(); - Select select = (Select) CCJSqlParserUtil.parse(removeVariables(subSelect.getSelectBody().toString(), dsType)); - subSelect.setSelectBody(select.getSelectBody()); - ((SelectExpressionItem) selectItem).setExpression(subSelect); + if (selectItem.getExpression() instanceof ParenthesedSelect) { + ParenthesedSelect parenthesedSelect = (ParenthesedSelect) selectItem.getExpression(); + parenthesedSelect.setSelect((Select) CCJSqlParserUtil.parse(removeVariables(((Select) selectItem.getExpression()).getPlainSelect().toString(), dsType))); + selectItem.setExpression(parenthesedSelect); } } catch (Exception e) { + e.printStackTrace(); } selectItems.add(selectItem); } @@ -1140,69 +1088,24 @@ public class DataSetTableService { } private void handleFromItems(PlainSelect plainSelect, String dsType) throws Exception { - FromItem fromItem = plainSelect.getFromItem(); - if (fromItem instanceof SubSelect) { - SelectBody selectBody = ((SubSelect) fromItem).getSelectBody(); - SubSelect subSelect = new SubSelect(); + FromItem fromItem = plainSelect.getFromItem(); + if (fromItem instanceof ParenthesedSelect) { + PlainSelect selectBody = ((ParenthesedSelect) fromItem).getPlainSelect(); Select subSelectTmp = (Select) CCJSqlParserUtil.parse(removeVariables(selectBody.toString(), dsType)); - subSelect.setSelectBody(subSelectTmp.getSelectBody()); + ((ParenthesedSelect) fromItem).setSelect(subSelectTmp.getSelectBody()); if (dsType.equals(DatasourceTypes.oracle.getType())) { if (fromItem.getAlias() != null) { - subSelect.setAlias(new Alias(fromItem.getAlias().toString(), false)); + fromItem.setAlias(new Alias(fromItem.getAlias().toString(), false)); } } else { if (fromItem.getAlias() == null) { throw new Exception("Failed to parse sql, Every derived table must have its own alias!"); } - subSelect.setAlias(new Alias(fromItem.getAlias().toString(), false)); - } - plainSelect.setFromItem(subSelect); - } - if (fromItem instanceof SubJoin) { - SubJoin subJoin = (SubJoin) fromItem; - if (subJoin.getLeft() instanceof SubSelect) { - SelectBody selectBody = ((SubSelect) subJoin.getLeft()).getSelectBody(); - SubSelect subSelect = new SubSelect(); - Select subSelectTmp = (Select) CCJSqlParserUtil.parse(removeVariables(selectBody.toString(), dsType)); - PlainSelect subPlainSelect = ((PlainSelect) subSelectTmp.getSelectBody()); - subSelect.setSelectBody(subPlainSelect); - if (dsType.equals(DatasourceTypes.oracle.getType())) { - subSelect.setAlias(new Alias(subJoin.getLeft().getAlias().toString(), false)); - } else { - if (subJoin.getLeft().getAlias() == null) { - throw new Exception("Failed to parse sql, Every derived table must have its own alias!"); - } - subSelect.setAlias(new Alias(subJoin.getLeft().getAlias().toString(), false)); - } - subJoin.setLeft(subSelect); - } - List joinsList = new ArrayList<>(); - for (Join join : subJoin.getJoinList()) { - FromItem rightItem = join.getRightItem(); - if (rightItem instanceof SubSelect) { - SelectBody selectBody = ((SubSelect) rightItem).getSelectBody(); - SubSelect subSelect = new SubSelect(); - Select subSelectTmp = (Select) CCJSqlParserUtil.parse(removeVariables(selectBody.toString(), dsType)); - PlainSelect subPlainSelect = ((PlainSelect) subSelectTmp.getSelectBody()); - subSelect.setSelectBody(subPlainSelect); - if (dsType.equals(DatasourceTypes.oracle.getType())) { - subSelect.setAlias(new Alias(rightItem.getAlias().toString(), false)); - } else { - if (rightItem.getAlias() == null) { - throw new Exception("Failed to parse sql, Every derived table must have its own alias!"); - } - subSelect.setAlias(new Alias(rightItem.getAlias().toString(), false)); - } - join.setRightItem(subSelect); - } - joinsList.add(join); - subJoin.setJoinList(joinsList); - + fromItem.setAlias(new Alias(fromItem.getAlias().toString(), false)); } plainSelect.setFromItem(fromItem); } - } private void handleJoins(PlainSelect plainSelect, String dsType) throws Exception { @@ -1211,21 +1114,20 @@ public class DataSetTableService { List joinsList = new ArrayList<>(); for (Join join : joins) { FromItem rightItem = join.getRightItem(); - if (rightItem instanceof SubSelect) { - SelectBody selectBody = ((SubSelect) rightItem).getSelectBody(); - SubSelect subSelect = new SubSelect(); + if (rightItem instanceof ParenthesedSelect) { + PlainSelect selectBody = ((ParenthesedSelect) rightItem).getPlainSelect(); Select subSelectTmp = (Select) CCJSqlParserUtil.parse(removeVariables(selectBody.toString(), dsType)); PlainSelect subPlainSelect = ((PlainSelect) subSelectTmp.getSelectBody()); - subSelect.setSelectBody(subPlainSelect); + ((ParenthesedSelect) rightItem).setSelect(subPlainSelect); if (dsType.equals(DatasourceTypes.oracle.getType())) { - subSelect.setAlias(new Alias(rightItem.getAlias().toString(), false)); + rightItem.setAlias(new Alias(rightItem.getAlias().toString(), false)); } else { if (rightItem.getAlias() == null) { throw new Exception("Failed to parse sql, Every derived table must have its own alias!"); } - subSelect.setAlias(new Alias(rightItem.getAlias().toString(), false)); + rightItem.setAlias(new Alias(rightItem.getAlias().toString(), false)); } - join.setRightItem(subSelect); + join.setRightItem(rightItem); } joinsList.add(join); } @@ -1244,13 +1146,16 @@ public class DataSetTableService { binaryExpression = (BinaryExpression) expr; } catch (Exception e) { } + if (binaryExpression != null) { boolean hasSubBinaryExpression = binaryExpression instanceof AndExpression || binaryExpression instanceof OrExpression; - if (!hasSubBinaryExpression &&!(binaryExpression.getLeftExpression() instanceof BinaryExpression) && !(binaryExpression.getLeftExpression() instanceof InExpression) && hasVariable(binaryExpression.getRightExpression().toString())) { + + if (!hasSubBinaryExpression && !(binaryExpression.getLeftExpression() instanceof BinaryExpression) && !(binaryExpression.getLeftExpression() instanceof InExpression) && hasVariable(binaryExpression.getRightExpression().toString())) { stringBuilder.append(SubstitutedSql); } else { expr.accept(getExpressionDeParser(stringBuilder)); } + } else { expr.accept(getExpressionDeParser(stringBuilder)); } @@ -1259,25 +1164,17 @@ public class DataSetTableService { } private String handleWith(PlainSelect plainSelect, Select select, String dsType) throws Exception { - StringBuilder builder = new StringBuilder(); if (select != null && CollectionUtils.isNotEmpty(select.getWithItemsList())) { - builder.append("WITH"); - builder.append(" "); for (Iterator iter = select.getWithItemsList().iterator(); iter.hasNext(); ) { WithItem withItem = iter.next(); - builder.append(withItem.getName()).append(" AS ( ").append(removeVariables(withItem.getSubSelect().toString(), dsType)).append(" ) "); - if (iter.hasNext()) { - builder.append(","); - } + ParenthesedSelect parenthesedSelect = (ParenthesedSelect) withItem.getSelect(); + parenthesedSelect.setSelect((Select) CCJSqlParserUtil.parse(removeVariables(parenthesedSelect.getSelect().toString(), dsType))); } } - - builder.append(" ").append(plainSelect); - return builder.toString(); + return plainSelect.toString(); } - public Map getDBPreview(DataSetTableRequest dataSetTableRequest) throws Exception { Datasource ds = datasourceMapper.selectByPrimaryKey(dataSetTableRequest.getDataSourceId()); if (ds == null) { @@ -1439,12 +1336,7 @@ public class DataSetTableService { // 获取每个字段在当前de数据库中的name,作为sql查询后的remarks返回前端展示 for (DatasetTableField datasetTableField : fieldList) { for (TableField tableField : fields) { - if (StringUtils.equalsIgnoreCase(tableField.getFieldName(), - TableUtils.fieldName( - datasetTableField.getTableId() + "_" + datasetTableField.getDataeaseName())) - || StringUtils.equalsIgnoreCase(tableField.getFieldName(), - TableUtils.fieldNameShort(datasetTableField.getTableId() + "_" - + datasetTableField.getOriginName()))) { + if (StringUtils.equalsIgnoreCase(tableField.getFieldName(), TableUtils.fieldName(datasetTableField.getTableId() + "_" + datasetTableField.getDataeaseName())) || StringUtils.equalsIgnoreCase(tableField.getFieldName(), TableUtils.fieldNameShort(datasetTableField.getTableId() + "_" + datasetTableField.getOriginName()))) { tableField.setRemarks(datasetTableField.getName()); break; } @@ -1463,8 +1355,7 @@ public class DataSetTableService { public Map getCustomPreview(DataSetTableRequest dataSetTableRequest) throws Exception { DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class); - List list = dataSetTableUnionService - .listByTableId(dataTableInfoDTO.getList().get(0).getTableId()); + List list = dataSetTableUnionService.listByTableId(dataTableInfoDTO.getList().get(0).getTableId()); String sql; DatasourceRequest datasourceRequest = new DatasourceRequest(); @@ -1501,15 +1392,10 @@ public class DataSetTableService { // 获取每个字段在当前de数据库中的name,作为sql查询后的remarks返回前端展示 List checkedFieldList = new ArrayList<>(); - dataTableInfoDTO.getList().forEach( - ele -> checkedFieldList.addAll(dataSetTableFieldsService.getListByIds(ele.getCheckedFields()))); + dataTableInfoDTO.getList().forEach(ele -> checkedFieldList.addAll(dataSetTableFieldsService.getListByIds(ele.getCheckedFields()))); for (DatasetTableField datasetTableField : checkedFieldList) { for (TableField tableField : fields) { - if (StringUtils.equalsIgnoreCase(tableField.getFieldName(), - TableUtils.fieldName( - datasetTableField.getTableId() + "_" + datasetTableField.getDataeaseName())) - || StringUtils.equalsIgnoreCase(tableField.getFieldName(), TableUtils.fieldName( - datasetTableField.getTableId() + "_" + datasetTableField.getOriginName()))) { + if (StringUtils.equalsIgnoreCase(tableField.getFieldName(), TableUtils.fieldName(datasetTableField.getTableId() + "_" + datasetTableField.getDataeaseName())) || StringUtils.equalsIgnoreCase(tableField.getFieldName(), TableUtils.fieldName(datasetTableField.getTableId() + "_" + datasetTableField.getOriginName()))) { tableField.setRemarks(datasetTableField.getName()); break; } @@ -1537,10 +1423,7 @@ public class DataSetTableService { if (CollectionUtils.isEmpty(fields)) { throw new RuntimeException(Translator.get("i18n_cst_ds_tb_or_field_deleted")); } - String[] array = fields.stream() - .map(f -> table + "." + f.getDataeaseName() + " AS " - + TableUtils.fieldName(ele.getTableId() + "_" + f.getDataeaseName())) - .toArray(String[]::new); + String[] array = fields.stream().map(f -> table + "." + f.getDataeaseName() + " AS " + TableUtils.fieldName(ele.getTableId() + "_" + f.getDataeaseName())).toArray(String[]::new); customInfo.put(table, array); }); DataTableInfoCustomUnion first = dataTableInfoDTO.getList().get(0); @@ -1562,30 +1445,19 @@ public class DataSetTableService { DataEaseException.throwException(Translator.get("i18n_dataset_field_delete")); } - join.append(convertUnionTypeToSQL(dto.getSourceUnionRelation())) - .append(TableUtils.tableName(dto.getTargetTableId())) - .append(" ON ") - .append(TableUtils.tableName(dto.getSourceTableId())).append(".") - .append(sourceField.getDataeaseName()) - .append(" = ") - .append(TableUtils.tableName(dto.getTargetTableId())).append(".") - .append(targetField.getDataeaseName()); + join.append(convertUnionTypeToSQL(dto.getSourceUnionRelation())).append(TableUtils.tableName(dto.getTargetTableId())).append(" ON ").append(TableUtils.tableName(dto.getSourceTableId())).append(".").append(sourceField.getDataeaseName()).append(" = ").append(TableUtils.tableName(dto.getTargetTableId())).append(".").append(targetField.getDataeaseName()); } } } if (StringUtils.isEmpty(f)) { throw new RuntimeException(Translator.get("i18n_custom_ds_delete")); } - return MessageFormat.format("SELECT {0} FROM {1}", f, TableUtils.tableName(first.getTableId())) - + join.toString(); + return MessageFormat.format("SELECT {0} FROM {1}", f, TableUtils.tableName(first.getTableId())) + join.toString(); } else { - if (StringUtils - .isEmpty(StringUtils.join(customInfo.get(TableUtils.tableName(first.getTableId())), ","))) { + if (StringUtils.isEmpty(StringUtils.join(customInfo.get(TableUtils.tableName(first.getTableId())), ","))) { throw new RuntimeException(Translator.get("i18n_custom_ds_delete")); } - return MessageFormat.format("SELECT {0} FROM {1}", - StringUtils.join(customInfo.get(TableUtils.tableName(first.getTableId())), ","), - TableUtils.tableName(first.getTableId())); + return MessageFormat.format("SELECT {0} FROM {1}", StringUtils.join(customInfo.get(TableUtils.tableName(first.getTableId())), ","), TableUtils.tableName(first.getTableId())); } } @@ -1603,10 +1475,7 @@ public class DataSetTableService { if (CollectionUtils.isEmpty(fields)) { throw new RuntimeException(Translator.get("i18n_cst_ds_tb_or_field_deleted")); } - String[] array = fields.stream() - .map(f -> String.format(keyword, table) + "." + String.format(keyword, f.getOriginName()) + " AS " - + TableUtils.fieldName(ele.getTableId() + "_" + f.getOriginName())) - .toArray(String[]::new); + String[] array = fields.stream().map(f -> String.format(keyword, table) + "." + String.format(keyword, f.getOriginName()) + " AS " + TableUtils.fieldName(ele.getTableId() + "_" + f.getOriginName())).toArray(String[]::new); customInfo.put(table, array); } DataTableInfoCustomUnion first = dataTableInfoDTO.getList().get(0); @@ -1630,19 +1499,10 @@ public class DataSetTableService { DataEaseException.throwException(Translator.get("i18n_dataset_field_delete")); } DatasetTable sourceTable = datasetTableMapper.selectByPrimaryKey(dto.getSourceTableId()); - String sourceTableName = new Gson().fromJson(sourceTable.getInfo(), DataTableInfoDTO.class) - .getTable(); + 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())); + 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())); } } } @@ -1654,8 +1514,7 @@ public class DataSetTableService { if (StringUtils.isEmpty(StringUtils.join(customInfo.get(tableName), ","))) { throw new RuntimeException(Translator.get("i18n_custom_ds_delete")); } - return MessageFormat.format("SELECT {0} FROM {1}", StringUtils.join(customInfo.get(tableName), ","), - String.format(keyword, tableName)); + return MessageFormat.format("SELECT {0} FROM {1}", StringUtils.join(customInfo.get(tableName), ","), String.format(keyword, tableName)); } } @@ -1692,32 +1551,26 @@ public class DataSetTableService { String table = TableUtils.tableName(tableId); DatasetTable datasetTable = datasetTableMapper.selectByPrimaryKey(tableId); if (ObjectUtils.isEmpty(datasetTable)) { - DataEaseException.throwException( - Translator.get("i18n_custom_ds_delete") + String.format(":table id [%s]", tableId)); + DataEaseException.throwException(Translator.get("i18n_custom_ds_delete") + String.format(":table id [%s]", tableId)); } CurrentUserDto user = AuthUtils.getUser(); if (user != null && !user.getIsAdmin()) { DataSetTableDTO withPermission = getWithPermission(datasetTable.getId(), user.getUserId()); if (ObjectUtils.isEmpty(withPermission.getPrivileges()) || !withPermission.getPrivileges().contains("use")) { - DataEaseException.throwException( - Translator.get("i18n_dataset_no_permission") + String.format(":table name [%s]", withPermission.getName())); + DataEaseException.throwException(Translator.get("i18n_dataset_no_permission") + String.format(":table name [%s]", withPermission.getName())); } } List fields = dataSetTableFieldsService.getListByIdsEach(unionDTO.getCurrentDsField()); - String[] array = fields.stream() - .map(f -> { - String s = ""; - if (f == null) { - DataEaseException.throwException( - Translator.get("i18n_ds_error")); - } else { - s = table + "." + f.getDataeaseName() + " AS " - + TableUtils.fieldName(tableId + "_" + f.getDataeaseName()); - } - return s; - }) - .toArray(String[]::new); + String[] array = fields.stream().map(f -> { + String s = ""; + if (f == null) { + DataEaseException.throwException(Translator.get("i18n_ds_error")); + } else { + s = table + "." + f.getDataeaseName() + " AS " + TableUtils.fieldName(tableId + "_" + f.getDataeaseName()); + } + return s; + }).toArray(String[]::new); checkedInfo.put(table, array); checkedFields.addAll(fields); // 获取child的fields和union @@ -1748,21 +1601,14 @@ public class DataSetTableService { DatasetTable parentTable = datasetTableMapper.selectByPrimaryKey(pField.getTableId()); DatasetTable currentTable = datasetTableMapper.selectByPrimaryKey(cField.getTableId()); - join.append(" ").append(joinType).append(" ").append(TableUtils.tableName(currentTable.getId())) - .append(" ON "); + join.append(" ").append(joinType).append(" ").append(TableUtils.tableName(currentTable.getId())).append(" ON "); for (int i = 0; i < unionParamDTO.getUnionFields().size(); i++) { UnionItemDTO unionItemDTO = unionParamDTO.getUnionFields().get(i); // 通过field id取得field详情,并且以第一组为准,寻找dataset table - DatasetTableField parentField = dataSetTableFieldsService - .get(unionItemDTO.getParentField().getId()); - DatasetTableField currentField = dataSetTableFieldsService - .get(unionItemDTO.getCurrentField().getId()); + DatasetTableField parentField = dataSetTableFieldsService.get(unionItemDTO.getParentField().getId()); + DatasetTableField currentField = dataSetTableFieldsService.get(unionItemDTO.getCurrentField().getId()); - join.append(TableUtils.tableName(parentTable.getId())).append(".") - .append(parentField.getDataeaseName()) - .append(" = ") - .append(TableUtils.tableName(currentTable.getId())).append(".") - .append(currentField.getDataeaseName()); + join.append(TableUtils.tableName(parentTable.getId())).append(".").append(parentField.getDataeaseName()).append(" = ").append(TableUtils.tableName(currentTable.getId())).append(".").append(currentField.getDataeaseName()); if (i < unionParamDTO.getUnionFields().size() - 1) { join.append(" AND "); } @@ -1771,16 +1617,13 @@ public class DataSetTableService { if (StringUtils.isEmpty(f)) { DataEaseException.throwException(Translator.get("i18n_union_ds_no_checked")); } - sql = MessageFormat.format("SELECT {0} FROM {1}", f, - TableUtils.tableName(union.get(0).getCurrentDs().getId())) + join.toString(); + sql = MessageFormat.format("SELECT {0} FROM {1}", f, TableUtils.tableName(union.get(0).getCurrentDs().getId())) + join.toString(); } else { - String f = StringUtils.join(checkedInfo.get(TableUtils.tableName(union.get(0).getCurrentDs().getId())), - ","); + String f = StringUtils.join(checkedInfo.get(TableUtils.tableName(union.get(0).getCurrentDs().getId())), ","); if (StringUtils.isEmpty(f)) { throw new RuntimeException(Translator.get("i18n_union_ds_no_checked")); } - sql = MessageFormat.format("SELECT {0} FROM {1}", f, - TableUtils.tableName(union.get(0).getCurrentDs().getId())); + sql = MessageFormat.format("SELECT {0} FROM {1}", f, TableUtils.tableName(union.get(0).getCurrentDs().getId())); } Map map = new HashMap<>(); map.put("sql", sql); @@ -1790,22 +1633,17 @@ public class DataSetTableService { } // 递归计算出所有子级的checkedFields和unionParam - private void getUnionSQLDorisJoin(List childrenDs, Map checkedInfo, - List unionList, List checkedFields) { + private void getUnionSQLDorisJoin(List childrenDs, Map checkedInfo, List unionList, List checkedFields) { for (UnionDTO unionDTO : childrenDs) { String tableId = unionDTO.getCurrentDs().getId(); String table = TableUtils.tableName(tableId); DatasetTable datasetTable = datasetTableMapper.selectByPrimaryKey(tableId); if (ObjectUtils.isEmpty(datasetTable)) { - DataEaseException.throwException( - Translator.get("i18n_custom_ds_delete") + String.format(":table id [%s]", tableId)); + DataEaseException.throwException(Translator.get("i18n_custom_ds_delete") + String.format(":table id [%s]", tableId)); } List fields = dataSetTableFieldsService.getListByIdsEach(unionDTO.getCurrentDsField()); - String[] array = fields.stream() - .map(f -> table + "." + f.getDataeaseName() + " AS " - + TableUtils.fieldName(tableId + "_" + f.getDataeaseName())) - .toArray(String[]::new); + String[] array = fields.stream().map(f -> table + "." + f.getDataeaseName() + " AS " + TableUtils.fieldName(tableId + "_" + f.getDataeaseName())).toArray(String[]::new); checkedInfo.put(table, array); checkedFields.addAll(fields); @@ -1829,11 +1667,7 @@ public class DataSetTableService { schema = schemaJson.getAsString(); } String joinPrefix = ""; - if (StringUtils.isNotEmpty(schema) && (StringUtils.equalsIgnoreCase(ds.getType(), DatasourceTypes.db2.getType()) || - StringUtils.equalsIgnoreCase(ds.getType(), DatasourceTypes.sqlServer.getType()) || - StringUtils.equalsIgnoreCase(ds.getType(), DatasourceTypes.oracle.getType()) || - StringUtils.equalsIgnoreCase(ds.getType(), "kingbase") || - StringUtils.equalsIgnoreCase(ds.getType(), DatasourceTypes.pg.getType()))) { + if (StringUtils.isNotEmpty(schema) && (StringUtils.equalsIgnoreCase(ds.getType(), DatasourceTypes.db2.getType()) || StringUtils.equalsIgnoreCase(ds.getType(), DatasourceTypes.sqlServer.getType()) || StringUtils.equalsIgnoreCase(ds.getType(), DatasourceTypes.oracle.getType()) || StringUtils.equalsIgnoreCase(ds.getType(), "kingbase") || StringUtils.equalsIgnoreCase(ds.getType(), DatasourceTypes.pg.getType()))) { joinPrefix = String.format(keyword, schema) + "."; } @@ -1843,32 +1677,24 @@ public class DataSetTableService { List unionList = new ArrayList<>(); List checkedFields = new ArrayList<>(); String sql = ""; - String tableName = new Gson() - .fromJson(datasetTableMapper.selectByPrimaryKey(union.get(0).getCurrentDs().getId()).getInfo(), - DataTableInfoDTO.class) - .getTable(); + String tableName = new Gson().fromJson(datasetTableMapper.selectByPrimaryKey(union.get(0).getCurrentDs().getId()).getInfo(), DataTableInfoDTO.class).getTable(); for (UnionDTO unionDTO : union) { DatasetTable datasetTable = datasetTableMapper.selectByPrimaryKey(unionDTO.getCurrentDs().getId()); String table = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class).getTable(); String tableId = unionDTO.getCurrentDs().getId(); if (ObjectUtils.isEmpty(datasetTable)) { - DataEaseException.throwException( - Translator.get("i18n_custom_ds_delete") + String.format(":table id [%s]", tableId)); + DataEaseException.throwException(Translator.get("i18n_custom_ds_delete") + String.format(":table id [%s]", tableId)); } CurrentUserDto user = AuthUtils.getUser(); if (user != null && !user.getIsAdmin()) { DataSetTableDTO withPermission = getWithPermission(datasetTable.getId(), user.getUserId()); if (ObjectUtils.isEmpty(withPermission.getPrivileges()) || !withPermission.getPrivileges().contains("use")) { - DataEaseException.throwException( - Translator.get("i18n_dataset_no_permission") + String.format(":table name [%s]", withPermission.getName())); + DataEaseException.throwException(Translator.get("i18n_dataset_no_permission") + String.format(":table name [%s]", withPermission.getName())); } } List fields = dataSetTableFieldsService.getListByIdsEach(unionDTO.getCurrentDsField()); - String[] array = fields.stream() - .map(f -> String.format(keyword, table) + "." + String.format(keyword, f.getOriginName()) + " AS " - + TableUtils.fieldNameShort(tableId + "_" + f.getOriginName())) - .toArray(String[]::new); + String[] array = fields.stream().map(f -> String.format(keyword, table) + "." + String.format(keyword, f.getOriginName()) + " AS " + TableUtils.fieldNameShort(tableId + "_" + f.getOriginName())).toArray(String[]::new); checkedInfo.put(table, array); checkedFields.addAll(fields); // 获取child的fields和union @@ -1899,24 +1725,16 @@ public class DataSetTableService { DatasetTable parentTable = datasetTableMapper.selectByPrimaryKey(pField.getTableId()); String parentTableName = new Gson().fromJson(parentTable.getInfo(), DataTableInfoDTO.class).getTable(); DatasetTable currentTable = datasetTableMapper.selectByPrimaryKey(cField.getTableId()); - String currentTableName = new Gson().fromJson(currentTable.getInfo(), DataTableInfoDTO.class) - .getTable(); + String currentTableName = new Gson().fromJson(currentTable.getInfo(), DataTableInfoDTO.class).getTable(); - join.append(" ").append(joinType).append(" ").append(joinPrefix).append(String.format(keyword, currentTableName)) - .append(" ON "); + join.append(" ").append(joinType).append(" ").append(joinPrefix).append(String.format(keyword, currentTableName)).append(" ON "); for (int i = 0; i < unionParamDTO.getUnionFields().size(); i++) { UnionItemDTO unionItemDTO = unionParamDTO.getUnionFields().get(i); // 通过field id取得field详情,并且以第一组为准,寻找dataset table - DatasetTableField parentField = dataSetTableFieldsService - .get(unionItemDTO.getParentField().getId()); - DatasetTableField currentField = dataSetTableFieldsService - .get(unionItemDTO.getCurrentField().getId()); + DatasetTableField parentField = dataSetTableFieldsService.get(unionItemDTO.getParentField().getId()); + DatasetTableField currentField = dataSetTableFieldsService.get(unionItemDTO.getCurrentField().getId()); - join.append(String.format(keyword, parentTableName)).append(".") - .append(String.format(keyword, parentField.getOriginName())) - .append(" = ") - .append(String.format(keyword, currentTableName)).append(".") - .append(String.format(keyword, currentField.getOriginName())); + join.append(String.format(keyword, parentTableName)).append(".").append(String.format(keyword, parentField.getOriginName())).append(" = ").append(String.format(keyword, currentTableName)).append(".").append(String.format(keyword, currentField.getOriginName())); if (i < unionParamDTO.getUnionFields().size() - 1) { join.append(" AND "); } @@ -1951,23 +1769,18 @@ public class DataSetTableService { } // 递归计算出所有子级的checkedFields和unionParam - private void getUnionSQLDatasourceJoin(List childrenDs, Map checkedInfo, - List unionList, String keyword, List checkedFields) { + private void getUnionSQLDatasourceJoin(List childrenDs, Map checkedInfo, List unionList, String keyword, List checkedFields) { for (UnionDTO unionDTO : childrenDs) { DatasetTable datasetTable = datasetTableMapper.selectByPrimaryKey(unionDTO.getCurrentDs().getId()); String tableId = unionDTO.getCurrentDs().getId(); if (ObjectUtils.isEmpty(datasetTable)) { - DataEaseException.throwException( - Translator.get("i18n_custom_ds_delete") + String.format(":table id [%s]", tableId)); + DataEaseException.throwException(Translator.get("i18n_custom_ds_delete") + String.format(":table id [%s]", tableId)); } String table = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class).getTable(); List fields = dataSetTableFieldsService.getListByIdsEach(unionDTO.getCurrentDsField()); - String[] array = fields.stream() - .map(f -> String.format(keyword, table) + "." + String.format(keyword, f.getOriginName()) + " AS " - + TableUtils.fieldNameShort(tableId + "_" + f.getOriginName())) - .toArray(String[]::new); + String[] array = fields.stream().map(f -> String.format(keyword, table) + "." + String.format(keyword, f.getOriginName()) + " AS " + TableUtils.fieldNameShort(tableId + "_" + f.getOriginName())).toArray(String[]::new); checkedInfo.put(table, array); checkedFields.addAll(fields); @@ -2034,15 +1847,12 @@ public class DataSetTableService { } else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.CUSTOM.name())) { if (datasetTable.getMode() == 1) { // save field - DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(dataSetTableRequest.getInfo(), - DataTableInfoDTO.class); + DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class); List list = dataTableInfoDTO.getList(); List fieldList = new ArrayList<>(); list.forEach(ele -> { - List listByIds = dataSetTableFieldsService - .getListByIdsEach(ele.getCheckedFields()); - listByIds.forEach(f -> f.setDataeaseName( - TableUtils.fieldName(ele.getTableId() + "_" + f.getDataeaseName()))); + List listByIds = dataSetTableFieldsService.getListByIdsEach(ele.getCheckedFields()); + listByIds.forEach(f -> f.setDataeaseName(TableUtils.fieldName(ele.getTableId() + "_" + f.getDataeaseName()))); fieldList.addAll(listByIds); }); for (int i = 0; i < fieldList.size(); i++) { @@ -2055,8 +1865,7 @@ public class DataSetTableService { dataSetTableFieldsService.batchEdit(fieldList); // custom 创建doris视图 if (datasetTable.getMode() == 1) { - createDorisView(TableUtils.tableName(datasetTable.getId()), getCustomViewSQL(dataTableInfoDTO, - dataSetTableUnionService.listByTableId(dataTableInfoDTO.getList().get(0).getTableId()))); + createDorisView(TableUtils.tableName(datasetTable.getId()), getCustomViewSQL(dataTableInfoDTO, dataSetTableUnionService.listByTableId(dataTableInfoDTO.getList().get(0).getTableId()))); } return; } else { @@ -2064,26 +1873,21 @@ public class DataSetTableService { DatasourceRequest datasourceRequest = new DatasourceRequest(); datasourceRequest.setDatasource(ds); DataTableInfoDTO dt = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class); - List list = dataSetTableUnionService - .listByTableId(dt.getList().get(0).getTableId()); + List list = dataSetTableUnionService.listByTableId(dt.getList().get(0).getTableId()); String sqlAsTable = getCustomSQLDatasource(dt, list, ds); datasourceRequest.setQuery(sqlAsTable); fields = datasourceProvider.fetchResultField(datasourceRequest); - DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(dataSetTableRequest.getInfo(), - DataTableInfoDTO.class); + DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class); List listField = dataTableInfoDTO.getList(); List fieldList = new ArrayList<>(); listField.forEach(ele -> { - List listByIds = dataSetTableFieldsService - .getListByIdsEach(ele.getCheckedFields()); + List listByIds = dataSetTableFieldsService.getListByIdsEach(ele.getCheckedFields()); fieldList.addAll(listByIds); }); for (DatasetTableField field : fieldList) { for (TableField tableField : fields) { - if (StringUtils.equalsIgnoreCase( - TableUtils.fieldName(field.getTableId() + "_" + field.getOriginName()), - tableField.getFieldName())) { + if (StringUtils.equalsIgnoreCase(TableUtils.fieldName(field.getTableId() + "_" + field.getOriginName()), tableField.getFieldName())) { tableField.setRemarks(field.getName()); break; } @@ -2097,8 +1901,7 @@ public class DataSetTableService { DatasourceRequest datasourceRequest = new DatasourceRequest(); datasourceRequest.setDatasource(ds); // save field - DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(dataSetTableRequest.getInfo(), - DataTableInfoDTO.class); + DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class); Map sqlMap = getUnionSQLDoris(dataTableInfoDTO); String sql = (String) sqlMap.get("sql"); List fieldList = (List) sqlMap.get("field"); @@ -2113,9 +1916,7 @@ public class DataSetTableService { fields = datasourceProvider.fetchResultField(datasourceRequest); for (DatasetTableField field : fieldList) { for (TableField tableField : fields) { - if (StringUtils.equalsIgnoreCase( - TableUtils.fieldName(field.getTableId() + "_" + field.getDataeaseName()), - tableField.getFieldName())) { + if (StringUtils.equalsIgnoreCase(TableUtils.fieldName(field.getTableId() + "_" + field.getDataeaseName()), tableField.getFieldName())) { tableField.setRemarks(field.getName()); tableField.setFieldType(field.getType()); //将原有的type赋值给新创建的数据列 break; @@ -2139,9 +1940,7 @@ public class DataSetTableService { for (DatasetTableField field : fieldList) { for (TableField tableField : fields) { - if (StringUtils.equalsIgnoreCase( - TableUtils.fieldNameShort(field.getTableId() + "_" + field.getOriginName()), - tableField.getFieldName())) { + if (StringUtils.equalsIgnoreCase(TableUtils.fieldNameShort(field.getTableId() + "_" + field.getOriginName()), tableField.getFieldName())) { tableField.setRemarks(field.getName()); break; } @@ -2240,8 +2039,7 @@ public class DataSetTableService { } } - public DatasetTableIncrementalConfig incrementalConfig( - DatasetTableIncrementalConfig datasetTableIncrementalConfig) { + public DatasetTableIncrementalConfig incrementalConfig(DatasetTableIncrementalConfig datasetTableIncrementalConfig) { if (StringUtils.isEmpty(datasetTableIncrementalConfig.getTableId())) { return new DatasetTableIncrementalConfig(); } @@ -2285,34 +2083,28 @@ public class DataSetTableService { private void checkColumes(DatasetTableIncrementalConfig datasetTableIncrementalConfig) throws Exception { DatasetTable datasetTable = datasetTableMapper.selectByPrimaryKey(datasetTableIncrementalConfig.getTableId()); - List datasetTableFields = dataSetTableFieldsService.getFieldsByTableId(datasetTable.getId()) - .stream().filter(datasetTableField -> datasetTableField.getExtField() == 0).sorted((o1, o2) -> { - if (o1.getColumnIndex() == null) { - return -1; - } - if (o2.getColumnIndex() == null) { - return 1; - } - return o1.getColumnIndex().compareTo(o2.getColumnIndex()); - }).collect(Collectors.toList()); + List datasetTableFields = dataSetTableFieldsService.getFieldsByTableId(datasetTable.getId()).stream().filter(datasetTableField -> datasetTableField.getExtField() == 0).sorted((o1, o2) -> { + if (o1.getColumnIndex() == null) { + return -1; + } + if (o2.getColumnIndex() == null) { + return 1; + } + return o1.getColumnIndex().compareTo(o2.getColumnIndex()); + }).collect(Collectors.toList()); - List originNameFields = datasetTableFields.stream().map(DatasetTableField::getOriginName) - .collect(Collectors.toList()); + List originNameFields = datasetTableFields.stream().map(DatasetTableField::getOriginName).collect(Collectors.toList()); Datasource ds = datasourceMapper.selectByPrimaryKey(datasetTable.getDataSourceId()); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); Provider datasourceProvider = ProviderFactory.getProvider(ds.getType()); DatasourceRequest datasourceRequest = new DatasourceRequest(); datasourceRequest.setDatasource(ds); - if (StringUtils.isNotEmpty(datasetTableIncrementalConfig.getIncrementalAdd()) - && StringUtils.isNotEmpty(datasetTableIncrementalConfig.getIncrementalAdd().replace(" ", ""))) {// 增量添加 - String sql = datasetTableIncrementalConfig.getIncrementalAdd() - .replace(lastUpdateTime, Long.valueOf(System.currentTimeMillis()).toString()) - .replace(currentUpdateTime, Long.valueOf(System.currentTimeMillis()).toString()); + if (StringUtils.isNotEmpty(datasetTableIncrementalConfig.getIncrementalAdd()) && StringUtils.isNotEmpty(datasetTableIncrementalConfig.getIncrementalAdd().replace(" ", ""))) {// 增量添加 + String sql = datasetTableIncrementalConfig.getIncrementalAdd().replace(lastUpdateTime, Long.valueOf(System.currentTimeMillis()).toString()).replace(currentUpdateTime, Long.valueOf(System.currentTimeMillis()).toString()); datasourceRequest.setQuery(qp.wrapSql(sql)); List sqlFields = new ArrayList<>(); try { - datasourceProvider.fetchResultField(datasourceRequest).stream().map(TableField::getFieldName) - .forEach(sqlFields::add); + datasourceProvider.fetchResultField(datasourceRequest).stream().map(TableField::getFieldName).forEach(sqlFields::add); } catch (Exception e) { DataEaseException.throwException(Translator.get("i18n_check_sql_error") + e.getMessage()); } @@ -2321,16 +2113,12 @@ public class DataSetTableService { DataEaseException.throwException(Translator.get("i18n_sql_add_not_matching") + sqlFields.toString()); } } - if (StringUtils.isNotEmpty(datasetTableIncrementalConfig.getIncrementalDelete()) - && StringUtils.isNotEmpty(datasetTableIncrementalConfig.getIncrementalDelete().replace(" ", ""))) {// 增量删除 - String sql = datasetTableIncrementalConfig.getIncrementalDelete() - .replace(lastUpdateTime, Long.valueOf(System.currentTimeMillis()).toString()) - .replace(currentUpdateTime, Long.valueOf(System.currentTimeMillis()).toString()); + if (StringUtils.isNotEmpty(datasetTableIncrementalConfig.getIncrementalDelete()) && StringUtils.isNotEmpty(datasetTableIncrementalConfig.getIncrementalDelete().replace(" ", ""))) {// 增量删除 + String sql = datasetTableIncrementalConfig.getIncrementalDelete().replace(lastUpdateTime, Long.valueOf(System.currentTimeMillis()).toString()).replace(currentUpdateTime, Long.valueOf(System.currentTimeMillis()).toString()); datasourceRequest.setQuery(qp.wrapSql(sql)); List sqlFields = new ArrayList<>(); try { - datasourceProvider.fetchResultField(datasourceRequest).stream().map(TableField::getFieldName) - .forEach(sqlFields::add); + datasourceProvider.fetchResultField(datasourceRequest).stream().map(TableField::getFieldName).forEach(sqlFields::add); } catch (Exception e) { DataEaseException.throwException(Translator.get("i18n_check_sql_error") + e.getMessage()); } @@ -2475,9 +2263,7 @@ public class DataSetTableService { } else { returnSheetDataList = excelSheetDataList; } - returnSheetDataList = returnSheetDataList.stream() - .filter(excelSheetData -> CollectionUtils.isNotEmpty(excelSheetData.getFields())) - .collect(Collectors.toList()); + returnSheetDataList = returnSheetDataList.stream().filter(excelSheetData -> CollectionUtils.isNotEmpty(excelSheetData.getFields())).collect(Collectors.toList()); // save file String excelId = UUID.randomUUID().toString(); String filePath = saveFile(file, excelId); @@ -2543,8 +2329,7 @@ public class DataSetTableService { return excelSheetDataList; } - public List parseExcel(String filename, InputStream inputStream, boolean isPreview) - throws Exception { + public List parseExcel(String filename, InputStream inputStream, boolean isPreview) throws Exception { List excelSheetDataList = new ArrayList<>(); String suffix = filename.substring(filename.lastIndexOf(".") + 1); if (StringUtils.equalsIgnoreCase(suffix, "xls")) { @@ -2635,8 +2420,7 @@ public class DataSetTableService { double eps = 1e-10; if (value - Math.floor(value) < eps) { if (cellType) { - if (StringUtils.isEmpty(tableField.getFieldType()) - || tableField.getFieldType().equalsIgnoreCase("TEXT")) { + if (StringUtils.isEmpty(tableField.getFieldType()) || tableField.getFieldType().equalsIgnoreCase("TEXT")) { tableField.setFieldType("LONG"); } } @@ -2687,8 +2471,7 @@ public class DataSetTableService { double eps = 1e-10; if (value - Math.floor(value) < eps) { if (cellType) { - if (StringUtils.isEmpty(tableField.getFieldType()) - || tableField.getFieldType().equalsIgnoreCase("TEXT")) { + if (StringUtils.isEmpty(tableField.getFieldType()) || tableField.getFieldType().equalsIgnoreCase("TEXT")) { tableField.setFieldType("LONG"); } } @@ -2761,10 +2544,7 @@ public class DataSetTableService { private void doUpdate() { List qrtzSchedulerStates = qrtzSchedulerStateMapper.selectByExample(null); - List activeQrtzInstances = qrtzSchedulerStates.stream() - .filter(qrtzSchedulerState -> qrtzSchedulerState.getLastCheckinTime() - + qrtzSchedulerState.getCheckinInterval() + 1000 > utilMapper.currentTimestamp()) - .map(QrtzSchedulerStateKey::getInstanceName).collect(Collectors.toList()); + List activeQrtzInstances = qrtzSchedulerStates.stream().filter(qrtzSchedulerState -> qrtzSchedulerState.getLastCheckinTime() + qrtzSchedulerState.getCheckinInterval() + 1000 > utilMapper.currentTimestamp()).map(QrtzSchedulerStateKey::getInstanceName).collect(Collectors.toList()); DatasetTableExample example = new DatasetTableExample(); example.createCriteria().andSyncStatusEqualTo(JobStatus.Underway.name()); @@ -2811,8 +2591,7 @@ public class DataSetTableService { DatasetTable record = new DatasetTable(); record.setSyncStatus(JobStatus.Error.name()); example.clear(); - example.createCriteria().andSyncStatusEqualTo(JobStatus.Underway.name()) - .andIdIn(jobStoppeddDatasetTables.stream().map(DatasetTable::getId).collect(Collectors.toList())); + example.createCriteria().andSyncStatusEqualTo(JobStatus.Underway.name()).andIdIn(jobStoppeddDatasetTables.stream().map(DatasetTable::getId).collect(Collectors.toList())); datasetTableMapper.updateByExampleSelective(record, example); //TaskLog @@ -2821,8 +2600,7 @@ public class DataSetTableService { datasetTableTaskLog.setInfo("Job stopped due to system error."); DatasetTableTaskLogExample datasetTableTaskLogExample = new DatasetTableTaskLogExample(); - datasetTableTaskLogExample.createCriteria().andStatusEqualTo(JobStatus.Underway.name()) - .andTableIdIn(datasetTableTasks.stream().map(DatasetTableTask::getTableId).collect(Collectors.toList())); + datasetTableTaskLogExample.createCriteria().andStatusEqualTo(JobStatus.Underway.name()).andTableIdIn(datasetTableTasks.stream().map(DatasetTableTask::getTableId).collect(Collectors.toList())); datasetTableTaskLogMapper.updateByExampleSelective(datasetTableTaskLog, datasetTableTaskLogExample); for (DatasetTableTask datasetTableTask : datasetTableTasks) { @@ -2864,6 +2642,7 @@ public class DataSetTableService { } private ExpressionDeParser getExpressionDeParser(StringBuilder stringBuilder) { + SelectDeParser selectDeParser = new SelectDeParser(stringBuilder); ExpressionDeParser expressionDeParser = new ExpressionDeParser(null, stringBuilder) { @Override public void visit(Parenthesis parenthesis) { @@ -2879,7 +2658,7 @@ public class DataSetTableService { @Override public void visit(AndExpression andExpression) { - visitBinaryExpr(andExpression, "AND"); + visitBinaryExpr(andExpression, andExpression.isUseOperator() ? " && " : " AND "); } @Override @@ -2952,9 +2731,7 @@ public class DataSetTableService { getBuffer().append(SubstitutedSql); return; } - - visitBinaryExpression(likeExpression, - (likeExpression.isNot() ? " NOT" : "") + (likeExpression.isCaseInsensitive() ? " ILIKE " : " LIKE ")); + visitBinaryExpression(likeExpression, (likeExpression.isNot() ? " NOT" : "") + (likeExpression.isCaseInsensitive() ? " ILIKE " : " LIKE ")); if (likeExpression.getEscape() != null) { buffer.append(" ESCAPE '").append(likeExpression.getEscape()).append('\''); } @@ -2962,43 +2739,32 @@ public class DataSetTableService { @Override public void visit(InExpression inExpression) { - if (inExpression.getRightItemsList() != null && hasVariable(inExpression.getRightItemsList().toString())) { - stringBuilder.append(SubstitutedSql); - return; - } - if (inExpression.getRightExpression() != null && inExpression.getRightExpression().toString().equals(SubstitutedParams)) { + if (inExpression.getRightExpression() != null && hasVariable(inExpression.getRightExpression().toString()) && inExpression.getRightExpression() instanceof ParenthesedExpressionList) { stringBuilder.append(SubstitutedSql); return; } inExpression.getLeftExpression().accept(this); + if (inExpression.isNot()) { getBuffer().append(" " + " NOT IN " + " "); } else { getBuffer().append(" IN "); } - if (inExpression.getRightItemsList() != null) { - getBuffer().append(inExpression.getRightItemsList()); - } - if (inExpression.getRightExpression() != null) { - getBuffer().append(" ( "); - if (inExpression.getRightExpression() instanceof SubSelect) { - try { - SubSelect subSelect = (SubSelect) inExpression.getRightExpression(); - Select select = (Select) CCJSqlParserUtil.parse(removeVariables(subSelect.getSelectBody().toString(), "")); - subSelect.setSelectBody(select.getSelectBody()); - inExpression.setRightExpression(subSelect); - }catch (Exception e){ - e.printStackTrace(); - } + if (inExpression.getRightExpression() != null && inExpression.getRightExpression() instanceof ParenthesedSelect) { + try { + ParenthesedSelect subSelect = (ParenthesedSelect) inExpression.getRightExpression(); + Select select = (Select) CCJSqlParserUtil.parse(removeVariables(subSelect.getPlainSelect().toString(), "")); + subSelect.setSelect(select); + inExpression.setRightExpression(subSelect); + } catch (Exception e) { + e.printStackTrace(); } inExpression.getRightExpression().accept(this); - getBuffer().append(" )"); } } - @Override - public void visit(SubSelect subSelect) { + public void visit(ParenthesedSelect subSelect) { StringBuilder stringBuilder = new StringBuilder(); Expression in = ((PlainSelect) subSelect.getSelectBody()).getWhere(); if (in instanceof BinaryExpression && hasVariable(in.toString())) { @@ -3016,6 +2782,11 @@ public class DataSetTableService { } } + @Override + public void visit(Select selectBody) { + getBuffer().append(selectBody.toString()); + } + private void visitBinaryExpr(BinaryExpression expr, String operator) { boolean hasSubBinaryExpression = false; @@ -3056,8 +2827,7 @@ public class DataSetTableService { public void createAppCustomDorisView(String datasetInfo, String tableId) throws Exception { DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(datasetInfo, DataTableInfoDTO.class); - createDorisView(TableUtils.tableName(tableId), getCustomViewSQL(dataTableInfoDTO, - dataSetTableUnionService.listByTableId(dataTableInfoDTO.getList().get(0).getTableId()))); + createDorisView(TableUtils.tableName(tableId), getCustomViewSQL(dataTableInfoDTO, dataSetTableUnionService.listByTableId(dataTableInfoDTO.getList().get(0).getTableId()))); } public void createAppUnionDorisView(String datasetInfo, String tableId) throws Exception {