diff --git a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetTableFieldManage.java b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetTableFieldManage.java index cb5b760ef0..30c1051e7d 100644 --- a/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetTableFieldManage.java +++ b/core/core-backend/src/main/java/io/dataease/dataset/manage/DatasetTableFieldManage.java @@ -1,6 +1,7 @@ package io.dataease.dataset.manage; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.dataease.api.dataset.union.DatasetGroupInfoDTO; import io.dataease.dataset.dao.auto.entity.CoreDatasetTableField; import io.dataease.dataset.dao.auto.mapper.CoreDatasetTableFieldMapper; import io.dataease.dataset.utils.TableUtils; @@ -9,6 +10,7 @@ import io.dataease.engine.func.FunctionConstant; import io.dataease.engine.utils.Utils; import io.dataease.exception.DEException; import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; +import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO; import io.dataease.extensions.datasource.model.SQLObj; import io.dataease.extensions.view.dto.ColumnPermissionItem; import io.dataease.i18n.Translator; @@ -35,6 +37,10 @@ public class DatasetTableFieldManage { private CoreDatasetTableFieldMapper coreDatasetTableFieldMapper; @Resource private PermissionManage permissionManage; + @Resource + private DatasetSQLManage datasetSQLManage; + @Resource + private DatasetGroupManage datasetGroupManage; public void save(CoreDatasetTableField coreDatasetTableField) { checkNameLength(coreDatasetTableField.getName()); @@ -199,6 +205,28 @@ public class DatasetTableFieldManage { return map; } + public Map> copilotFields(Long id) throws Exception { + DatasetGroupInfoDTO datasetGroupInfoDTO = datasetGroupManage.get(id, null); + Map sqlMap = datasetSQLManage.getUnionSQLForEdit(datasetGroupInfoDTO, null); + Map dsMap = (Map) sqlMap.get("dsMap"); + boolean crossDs = Utils.isCrossDs(dsMap); + if (crossDs) { + DEException.throwException("跨源数据集不支持该功能"); + } + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("dataset_group_id", id); + wrapper.eq("checked", true); + wrapper.eq("ext_field", 0); + List list = transDTO(coreDatasetTableFieldMapper.selectList(wrapper)); + List dimensionList = list.stream().filter(ele -> StringUtils.equalsIgnoreCase(ele.getGroupType(), "d")).collect(Collectors.toList()); + List quotaList = list.stream().filter(ele -> StringUtils.equalsIgnoreCase(ele.getGroupType(), "q")).collect(Collectors.toList()); + Map> map = new LinkedHashMap<>(); + map.put("dimensionList", dimensionList); + map.put("quotaList", quotaList); + return map; + } + public List listFieldsWithPermissions(Long id) { List fields = selectByDatasetGroupId(id); Map desensitizationList = new HashMap<>(); diff --git a/core/core-backend/src/main/java/io/dataease/dataset/server/DatasetFieldServer.java b/core/core-backend/src/main/java/io/dataease/dataset/server/DatasetFieldServer.java index fbab37b117..1c5b91b07f 100644 --- a/core/core-backend/src/main/java/io/dataease/dataset/server/DatasetFieldServer.java +++ b/core/core-backend/src/main/java/io/dataease/dataset/server/DatasetFieldServer.java @@ -58,6 +58,11 @@ public class DatasetFieldServer implements DatasetTableApi { return datasetTableFieldManage.listByDQ(id); } + @Override + public Map> copilotFields(Long id) throws Exception { + return datasetTableFieldManage.copilotFields(id); + } + @Override public List listFieldsWithPermissions(Long id) { return datasetTableFieldManage.listFieldsWithPermissionsRemoveAgg(id); diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/dataset/DatasetTableApi.java b/sdk/api/api-base/src/main/java/io/dataease/api/dataset/DatasetTableApi.java index 8ae45e36e8..ff3e80856d 100644 --- a/sdk/api/api-base/src/main/java/io/dataease/api/dataset/DatasetTableApi.java +++ b/sdk/api/api-base/src/main/java/io/dataease/api/dataset/DatasetTableApi.java @@ -52,6 +52,10 @@ public interface DatasetTableApi { @PostMapping("listByDQ/{id}") Map> listByDQ(@PathVariable Long id); + @Operation(summary = "获取copilot字段分组") + @PostMapping("copilotFields/{id}") + Map> copilotFields(@PathVariable Long id) throws Exception; + @Operation(summary = "获取字段") @GetMapping("listWithPermissions/{id}") List listFieldsWithPermissions(@PathVariable Long id);