diff --git a/core/core-backend/src/main/java/io/dataease/chart/manage/ChartViewManege.java b/core/core-backend/src/main/java/io/dataease/chart/manage/ChartViewManege.java index 9bb1cc8812..8d6980fee9 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/manage/ChartViewManege.java +++ b/core/core-backend/src/main/java/io/dataease/chart/manage/ChartViewManege.java @@ -4,8 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import io.dataease.api.chart.dto.*; -import io.dataease.api.chart.vo.ViewSelectorVO; import io.dataease.api.chart.filter.FilterTreeObj; +import io.dataease.api.chart.vo.ViewSelectorVO; import io.dataease.api.dataset.union.model.SQLObj; import io.dataease.chart.dao.auto.entity.CoreChartView; import io.dataease.chart.dao.auto.mapper.CoreChartViewMapper; @@ -20,6 +20,7 @@ import io.dataease.engine.utils.Utils; import io.dataease.exception.DEException; import io.dataease.i18n.Translator; import io.dataease.utils.BeanUtils; +import io.dataease.utils.IDUtils; import io.dataease.utils.JsonUtil; import jakarta.annotation.Resource; import org.apache.commons.lang3.ObjectUtils; @@ -120,6 +121,7 @@ public class ChartViewManege { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("dataset_group_id", id); wrapper.eq("checked", true); + wrapper.isNull("chart_id"); List fields = coreDatasetTableFieldMapper.selectList(wrapper); List collect = fields.stream().map(ele -> { @@ -173,6 +175,36 @@ public class ChartViewManege { return map; } + public void copyField(Long id, Long chartId) { + CoreDatasetTableField coreDatasetTableField = coreDatasetTableFieldMapper.selectById(id); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("dataset_group_id", coreDatasetTableField.getDatasetGroupId()); + List coreDatasetTableFields = coreDatasetTableFieldMapper.selectList(queryWrapper); + HashMap map = new HashMap<>(); + for (CoreDatasetTableField ele : coreDatasetTableFields) { + map.put(ele.getName(), ele.getName()); + } + newName(map, coreDatasetTableField, coreDatasetTableField.getName()); + coreDatasetTableField.setChartId(chartId); + coreDatasetTableField.setExtField(2); + coreDatasetTableField.setOriginName("[" + id + "]"); + coreDatasetTableField.setId(IDUtils.snowID()); + coreDatasetTableFieldMapper.insert(coreDatasetTableField); + } + + private void newName(HashMap map, CoreDatasetTableField coreDatasetTableField, String name) { + name = name + "_copy"; + if (map.containsKey(name)) { + newName(map, coreDatasetTableField, name); + } else { + coreDatasetTableField.setName(name); + } + } + + public void deleteField(Long id) { + coreDatasetTableFieldMapper.deleteById(id); + } + public DatasetTableFieldDTO createCountField(Long id) { DatasetTableFieldDTO dto = new DatasetTableFieldDTO(); dto.setId(-1L); diff --git a/core/core-backend/src/main/java/io/dataease/chart/server/ChartViewServer.java b/core/core-backend/src/main/java/io/dataease/chart/server/ChartViewServer.java index d4c3213266..5da0abd39d 100644 --- a/core/core-backend/src/main/java/io/dataease/chart/server/ChartViewServer.java +++ b/core/core-backend/src/main/java/io/dataease/chart/server/ChartViewServer.java @@ -57,4 +57,14 @@ public class ChartViewServer implements ChartViewApi { public List viewOption(Long resourceId) { return chartViewManege.viewOption(resourceId); } + + @Override + public void copyField(Long id, Long chartId) { + chartViewManege.copyField(id, chartId); + } + + @Override + public void deleteField(Long id) { + chartViewManege.deleteField(id); + } } diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/chart/ChartViewApi.java b/sdk/api/api-base/src/main/java/io/dataease/api/chart/ChartViewApi.java index 993931b36b..51a7d8a087 100644 --- a/sdk/api/api-base/src/main/java/io/dataease/api/chart/ChartViewApi.java +++ b/sdk/api/api-base/src/main/java/io/dataease/api/chart/ChartViewApi.java @@ -43,4 +43,12 @@ public interface ChartViewApi { @Operation(summary = "查询仪表板下视图项") @GetMapping("/viewOption/{resourceId}") List viewOption(@PathVariable("resourceId") Long resourceId); + + @Operation(summary = "视图复制字段") + @PostMapping("copyField/{id}/{chartId}") + void copyField(@PathVariable Long id, @PathVariable Long chartId); + + @Operation(summary = "视图删除字段") + @PostMapping("deleteField/{id}") + void deleteField(@PathVariable Long id); }