forked from github/dataease
commit
3f2ab03880
@ -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;
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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:
|
||||||
|
@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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()) {
|
||||||
|
@ -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);
|
||||||
|
@ -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',
|
||||||
|
@ -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: '運行結果',
|
||||||
|
@ -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: '运行结果',
|
||||||
|
@ -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')
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user