fix(图表): 修复图表的复制字段在编辑保存图表使用的数据集后,图表的复制字段被清空的问题 #17847

This commit is contained in:
jianneng-fit2cloud
2026-01-29 11:34:30 +08:00
committed by jianneng-fit2cloud
parent 568f7b730b
commit 1c2558df1d

View File

@@ -135,6 +135,9 @@ public class DatasetTableFieldManage {
public void deleteByDatasetGroupUpdate(Long datasetGroupId, List<Long> fieldIds) {
if (!CollectionUtils.isEmpty(fieldIds)) {
// chartCopyFields不删除
List<Long> chartCopyFields = getChartCopyFieldsByDatasetGroupIdAndOriginIds(datasetGroupId, fieldIds);
fieldIds.addAll(chartCopyFields);
QueryWrapper<CoreDatasetTableField> 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<Long> getChartCopyFieldsByDatasetGroupIdAndOriginIds(Long datasetGroupId, List<Long> fieldIds) {
List<String> originNames = fieldIds.stream().map(id -> "[" + id + "]").collect(Collectors.toList());
QueryWrapper<CoreDatasetTableField> wrapper = new QueryWrapper<>();
wrapper.eq("dataset_group_id", datasetGroupId);
wrapper.eq("ext_field", 2);
wrapper.in("origin_name", originNames);
wrapper.isNotNull("chart_id");
List<CoreDatasetTableField> list = coreDatasetTableFieldMapper.selectList(wrapper);
return list.stream().map(CoreDatasetTableField::getId).collect(Collectors.toList());
}
public void deleteByDatasetGroupDelete(Long datasetGroupId) {
QueryWrapper<CoreDatasetTableField> wrapper = new QueryWrapper<>();
wrapper.eq("dataset_group_id", datasetGroupId);