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 5b11b9c796..337d6a0f16 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 @@ -135,6 +135,9 @@ public class DatasetTableFieldManage { public void deleteByDatasetGroupUpdate(Long datasetGroupId, List fieldIds) { if (!CollectionUtils.isEmpty(fieldIds)) { + // chartCopyFields不删除 + List chartCopyFields = getChartCopyFieldsByDatasetGroupIdAndOriginIds(datasetGroupId, fieldIds); + fieldIds.addAll(chartCopyFields); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("dataset_group_id", datasetGroupId); wrapper.notIn("id", fieldIds); @@ -142,6 +145,23 @@ public class DatasetTableFieldManage { } } + /** + * 获取图表复制字段 + * 通过原始名是[field_id]格式,ext_field 为 2,并且chart_id不为空的字段判定为图表复制字段 + * @param datasetGroupId 数据集ID + * @param fieldIds 原数据集字段ID列表 + */ + public List getChartCopyFieldsByDatasetGroupIdAndOriginIds(Long datasetGroupId, List fieldIds) { + List originNames = fieldIds.stream().map(id -> "[" + id + "]").collect(Collectors.toList()); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("dataset_group_id", datasetGroupId); + wrapper.eq("ext_field", 2); + wrapper.in("origin_name", originNames); + wrapper.isNotNull("chart_id"); + List list = coreDatasetTableFieldMapper.selectList(wrapper); + return list.stream().map(CoreDatasetTableField::getId).collect(Collectors.toList()); + } + public void deleteByDatasetGroupDelete(Long datasetGroupId) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("dataset_group_id", datasetGroupId);