提交 62775ac2 authored 作者: junjie's avatar junjie

fix: 底层sql逻辑

上级 d2fbc795
...@@ -130,7 +130,8 @@ public class DorisQueryProvider extends QueryProvider { ...@@ -130,7 +130,8 @@ public class DorisQueryProvider extends QueryProvider {
STGroup stg = new STGroupFile(SQLConstants.SQL_TEMPLATE); STGroup stg = new STGroupFile(SQLConstants.SQL_TEMPLATE);
ST st_sql = stg.getInstanceOf("querySql"); ST st_sql = stg.getInstanceOf("querySql");
if (isGroup && CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
if ((fields.size() > 0)) { if ((fields.size() > 0)) {
xOrders.add(SQLObj.builder() xOrders.add(SQLObj.builder()
......
...@@ -128,7 +128,8 @@ public class MysqlQueryProvider extends QueryProvider { ...@@ -128,7 +128,8 @@ public class MysqlQueryProvider extends QueryProvider {
STGroup stg = new STGroupFile(SQLConstants.SQL_TEMPLATE); STGroup stg = new STGroupFile(SQLConstants.SQL_TEMPLATE);
ST st_sql = stg.getInstanceOf("querySql"); ST st_sql = stg.getInstanceOf("querySql");
if (isGroup && CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
return st_sql.render(); return st_sql.render();
} }
......
...@@ -101,7 +101,8 @@ public class OracleQueryProvider extends QueryProvider { ...@@ -101,7 +101,8 @@ public class OracleQueryProvider extends QueryProvider {
STGroup stg = new STGroupFile(SQLConstants.SQL_TEMPLATE); STGroup stg = new STGroupFile(SQLConstants.SQL_TEMPLATE);
ST st_sql = stg.getInstanceOf("querySql"); ST st_sql = stg.getInstanceOf("querySql");
if (isGroup && CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields); st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj); if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
return st_sql.render(); return st_sql.render();
} }
......
...@@ -9,11 +9,13 @@ import io.dataease.datasource.provider.DatasourceProvider; ...@@ -9,11 +9,13 @@ import io.dataease.datasource.provider.DatasourceProvider;
import io.dataease.datasource.provider.ProviderFactory; import io.dataease.datasource.provider.ProviderFactory;
import io.dataease.datasource.request.DatasourceRequest; import io.dataease.datasource.request.DatasourceRequest;
import io.dataease.datasource.service.DatasourceService; import io.dataease.datasource.service.DatasourceService;
import io.dataease.dto.dataset.DataSetTableUnionDTO;
import io.dataease.dto.dataset.DataTableInfoDTO; import io.dataease.dto.dataset.DataTableInfoDTO;
import io.dataease.provider.QueryProvider; import io.dataease.provider.QueryProvider;
import io.dataease.service.dataset.DataSetFieldService; import io.dataease.service.dataset.DataSetFieldService;
import io.dataease.service.dataset.DataSetTableFieldsService; import io.dataease.service.dataset.DataSetTableFieldsService;
import io.dataease.service.dataset.DataSetTableService; import io.dataease.service.dataset.DataSetTableService;
import io.dataease.service.dataset.DataSetTableUnionService;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -28,17 +30,14 @@ import java.util.stream.Collectors; ...@@ -28,17 +30,14 @@ import java.util.stream.Collectors;
@Service("directDataSetFieldService") @Service("directDataSetFieldService")
public class DirectFieldService implements DataSetFieldService { public class DirectFieldService implements DataSetFieldService {
@Resource @Resource
private DataSetTableFieldsService dataSetTableFieldsService; private DataSetTableFieldsService dataSetTableFieldsService;
@Resource @Resource
private DataSetTableService dataSetTableService; private DataSetTableService dataSetTableService;
@Resource @Resource
private DatasourceService datasourceService; private DatasourceService datasourceService;
@Resource
private DataSetTableUnionService dataSetTableUnionService;
@Override @Override
public List<Object> fieldValues(String fieldId) { public List<Object> fieldValues(String fieldId) {
...@@ -71,6 +70,11 @@ public class DirectFieldService implements DataSetFieldService { ...@@ -71,6 +70,11 @@ public class DirectFieldService implements DataSetFieldService {
datasourceRequest.setQuery(qp.createQuerySQL(dataTableInfoDTO.getTable(), Collections.singletonList(field), true)); datasourceRequest.setQuery(qp.createQuerySQL(dataTableInfoDTO.getTable(), Collections.singletonList(field), true));
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "sql")) { } else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "sql")) {
datasourceRequest.setQuery(qp.createQuerySQLAsTmp(dataTableInfoDTO.getSql(), Collections.singletonList(field), true)); datasourceRequest.setQuery(qp.createQuerySQLAsTmp(dataTableInfoDTO.getSql(), Collections.singletonList(field), true));
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "custom")) {
DataTableInfoDTO dt = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class);
List<DataSetTableUnionDTO> listUnion = dataSetTableUnionService.listByTableId(dt.getList().get(0).getTableId());
String sql = dataSetTableService.getCustomSQLDatasource(dt, listUnion, ds);
datasourceRequest.setQuery(qp.createQuerySQLAsTmp(sql, Collections.singletonList(field), true));
} }
} else if (datasetTable.getMode() == 1) {// 抽取 } else if (datasetTable.getMode() == 1) {// 抽取
// 连接doris,构建doris数据源查询 // 连接doris,构建doris数据源查询
......
querySql(groups, aggregators, filters, orders, table) querySql(groups, aggregators, filters, orders, table, isGroup)
::=<< ::=<<
SELECT SELECT
<if(!groups && !aggregators)> <if(!groups && !aggregators)>
...@@ -17,7 +17,7 @@ FROM ...@@ -17,7 +17,7 @@ FROM
WHERE WHERE
<filters:{filter|<if(filter)><filter.whereField> <filter.whereTermAndValue><endif>}; separator="\nAND "> <filters:{filter|<if(filter)><filter.whereField> <filter.whereTermAndValue><endif>}; separator="\nAND ">
<endif> <endif>
<if(groups)> <if(isGroup && groups)>
GROUP BY GROUP BY
<groups:{group|<if(group)><group.fieldName><endif>}; separator=",\n"> <groups:{group|<if(group)><group.fieldName><endif>}; separator=",\n">
<endif> <endif>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论