forked from github/dataease
feat(fix):直连数据集限制预览数目;数据源文字替换
This commit is contained in:
parent
07f520698c
commit
c084ac68cf
@ -68,7 +68,7 @@ public class MysqlQueryProvider extends QueryProvider {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createSQLPreview(String sql, String orderBy) {
|
public String createSQLPreview(String sql, String orderBy) {
|
||||||
return "SELECT * FROM (" + sqlFix(sql) + ") AS tmp ORDER BY " + orderBy + " LIMIT 0,1000";
|
return "SELECT * FROM (" + sqlFix(sql) + ") AS tmp ORDER BY null " + " LIMIT 0,1000";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -102,7 +102,8 @@ public class MysqlQueryProvider extends QueryProvider {
|
|||||||
return stringBuilder.toString();
|
return stringBuilder.toString();
|
||||||
}).toArray(String[]::new);
|
}).toArray(String[]::new);
|
||||||
|
|
||||||
return MessageFormat.format("SELECT {0} FROM {1} ORDER BY " + (fields.size() > 0 ? fields.get(0).getOriginName() : "null"), StringUtils.join(array, ","), table);
|
// return MessageFormat.format("SELECT {0} FROM {1} ORDER BY " + (fields.size() > 0 ? fields.get(0).getOriginName() : "null"), StringUtils.join(array, ","), table);
|
||||||
|
return MessageFormat.format("SELECT {0} FROM {1} ORDER BY null", StringUtils.join(array, ","), table);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -271,8 +271,9 @@ public class DataSetTableService {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
datasourceRequest.setQuery(qp.createQueryCountSQL(table));
|
// datasourceRequest.setQuery(qp.createQueryCountSQL(table));
|
||||||
dataSetPreviewPage.setTotal(Integer.valueOf(datasourceProvider.getData(datasourceRequest).get(0)[0]));
|
// dataSetPreviewPage.setTotal(Integer.valueOf(datasourceProvider.getData(datasourceRequest).get(0)[0]));
|
||||||
|
dataSetPreviewPage.setTotal(Integer.parseInt(dataSetTableRequest.getRow()));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
@ -294,8 +295,9 @@ public class DataSetTableService {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
datasourceRequest.setQuery(qp.createQueryCountSQLAsTmp(sql));
|
// datasourceRequest.setQuery(qp.createQueryCountSQLAsTmp(sql));
|
||||||
dataSetPreviewPage.setTotal(Integer.valueOf(datasourceProvider.getData(datasourceRequest).get(0)[0]));
|
// dataSetPreviewPage.setTotal(Integer.valueOf(datasourceProvider.getData(datasourceRequest).get(0)[0]));
|
||||||
|
dataSetPreviewPage.setTotal(Integer.parseInt(dataSetTableRequest.getRow()));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
@ -383,15 +385,16 @@ public class DataSetTableService {
|
|||||||
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
||||||
datasourceRequest.setDatasource(ds);
|
datasourceRequest.setDatasource(ds);
|
||||||
String sql = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class).getSql();
|
String sql = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class).getSql();
|
||||||
// 使用输入的sql先预执行一次,并拿到所有字段
|
|
||||||
if (StringUtils.isEmpty(sql)) {
|
if (StringUtils.isEmpty(sql)) {
|
||||||
throw new Exception(Translator.get("i18n_sql_not_empty"));
|
throw new Exception(Translator.get("i18n_sql_not_empty"));
|
||||||
}
|
}
|
||||||
datasourceRequest.setQuery(sql);
|
|
||||||
List<TableFiled> previewFields = datasourceProvider.fetchResultField(datasourceRequest);
|
|
||||||
// 正式执行
|
|
||||||
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
|
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
|
||||||
datasourceRequest.setQuery(qp.createSQLPreview(sql, previewFields.get(0).getFieldName()));
|
String sqlAsTable = qp.createSQLPreview(sql, null);
|
||||||
|
// datasourceRequest.setQuery(sqlAsTable);
|
||||||
|
// List<TableFiled> previewFields = datasourceProvider.fetchResultField(datasourceRequest);
|
||||||
|
// 正式执行
|
||||||
|
datasourceRequest.setQuery(sqlAsTable);
|
||||||
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");
|
||||||
@ -545,7 +548,9 @@ public class DataSetTableService {
|
|||||||
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(ds.getType());
|
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(ds.getType());
|
||||||
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
||||||
datasourceRequest.setDatasource(ds);
|
datasourceRequest.setDatasource(ds);
|
||||||
datasourceRequest.setQuery(new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class).getSql());
|
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
|
||||||
|
String sqlAsTable = qp.createSQLPreview(new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class).getSql(), null);
|
||||||
|
datasourceRequest.setQuery(sqlAsTable);
|
||||||
fields = datasourceProvider.fetchResultField(datasourceRequest);
|
fields = datasourceProvider.fetchResultField(datasourceRequest);
|
||||||
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "excel")) {
|
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "excel")) {
|
||||||
DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class);
|
DataTableInfoDTO dataTableInfoDTO = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class);
|
||||||
|
@ -808,7 +808,7 @@ export default {
|
|||||||
preview_show: 'Display',
|
preview_show: 'Display',
|
||||||
preview_item: 'items data',
|
preview_item: 'items data',
|
||||||
preview_total: 'Total',
|
preview_total: 'Total',
|
||||||
pls_input_less_9: 'Please input integer less 9',
|
pls_input_less_5: 'Please input integer less 5',
|
||||||
field_edit: 'Edit Field',
|
field_edit: 'Edit Field',
|
||||||
table_already_add_to: 'This table is already add to',
|
table_already_add_to: 'This table is already add to',
|
||||||
uploading: 'Uploading...',
|
uploading: 'Uploading...',
|
||||||
|
@ -808,7 +808,7 @@ export default {
|
|||||||
preview_show: '顯示',
|
preview_show: '顯示',
|
||||||
preview_item: '條數據',
|
preview_item: '條數據',
|
||||||
preview_total: '共',
|
preview_total: '共',
|
||||||
pls_input_less_9: '請輸入9位以內的正整數',
|
pls_input_less_5: '請輸入5位以內的正整數',
|
||||||
field_edit: '編輯字段',
|
field_edit: '編輯字段',
|
||||||
table_already_add_to: '該表已添加至',
|
table_already_add_to: '該表已添加至',
|
||||||
uploading: '上傳中...',
|
uploading: '上傳中...',
|
||||||
|
@ -808,7 +808,7 @@ export default {
|
|||||||
preview_show: '显示',
|
preview_show: '显示',
|
||||||
preview_item: '条数据',
|
preview_item: '条数据',
|
||||||
preview_total: '共',
|
preview_total: '共',
|
||||||
pls_input_less_9: '请输入9位以内的正整数',
|
pls_input_less_5: '请输入5位以内的正整数',
|
||||||
field_edit: '编辑字段',
|
field_edit: '编辑字段',
|
||||||
table_already_add_to: '该表已添加至',
|
table_already_add_to: '该表已添加至',
|
||||||
uploading: '上传中...',
|
uploading: '上传中...',
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
<el-form-item>
|
<el-form-item>
|
||||||
<span style="width: 100px;">{{ $t('dataset.showRow') }}</span>
|
<span style="width: 100px;">{{ $t('dataset.showRow') }}</span>
|
||||||
<el-input v-model="form.row">
|
<el-input v-model="form.row">
|
||||||
<el-button size="mini" slot="append" icon="el-icon-search" @click="reSearch" />
|
<el-button slot="append" size="mini" icon="el-icon-search" @click="reSearch" />
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
@ -36,7 +36,7 @@
|
|||||||
</ux-table-column>
|
</ux-table-column>
|
||||||
</ux-grid>
|
</ux-grid>
|
||||||
<el-row style="margin-top: 4px;">
|
<el-row style="margin-top: 4px;">
|
||||||
<span class="table-count">
|
<span v-if="table.type === 'excel' || table.type === 'custom'" class="table-count">
|
||||||
<span v-if="page.total <= currentPage.show">
|
<span v-if="page.total <= currentPage.show">
|
||||||
{{ $t('dataset.preview_total') }}
|
{{ $t('dataset.preview_total') }}
|
||||||
<span class="span-number">{{ page.total }}</span>
|
<span class="span-number">{{ page.total }}</span>
|
||||||
@ -51,6 +51,11 @@
|
|||||||
{{ $t('dataset.preview_item') }}
|
{{ $t('dataset.preview_item') }}
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
|
<span v-if="table.type === 'db' || table.type === 'sql'" class="table-count">
|
||||||
|
{{ $t('dataset.preview_show') }}
|
||||||
|
<span class="span-number">{{ page.total }}</span>
|
||||||
|
{{ $t('dataset.preview_item') }}
|
||||||
|
</span>
|
||||||
<el-pagination
|
<el-pagination
|
||||||
:current-page="currentPage.page"
|
:current-page="currentPage.page"
|
||||||
:page-sizes="[100]"
|
:page-sizes="[100]"
|
||||||
@ -129,9 +134,9 @@ export default {
|
|||||||
}, 10)
|
}, 10)
|
||||||
},
|
},
|
||||||
reSearch() {
|
reSearch() {
|
||||||
if (!this.form.row || this.form.row === '' || this.form.row.length > 8 || isNaN(Number(this.form.row)) || String(this.form.row).includes('.')) {
|
if (!this.form.row || this.form.row === '' || this.form.row.length > 4 || isNaN(Number(this.form.row)) || String(this.form.row).includes('.')) {
|
||||||
this.$message({
|
this.$message({
|
||||||
message: this.$t('dataset.pls_input_less_9'),
|
message: this.$t('dataset.pls_input_less_5'),
|
||||||
type: 'error',
|
type: 'error',
|
||||||
showClose: true
|
showClose: true
|
||||||
})
|
})
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
<el-option
|
<el-option
|
||||||
v-for="item in allTypes"
|
v-for="item in allTypes"
|
||||||
:key="item.name"
|
:key="item.name"
|
||||||
:label="item.name"
|
:label="item.label"
|
||||||
:value="item.name"
|
:value="item.name"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
@ -65,7 +65,8 @@ export default {
|
|||||||
'configuration.host': [{ required: true, message: this.$t('datasource.please_input_host'), trigger: 'change' }],
|
'configuration.host': [{ required: true, message: this.$t('datasource.please_input_host'), trigger: 'change' }],
|
||||||
'configuration.port': [{ required: true, message: this.$t('datasource.please_input_port'), trigger: 'change' }]
|
'configuration.port': [{ required: true, message: this.$t('datasource.please_input_port'), trigger: 'change' }]
|
||||||
},
|
},
|
||||||
allTypes: [{ name: 'mysql', type: 'jdbc' }, { name: 'sqlServer', type: 'jdbc' }]
|
allTypes: [{ name: 'mysql', label: 'MySQL', type: 'jdbc' },
|
||||||
|
{ name: 'sqlServer', label: 'SQL Server', type: 'jdbc' }]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -18,7 +18,12 @@
|
|||||||
<!-- <el-table-column type="selection" fix /> -->
|
<!-- <el-table-column type="selection" fix /> -->
|
||||||
<el-table-column prop="name" :label="$t('commons.name')" />
|
<el-table-column prop="name" :label="$t('commons.name')" />
|
||||||
<el-table-column prop="desc" :label="$t('commons.description')" />
|
<el-table-column prop="desc" :label="$t('commons.description')" />
|
||||||
<el-table-column prop="type" :label="$t('datasource.type')" />
|
<el-table-column prop="type" :label="$t('datasource.type')">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span v-if="scope.row.type ==='mysql'">MySQL</span>
|
||||||
|
<span v-if="scope.row.type ==='sqlserver'">SQL Server</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<fu-table-operations :buttons="buttons" :label="$t('commons.operating')" fix />
|
<fu-table-operations :buttons="buttons" :label="$t('commons.operating')" fix />
|
||||||
|
|
||||||
</complex-table>
|
</complex-table>
|
||||||
|
Loading…
Reference in New Issue
Block a user