提交 2938c229 authored 作者: junjie's avatar junjie

feat(数据集):sql fix

上级 3f7a7977
...@@ -328,9 +328,10 @@ public class DataSetTableService { ...@@ -328,9 +328,10 @@ public class DataSetTableService {
String sql = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class).getSql(); String sql = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class).getSql();
// 使用输入的sql先预执行一次 // 使用输入的sql先预执行一次
datasourceRequest.setQuery(sql); datasourceRequest.setQuery(sql);
datasourceProvider.fetchResultAndField(datasourceRequest); Map<String, List> stringListMap = datasourceProvider.fetchResultAndField(datasourceRequest);
List<TableFiled> previewFields = stringListMap.get("fieldList");
// 正式执行 // 正式执行
datasourceRequest.setQuery("SELECT * FROM (" + sql + ") AS tmp LIMIT 0,1000"); datasourceRequest.setQuery("SELECT * FROM (" + sql + ") AS tmp ORDER BY " + previewFields.get(0).getFieldName() + " LIMIT 0,1000");
Map<String, List> result = datasourceProvider.fetchResultAndField(datasourceRequest); Map<String, List> result = datasourceProvider.fetchResultAndField(datasourceRequest);
List<String[]> data = result.get("dataList"); List<String[]> data = result.get("dataList");
List<TableFiled> fields = result.get("fieldList"); List<TableFiled> fields = result.get("fieldList");
...@@ -363,8 +364,12 @@ public class DataSetTableService { ...@@ -363,8 +364,12 @@ public class DataSetTableService {
DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class); DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class);
List<DataSetTableUnionDTO> list = dataSetTableUnionService.listByTableId(dataTableInfoDTO.getList().get(0).getTableId()); List<DataSetTableUnionDTO> list = dataSetTableUnionService.listByTableId(dataTableInfoDTO.getList().get(0).getTableId());
// 使用输入的sql先预执行一次
datasourceRequest.setQuery(getCustomSQL(dataTableInfoDTO, list));
Map<String, List> stringListMap = jdbcProvider.fetchResultAndField(datasourceRequest);
List<TableFiled> previewFields = stringListMap.get("fieldList");
datasourceRequest.setQuery("SELECT * FROM (" + getCustomSQL(dataTableInfoDTO, list) + ") AS tmp LIMIT 0,1000"); datasourceRequest.setQuery("SELECT * FROM (" + getCustomSQL(dataTableInfoDTO, list) + ") AS tmp ORDER BY " + previewFields.get(0).getFieldName() + " LIMIT 0,1000");
Map<String, List> result = jdbcProvider.fetchResultAndField(datasourceRequest); Map<String, List> result = jdbcProvider.fetchResultAndField(datasourceRequest);
List<String[]> data = result.get("dataList"); List<String[]> data = result.get("dataList");
List<TableFiled> fields = result.get("fieldList"); List<TableFiled> fields = result.get("fieldList");
...@@ -553,11 +558,11 @@ public class DataSetTableService { ...@@ -553,11 +558,11 @@ public class DataSetTableService {
DatasourceTypes datasourceType = DatasourceTypes.valueOf(type); DatasourceTypes datasourceType = DatasourceTypes.valueOf(type);
switch (datasourceType) { switch (datasourceType) {
case mysql: case mysql:
return MessageFormat.format("SELECT {0} FROM {1}", StringUtils.join(fields, ","), table); return MessageFormat.format("SELECT {0} FROM {1} ORDER BY " + fields[0], StringUtils.join(fields, ","), table);
case sqlServer: case sqlServer:
return MessageFormat.format("SELECT {0} FROM {1}", StringUtils.join(fields, ","), table); return MessageFormat.format("SELECT {0} FROM {1} ORDER BY " + fields[0], StringUtils.join(fields, ","), table);
default: default:
return MessageFormat.format("SELECT {0} FROM {1}", StringUtils.join(fields, ","), table); return MessageFormat.format("SELECT {0} FROM {1} ORDER BY " + fields[0], StringUtils.join(fields, ","), table);
} }
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论