feat(图表): 图表中支持直接复制字段

This commit is contained in:
junjun 2024-06-06 16:57:52 +08:00
parent 0ecd35a1f4
commit 3c3cb45d47
3 changed files with 51 additions and 1 deletions

View File

@ -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<CoreDatasetTableField> wrapper = new QueryWrapper<>();
wrapper.eq("dataset_group_id", id);
wrapper.eq("checked", true);
wrapper.isNull("chart_id");
List<CoreDatasetTableField> fields = coreDatasetTableFieldMapper.selectList(wrapper);
List<DatasetTableFieldDTO> 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<CoreDatasetTableField> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("dataset_group_id", coreDatasetTableField.getDatasetGroupId());
List<CoreDatasetTableField> coreDatasetTableFields = coreDatasetTableFieldMapper.selectList(queryWrapper);
HashMap<String, String> 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<String, String> 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);

View File

@ -57,4 +57,14 @@ public class ChartViewServer implements ChartViewApi {
public List<ViewSelectorVO> 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);
}
}

View File

@ -43,4 +43,12 @@ public interface ChartViewApi {
@Operation(summary = "查询仪表板下视图项")
@GetMapping("/viewOption/{resourceId}")
List<ViewSelectorVO> 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);
}