mirror of
https://github.com/dataease/dataease.git
synced 2026-01-24 10:33:13 +08:00
fix: 修复关联报错字段不存在
This commit is contained in:
@@ -215,15 +215,15 @@ public class DatasetDataManage {
|
||||
DatasetUtils.dsDecode(datasetGroupInfoDTO);
|
||||
}
|
||||
|
||||
Map<String, Object> sqlMap = datasetSQLManage.getUnionSQLForEdit(datasetGroupInfoDTO, null);
|
||||
String sql = (String) sqlMap.get("sql");
|
||||
|
||||
// 获取allFields
|
||||
List<DatasetTableFieldDTO> fields = datasetGroupInfoDTO.getAllFields();
|
||||
if (ObjectUtils.isEmpty(fields)) {
|
||||
DEException.throwException(Translator.get("i18n_no_fields"));
|
||||
}
|
||||
|
||||
Map<String, Object> sqlMap = datasetSQLManage.getUnionSQLForEdit(datasetGroupInfoDTO, null);
|
||||
String sql = (String) sqlMap.get("sql");
|
||||
|
||||
Map<String, ColumnPermissionItem> desensitizationList = new HashMap<>();
|
||||
if (checkPermission) {
|
||||
fields = permissionManage.filterColumnPermissions(fields, desensitizationList, datasetGroupInfoDTO.getId(), null);
|
||||
|
||||
@@ -129,6 +129,8 @@ public class DatasetSQLManage {
|
||||
|
||||
public Map<String, Object> getUnionSQLForEdit(DatasetGroupInfoDTO dataTableInfoDTO, ChartExtRequest chartExtRequest, CoreDatasource coreDatasource, boolean isFromDataSet) throws Exception {
|
||||
Map<Long, DatasourceSchemaDTO> dsMap = new LinkedHashMap<>();
|
||||
// 获取所有字段,将dataeaseName赋值给currentField中的dataeaseName
|
||||
List<DatasetTableFieldDTO> allFields = dataTableInfoDTO.getAllFields();
|
||||
List<UnionDTO> union = dataTableInfoDTO.getUnion();
|
||||
// 所有选中的字段,即select后的查询字段
|
||||
Map<String, String[]> checkedInfo = new LinkedHashMap<>();
|
||||
@@ -162,7 +164,19 @@ public class DatasetSQLManage {
|
||||
|
||||
String[] array = fields.stream()
|
||||
.map(f -> {
|
||||
String alias = TableUtils.fieldNameShort(table.getTableAlias() + "_" + f.getOriginName());
|
||||
// 赋值dataeaseName
|
||||
for (DatasetTableFieldDTO a_f: allFields) {
|
||||
if (Objects.equals(a_f.getId(),f.getId())) {
|
||||
f.setDataeaseName(a_f.getDataeaseName());
|
||||
}
|
||||
}
|
||||
|
||||
String alias;
|
||||
if (StringUtils.isEmpty(f.getDataeaseName())) {
|
||||
alias = TableUtils.fieldNameShort(f.getDatasetTableId() + "_" + f.getOriginName());
|
||||
} else {
|
||||
alias = f.getDataeaseName();
|
||||
}
|
||||
|
||||
f.setFieldShortName(alias);
|
||||
f.setDataeaseName(f.getFieldShortName());
|
||||
@@ -191,7 +205,7 @@ public class DatasetSQLManage {
|
||||
checkedFields.addAll(fields);
|
||||
// 获取child的fields和union
|
||||
if (!CollectionUtils.isEmpty(unionDTO.getChildrenDs())) {
|
||||
getUnionForEdit(datasetTable, table, unionDTO.getChildrenDs(), checkedInfo, unionList, checkedFields, dsMap, chartExtRequest, isCross);
|
||||
getUnionForEdit(datasetTable, table, unionDTO.getChildrenDs(), checkedInfo, unionList, checkedFields, dsMap, chartExtRequest, isCross, allFields);
|
||||
}
|
||||
}
|
||||
// build sql
|
||||
@@ -311,7 +325,7 @@ public class DatasetSQLManage {
|
||||
List<UnionDTO> childrenDs, Map<String, String[]> checkedInfo,
|
||||
List<UnionParamDTO> unionList, List<DatasetTableFieldDTO> checkedFields,
|
||||
Map<Long, DatasourceSchemaDTO> dsMap, ChartExtRequest chartExtRequest,
|
||||
boolean isCross) throws Exception {
|
||||
boolean isCross, List<DatasetTableFieldDTO> allFields) throws Exception {
|
||||
for (int i = 0; i < childrenDs.size(); i++) {
|
||||
int index = unionList.size() + 1;
|
||||
|
||||
@@ -332,7 +346,19 @@ public class DatasetSQLManage {
|
||||
|
||||
String[] array = fields.stream()
|
||||
.map(f -> {
|
||||
String alias = TableUtils.fieldNameShort(table.getTableAlias() + "_" + f.getOriginName());
|
||||
// 赋值dataeaseName
|
||||
for (DatasetTableFieldDTO a_f: allFields) {
|
||||
if (Objects.equals(a_f.getId(),f.getId())) {
|
||||
f.setDataeaseName(a_f.getDataeaseName());
|
||||
}
|
||||
}
|
||||
|
||||
String alias;
|
||||
if (StringUtils.isEmpty(f.getDataeaseName())) {
|
||||
alias = TableUtils.fieldNameShort(f.getDatasetTableId() + "_" + f.getOriginName());
|
||||
} else {
|
||||
alias = f.getDataeaseName();
|
||||
}
|
||||
|
||||
f.setFieldShortName(alias);
|
||||
f.setDataeaseName(f.getFieldShortName());
|
||||
@@ -363,7 +389,7 @@ public class DatasetSQLManage {
|
||||
unionToParent.setCurrentSQLObj(table);
|
||||
unionList.add(unionToParent);
|
||||
if (!CollectionUtils.isEmpty(unionDTO.getChildrenDs())) {
|
||||
getUnionForEdit(datasetTable, table, unionDTO.getChildrenDs(), checkedInfo, unionList, checkedFields, dsMap, chartExtRequest, isCross);
|
||||
getUnionForEdit(datasetTable, table, unionDTO.getChildrenDs(), checkedInfo, unionList, checkedFields, dsMap, chartExtRequest, isCross, allFields);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user