fix(X-Pack): 修复数据填报建表时包含大写字母时可能会导致插入/修改数据报错的问题
This commit is contained in:
parent
9aceaaf3aa
commit
56f72d53a4
@ -60,6 +60,21 @@ public class DataFillDataService {
|
||||
|
||||
private final static Gson gson = new Gson();
|
||||
|
||||
public static void setLowerCaseRequest(Datasource ds, Provider datasourceProvider, ExtDDLProvider extDDLProvider, DatasourceRequest datasourceRequest) throws Exception {
|
||||
DatasourceTypes datasourceType = DatasourceTypes.valueOf(ds.getType());
|
||||
switch (datasourceType) {
|
||||
case mysql:
|
||||
case mariadb:
|
||||
String checkLowerCaseSql = extDDLProvider.getLowerCaseTaleNames();
|
||||
datasourceRequest.setQuery(checkLowerCaseSql);
|
||||
List<String[]> checkLowerCaseData = datasourceProvider.getData(datasourceRequest);
|
||||
long lowCase = NumberUtils.toLong(checkLowerCaseData.get(0)[1]);
|
||||
datasourceRequest.setLowerCaseTaleNames(lowCase > 0);
|
||||
break;
|
||||
default:
|
||||
datasourceRequest.setLowerCaseTaleNames(true);
|
||||
}
|
||||
}
|
||||
|
||||
public DataFillFormTableDataResponse listData(DataFillFormTableDataRequest searchRequest) throws Exception {
|
||||
|
||||
@ -80,19 +95,7 @@ public class DataFillDataService {
|
||||
|
||||
ExtDDLProvider extDDLProvider = ProviderFactory.gerExtDDLProvider(ds.getType());
|
||||
|
||||
DatasourceTypes datasourceType = DatasourceTypes.valueOf(ds.getType());
|
||||
switch (datasourceType) {
|
||||
case mysql:
|
||||
case mariadb:
|
||||
String checkLowerCaseSql = extDDLProvider.getLowerCaseTaleNames();
|
||||
datasourceRequest.setQuery(checkLowerCaseSql);
|
||||
List<String[]> checkLowerCaseData = datasourceProvider.getData(datasourceRequest);
|
||||
long lowCase = NumberUtils.toLong(checkLowerCaseData.get(0)[1]);
|
||||
datasourceRequest.setLowerCaseTaleNames(lowCase > 0);
|
||||
break;
|
||||
default:
|
||||
datasourceRequest.setLowerCaseTaleNames(true);
|
||||
}
|
||||
setLowerCaseRequest(ds, datasourceProvider, extDDLProvider, datasourceRequest);
|
||||
|
||||
List<TableField> tableFields = datasourceProvider.getTableFields(datasourceRequest);
|
||||
Map<String, ExtTableField.BaseType> extTableFieldTypeMap = new HashMap<>();
|
||||
@ -249,6 +252,9 @@ public class DataFillDataService {
|
||||
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
||||
datasourceRequest.setDatasource(ds);
|
||||
datasourceRequest.setTable(dataFillForm.getTableName());
|
||||
|
||||
setLowerCaseRequest(ds, datasourceProvider, extDDLProvider, datasourceRequest);
|
||||
|
||||
List<TableField> tableFields = datasourceProvider.getTableFields(datasourceRequest).stream().filter(TableField::isPrimaryKey).collect(Collectors.toList());
|
||||
if (CollectionUtils.isEmpty(tableFields)) {
|
||||
throw new RuntimeException("没有主键");
|
||||
@ -291,10 +297,14 @@ public class DataFillDataService {
|
||||
|
||||
Datasource ds = datasource.get(dataFillForm.getDatasource());
|
||||
Provider datasourceProvider = ProviderFactory.getProvider(ds.getType());
|
||||
ExtDDLProvider extDDLProvider = ProviderFactory.gerExtDDLProvider(ds.getType());
|
||||
|
||||
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
||||
datasourceRequest.setDatasource(ds);
|
||||
datasourceRequest.setTable(dataFillForm.getTableName());
|
||||
|
||||
setLowerCaseRequest(ds, datasourceProvider, extDDLProvider, datasourceRequest);
|
||||
|
||||
List<TableField> tableFields = datasourceProvider.getTableFields(datasourceRequest);
|
||||
|
||||
Map<String, TableField> tableFieldMap = new HashMap<>();
|
||||
@ -366,8 +376,6 @@ public class DataFillDataService {
|
||||
}
|
||||
}
|
||||
|
||||
ExtDDLProvider extDDLProvider = ProviderFactory.gerExtDDLProvider(ds.getType());
|
||||
|
||||
if (CollectionUtils.isNotEmpty(uniqueFields)) {
|
||||
for (DatasourceRequest.TableFieldWithValue uniqueField : uniqueFields) {
|
||||
|
||||
|
||||
@ -4,7 +4,10 @@ import com.google.common.reflect.TypeToken;
|
||||
import com.google.gson.Gson;
|
||||
import io.dataease.auth.annotation.DeCleaner;
|
||||
import io.dataease.auth.service.AuthUserService;
|
||||
import io.dataease.commons.constants.*;
|
||||
import io.dataease.commons.constants.DataFillConstants;
|
||||
import io.dataease.commons.constants.DePermissionType;
|
||||
import io.dataease.commons.constants.SysAuthConstants;
|
||||
import io.dataease.commons.constants.SysLogConstants;
|
||||
import io.dataease.commons.utils.*;
|
||||
import io.dataease.controller.ResultHolder;
|
||||
import io.dataease.controller.request.datafill.DataFillFormRequest;
|
||||
@ -12,7 +15,6 @@ import io.dataease.dto.DatasourceDTO;
|
||||
import io.dataease.dto.datafill.DataFillFormDTO;
|
||||
import io.dataease.ext.ExtDataFillFormMapper;
|
||||
import io.dataease.i18n.Translator;
|
||||
import io.dataease.listener.util.CacheUtils;
|
||||
import io.dataease.plugins.common.base.domain.*;
|
||||
import io.dataease.plugins.common.base.mapper.DataFillFormMapper;
|
||||
import io.dataease.plugins.common.base.mapper.DataFillUserTaskMapper;
|
||||
@ -317,10 +319,14 @@ public class DataFillService {
|
||||
|
||||
Datasource ds = datasource.get(dataFillForm.getDatasource());
|
||||
Provider datasourceProvider = ProviderFactory.getProvider(ds.getType());
|
||||
ExtDDLProvider extDDLProvider = ProviderFactory.gerExtDDLProvider(ds.getType());
|
||||
|
||||
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
||||
datasourceRequest.setDatasource(ds);
|
||||
datasourceRequest.setTable(dataFillForm.getTableName());
|
||||
|
||||
DataFillDataService.setLowerCaseRequest(ds, datasourceProvider, extDDLProvider, datasourceRequest);
|
||||
|
||||
List<TableField> tableFields = datasourceProvider.getTableFields(datasourceRequest);
|
||||
|
||||
for (TableField tableField : tableFields) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user