Merge pull request #4675 from dataease/pr@dev@pages

Pr@dev@pages
This commit is contained in:
taojinlong 2023-03-01 18:14:56 +08:00 committed by GitHub
commit 3f2ab03880
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 98 additions and 20 deletions

View File

@ -56,11 +56,7 @@ public class MysqlDDLProvider extends DDLProviderImpl {
Integer size = datasetTableField.getSize() * 4; Integer size = datasetTableField.getSize() * 4;
switch (datasetTableField.getDeExtractType()) { switch (datasetTableField.getDeExtractType()) {
case 0: case 0:
if (size < 65533) { Column_Fields.append("longtext").append(",`");
Column_Fields.append("varchar(length)".replace("length", String.valueOf(datasetTableField.getSize()))).append(",`");
}else {
Column_Fields.append("longtext").append(",`");
}
break; break;
case 1: case 1:
size = size < 50? 50 : size; size = size < 50? 50 : size;

View File

@ -71,6 +71,8 @@ import java.math.RoundingMode;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.locks.ReentrantLock;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -1795,8 +1797,7 @@ public class ChartViewService {
} }
private String handleVariable(String sql, ChartExtRequest requestList, QueryProvider qp, DataSetTableDTO table, Datasource ds) throws Exception { private String handleVariable(String sql, ChartExtRequest requestList, QueryProvider qp, DataSetTableDTO table, Datasource ds) throws Exception {
List<SqlVariableDetails> sqlVariables = new Gson().fromJson(table.getSqlVariableDetails(), new TypeToken<List<SqlVariableDetails>>() { List<SqlVariableDetails> sqlVariables = new Gson().fromJson(table.getSqlVariableDetails(), new TypeToken<List<SqlVariableDetails>>() {}.getType());
}.getType());
if (requestList != null && CollectionUtils.isNotEmpty(requestList.getFilter())) { if (requestList != null && CollectionUtils.isNotEmpty(requestList.getFilter())) {
for (ChartExtFilterRequest chartExtFilterRequest : requestList.getFilter()) { for (ChartExtFilterRequest chartExtFilterRequest : requestList.getFilter()) {
if (CollectionUtils.isEmpty(chartExtFilterRequest.getValue())) { if (CollectionUtils.isEmpty(chartExtFilterRequest.getValue())) {
@ -1845,7 +1846,7 @@ public class ChartViewService {
} }
} }
} }
sql = dataSetTableService.removeVariables(sql, ds.getType()); sql = dataSetTableService.handleVariableDefaultValue(sql, table.getSqlVariableDetails(), ds.getType());
return sql; return sql;
} }

View File

@ -123,7 +123,6 @@ public class ViewPluginBaseServiceImpl implements ViewPluginBaseService {
case SQL: case SQL:
String sql = dataTableInfoDTO.isBase64Encryption() ? new String(java.util.Base64.getDecoder().decode(dataTableInfoDTO.getSql())) : dataTableInfoDTO.getSql(); String sql = dataTableInfoDTO.isBase64Encryption() ? new String(java.util.Base64.getDecoder().decode(dataTableInfoDTO.getSql())) : dataTableInfoDTO.getSql();
tableName = dataSetTableService.handleVariableDefaultValue(sql, null, pluginViewSet.getDsType()); tableName = dataSetTableService.handleVariableDefaultValue(sql, null, pluginViewSet.getDsType());
tableName = "(" + sqlFix(tableName) + ")"; tableName = "(" + sqlFix(tableName) + ")";
break; break;
case CUSTOM: case CUSTOM:

View File

@ -144,7 +144,7 @@ public class DataSetTableService {
private static boolean isUpdatingDatasetTableStatus = false; private static boolean isUpdatingDatasetTableStatus = false;
private static final String lastUpdateTime = "${__last_update_time__}"; private static final String lastUpdateTime = "${__last_update_time__}";
private static final String currentUpdateTime = "${__current_update_time__}"; private static final String currentUpdateTime = "${__current_update_time__}";
private static final String regex = "\\$\\{(.*?)\\}"; public static final String regex = "\\$\\{(.*?)\\}";
private static final String SubstitutedParams = "DATAEASE_PATAMS_BI"; private static final String SubstitutedParams = "DATAEASE_PATAMS_BI";
private static final String SubstitutedSql = " 'BI' = 'BI' "; private static final String SubstitutedSql = " 'BI' = 'BI' ";
@ -701,7 +701,7 @@ public class DataSetTableService {
datasourceRequest.setDatasource(ds); datasourceRequest.setDatasource(ds);
DataTableInfoDTO dataTableInfo = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class); DataTableInfoDTO dataTableInfo = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class);
String sql = dataTableInfo.isBase64Encryption() ? new String(java.util.Base64.getDecoder().decode(dataTableInfo.getSql())) : dataTableInfo.getSql(); String sql = dataTableInfo.isBase64Encryption() ? new String(java.util.Base64.getDecoder().decode(dataTableInfo.getSql())) : dataTableInfo.getSql();
sql = handleVariableDefaultValue(sql, null, ds.getType()); sql = handleVariableDefaultValue(sql, datasetTable.getSqlVariableDetails(), ds.getType());
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
datasourceRequest.setQuery( datasourceRequest.setQuery(
qp.createQuerySQLWithPage(sql, fields, page, pageSize, realSize, false, null, rowPermissionsTree)); qp.createQuerySQLWithPage(sql, fields, page, pageSize, realSize, false, null, rowPermissionsTree));
@ -1058,15 +1058,15 @@ public class DataSetTableService {
Matcher matcher = pattern.matcher(sql); Matcher matcher = pattern.matcher(sql);
while (matcher.find()) { while (matcher.find()) {
SqlVariableDetails defaultsSqlVariableDetail = null; SqlVariableDetails defaultsSqlVariableDetail = null;
List<SqlVariableDetails> defaultsSqlVariableDetails = new Gson().fromJson(sqlVariableDetails, new TypeToken<List<SqlVariableDetails>>() { List<SqlVariableDetails> defaultsSqlVariableDetails = new Gson().fromJson(sqlVariableDetails, new TypeToken<List<SqlVariableDetails>>() {}.getType());
}.getType());
for (SqlVariableDetails sqlVariableDetail : defaultsSqlVariableDetails) { for (SqlVariableDetails sqlVariableDetail : defaultsSqlVariableDetails) {
if (matcher.group().substring(2, matcher.group().length() - 1).equalsIgnoreCase(sqlVariableDetail.getVariableName())) { if (matcher.group().substring(2, matcher.group().length() - 1).equalsIgnoreCase(sqlVariableDetail.getVariableName())) {
defaultsSqlVariableDetail = sqlVariableDetail; defaultsSqlVariableDetail = sqlVariableDetail;
break; break;
} }
} }
if (defaultsSqlVariableDetail != null && StringUtils.isNotEmpty(defaultsSqlVariableDetail.getDefaultValue())) { if (defaultsSqlVariableDetail != null && defaultsSqlVariableDetail.getDefaultValueScope() != null &&
defaultsSqlVariableDetail.getDefaultValueScope().equals(SqlVariableDetails.DefaultValueScope.ALLSCOPE) && StringUtils.isNotEmpty(defaultsSqlVariableDetail.getDefaultValue())) {
sql = sql.replace(matcher.group(), defaultsSqlVariableDetail.getDefaultValue()); sql = sql.replace(matcher.group(), defaultsSqlVariableDetail.getDefaultValue());
} }
} }

View File

@ -70,6 +70,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.*; import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -741,6 +742,33 @@ public class ExtractDataService {
totalSheets = excelXlsxReader.totalSheets; totalSheets = excelXlsxReader.totalSheets;
} }
if (StringUtils.equalsIgnoreCase(suffix, "csv")) {
List<TableField> fields = new ArrayList<>();
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(excelSheetData.getPath()), StandardCharsets.UTF_8));
String s = reader.readLine();// first line
String[] split = s.split(",");
for (String s1 : split) {
TableField tableFiled = new TableField();
tableFiled.setFieldName(s1);
tableFiled.setRemarks(s1);
tableFiled.setFieldType("TEXT");
fields.add(tableFiled);
}
List<List<String>> csvData = new ArrayList<>();
String line;
while ((line = reader.readLine()) != null) {
csvData.add(Arrays.asList(line.split(",")));
}
ExcelSheetData csvSheetData = new ExcelSheetData();
String[] fieldArray = fields.stream().map(TableField::getFieldName).toArray(String[]::new);
csvSheetData.setFields(fields);
csvSheetData.setData(csvData);
csvSheetData.setExcelLabel(excelSheetData.getExcelLabel());
csvSheetData.setFieldsMd5(Md5Utils.md5(StringUtils.join(fieldArray, ",")));
totalSheets = Arrays.asList(csvSheetData);
}
for (ExcelSheetData sheet : totalSheets) { for (ExcelSheetData sheet : totalSheets) {
if (sheet.getExcelLabel().equalsIgnoreCase(excelSheetData.getExcelLabel())) { if (sheet.getExcelLabel().equalsIgnoreCase(excelSheetData.getExcelLabel())) {
for (List<String> dataItem : sheet.getData()) { for (List<String> dataItem : sheet.getData()) {

View File

@ -171,7 +171,7 @@ public class DirectFieldService implements DataSetFieldService {
if (dataTableInfoDTO.isBase64Encryption()) { if (dataTableInfoDTO.isBase64Encryption()) {
sql = new String(java.util.Base64.getDecoder().decode(sql)); sql = new String(java.util.Base64.getDecoder().decode(sql));
} }
sql = dataSetTableService.removeVariables(sql, ds.getType()); sql = dataSetTableService.handleVariableDefaultValue(sql, datasetTable.getSqlVariableDetails(), ds.getType());
datasourceRequest.setQuery(qp.createQuerySQLAsTmp(sql, permissionFields, !needSort, customFilter, rowPermissionsTree, deSortFields)); datasourceRequest.setQuery(qp.createQuerySQLAsTmp(sql, permissionFields, !needSort, customFilter, rowPermissionsTree, deSortFields));
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.CUSTOM.toString())) { } else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.CUSTOM.toString())) {
DataTableInfoDTO dt = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class); DataTableInfoDTO dt = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class);

View File

@ -1519,6 +1519,8 @@ export default {
p_center: 'Center' p_center: 'Center'
}, },
dataset: { dataset: {
scope_edit: 'Effective only when editing',
scope_all: 'Global effective',
spend_time: 'Spend', spend_time: 'Spend',
sql: 'SQL', sql: 'SQL',
sql_result: 'Result', sql_result: 'Result',

View File

@ -1513,6 +1513,8 @@ export default {
p_center: '居中' p_center: '居中'
}, },
dataset: { dataset: {
scope_edit: '僅編輯時生效',
scope_all: '全域生效',
spend_time: '耗時', spend_time: '耗時',
sql: 'SQL 語句', sql: 'SQL 語句',
sql_result: '運行結果', sql_result: '運行結果',

View File

@ -1512,6 +1512,8 @@ export default {
p_center: '居中' p_center: '居中'
}, },
dataset: { dataset: {
scope_edit: '仅编辑时生效',
scope_all: '全局生效',
spend_time: '耗时', spend_time: '耗时',
sql: 'SQL 语句', sql: 'SQL 语句',
sql_result: '运行结果', sql_result: '运行结果',

View File

@ -478,8 +478,21 @@
v-model="scope.row.defaultValue" v-model="scope.row.defaultValue"
size="small" size="small"
type="text" type="text"
:placeholder="$t('fu.search_bar.please_input')" :placeholder="$t('fu.search_bar.please_input')">
/> <el-select
slot="prepend"
v-model="scope.row.defaultValueScope"
style="width: 100px"
size="small"
>
<el-option
v-for="item in defaultValueScopeList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-input>
<el-input <el-input
v-if=" v-if="
scope.row.type[0] === 'LONG' || scope.row.type[0] === 'LONG' ||
@ -489,7 +502,21 @@
size="small" size="small"
:placeholder="$t('fu.search_bar.please_input')" :placeholder="$t('fu.search_bar.please_input')"
type="number" type="number"
/> >
<el-select
slot="prepend"
v-model="scope.row.defaultValueScope"
style="width: 100px"
size="small"
>
<el-option
v-for="item in defaultValueScopeList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-input>
<el-date-picker <el-date-picker
v-if="scope.row.type[0] === 'DATETIME-YEAR'" v-if="scope.row.type[0] === 'DATETIME-YEAR'"
@ -498,7 +525,21 @@
size="small" size="small"
value-format="yyyy" value-format="yyyy"
:placeholder="$t('dataset.select_year')" :placeholder="$t('dataset.select_year')"
/> >
<el-select
slot="prepend"
v-model="scope.row.defaultValueScope"
style="width: 100px"
size="small"
>
<el-option
v-for="item in defaultValueScopeList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-date-picker>
<el-date-picker <el-date-picker
v-if="scope.row.type[0] === 'DATETIME-YEAR-MONTH'" v-if="scope.row.type[0] === 'DATETIME-YEAR-MONTH'"
@ -653,6 +694,9 @@ export default {
dialogTitle: '', dialogTitle: '',
variables: [], variables: [],
variablesTmp: [], variablesTmp: [],
defaultValueScopeList: [
{ label: this.$t('dataset.scope_edit'), value: 'EDIT' },
{ label: this.$t('dataset.scope_all'), value: 'ALLSCOPE' }],
fieldOptions: [ fieldOptions: [
{ label: this.$t('dataset.text'), value: 'TEXT' }, { label: this.$t('dataset.text'), value: 'TEXT' },
{ label: this.$t('dataset.value'), value: 'LONG' }, { label: this.$t('dataset.value'), value: 'LONG' },
@ -1038,6 +1082,9 @@ export default {
for (let i = 0; i < this.variables.length; i++) { for (let i = 0; i < this.variables.length; i++) {
if (this.variables[i].variableName === name) { if (this.variables[i].variableName === name) {
obj = this.variables[i] obj = this.variables[i]
if(!obj.hasOwnProperty("defaultValueScope")){
obj.defaultValueScope = 'EDIT'
}
} }
} }
if (obj === undefined) { if (obj === undefined) {
@ -1047,7 +1094,8 @@ export default {
type: [], type: [],
required: false, required: false,
defaultValue: '', defaultValue: '',
details: '' details: '',
defaultValueScope: 'EDIT'
} }
obj.type.push('TEXT') obj.type.push('TEXT')
} }