fix: 底层sql逻辑

This commit is contained in:
junjie 2021-07-28 19:47:10 +08:00
parent 4a2867ee50
commit 333df18a7f
5 changed files with 17 additions and 10 deletions

View File

@ -130,7 +130,8 @@ public class DorisQueryProvider extends QueryProvider {
STGroup stg = new STGroupFile(SQLConstants.SQL_TEMPLATE);
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 ((fields.size() > 0)) {
xOrders.add(SQLObj.builder()

View File

@ -128,7 +128,8 @@ public class MysqlQueryProvider extends QueryProvider {
STGroup stg = new STGroupFile(SQLConstants.SQL_TEMPLATE);
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);
return st_sql.render();
}

View File

@ -102,7 +102,8 @@ public class OracleQueryProvider extends QueryProvider {
STGroup stg = new STGroupFile(SQLConstants.SQL_TEMPLATE);
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);
return st_sql.render();
}

View File

@ -9,11 +9,13 @@ import io.dataease.datasource.provider.DatasourceProvider;
import io.dataease.datasource.provider.ProviderFactory;
import io.dataease.datasource.request.DatasourceRequest;
import io.dataease.datasource.service.DatasourceService;
import io.dataease.dto.dataset.DataSetTableUnionDTO;
import io.dataease.dto.dataset.DataTableInfoDTO;
import io.dataease.provider.QueryProvider;
import io.dataease.service.dataset.DataSetFieldService;
import io.dataease.service.dataset.DataSetTableFieldsService;
import io.dataease.service.dataset.DataSetTableService;
import io.dataease.service.dataset.DataSetTableUnionService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
@ -28,17 +30,14 @@ import java.util.stream.Collectors;
@Service("directDataSetFieldService")
public class DirectFieldService implements DataSetFieldService {
@Resource
private DataSetTableFieldsService dataSetTableFieldsService;
@Resource
private DataSetTableService dataSetTableService;
@Resource
private DatasourceService datasourceService;
@Resource
private DataSetTableUnionService dataSetTableUnionService;
@Override
public List<Object> fieldValues(String fieldId) {
@ -71,6 +70,11 @@ public class DirectFieldService implements DataSetFieldService {
datasourceRequest.setQuery(qp.createQuerySQL(dataTableInfoDTO.getTable(), Collections.singletonList(field), true));
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "sql")) {
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) {// 抽取
// 连接doris构建doris数据源查询

View File

@ -1,4 +1,4 @@
querySql(groups, aggregators, filters, orders, table)
querySql(groups, aggregators, filters, orders, table, isGroup)
::=<<
SELECT
<if(!groups && !aggregators)>
@ -17,7 +17,7 @@ FROM
WHERE
<filters:{filter|<if(filter)><filter.whereField> <filter.whereTermAndValue><endif>}; separator="\nAND ">
<endif>
<if(groups)>
<if(isGroup && groups)>
GROUP BY
<groups:{group|<if(group)><group.fieldName><endif>}; separator=",\n">
<endif>