diff --git a/core/core-backend/src/main/java/io/dataease/visualization/dao/ext/mapper/ExtVisualizationOuterParamsMapper.java b/core/core-backend/src/main/java/io/dataease/visualization/dao/ext/mapper/ExtVisualizationOuterParamsMapper.java index abe21e2657..32b85f99eb 100644 --- a/core/core-backend/src/main/java/io/dataease/visualization/dao/ext/mapper/ExtVisualizationOuterParamsMapper.java +++ b/core/core-backend/src/main/java/io/dataease/visualization/dao/ext/mapper/ExtVisualizationOuterParamsMapper.java @@ -4,6 +4,7 @@ package io.dataease.visualization.dao.ext.mapper; import io.dataease.api.dataset.vo.CoreDatasetGroupVO; import io.dataease.api.visualization.dto.VisualizationOuterParamsDTO; import io.dataease.api.visualization.dto.VisualizationOuterParamsInfoDTO; +import io.dataease.visualization.dao.auto.entity.VisualizationOuterParamsInfo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -22,5 +23,7 @@ public interface ExtVisualizationOuterParamsMapper { List getVisualizationOuterParamsInfo(@Param("visualizationId") String visualizationId); + List getVisualizationOuterParamsInfoBase(@Param("visualizationId") String visualizationId); + List queryDsWithVisualizationId(@Param("visualizationId") String visualizationId); } diff --git a/core/core-backend/src/main/java/io/dataease/visualization/server/VisualizationOuterParamsService.java b/core/core-backend/src/main/java/io/dataease/visualization/server/VisualizationOuterParamsService.java index b3f4bdf018..46794b0402 100644 --- a/core/core-backend/src/main/java/io/dataease/visualization/server/VisualizationOuterParamsService.java +++ b/core/core-backend/src/main/java/io/dataease/visualization/server/VisualizationOuterParamsService.java @@ -29,10 +29,7 @@ import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import java.util.UUID; +import java.util.*; import java.util.stream.Collectors; /** @@ -72,6 +69,12 @@ public class VisualizationOuterParamsService implements VisualizationOuterParams public void updateOuterParamsSet(VisualizationOuterParamsDTO outerParamsDTO) { String visualizationId = outerParamsDTO.getVisualizationId(); Assert.notNull(visualizationId, "visualizationId cannot be null"); + Map paramsInfoNameIdMap = new HashMap<>(); + List paramsInfoNameIdList = extOuterParamsMapper.getVisualizationOuterParamsInfoBase(visualizationId); + if(!CollectionUtils.isEmpty(paramsInfoNameIdList)){ + paramsInfoNameIdMap = paramsInfoNameIdList.stream() + .collect(Collectors.toMap(VisualizationOuterParamsInfo::getParamName, VisualizationOuterParamsInfo::getParamsId)); + } //清理原有数据 extOuterParamsMapper.deleteOuterParamsTargetWithVisualizationId(visualizationId); extOuterParamsMapper.deleteOuterParamsInfoWithVisualizationId(visualizationId); @@ -82,17 +85,22 @@ public class VisualizationOuterParamsService implements VisualizationOuterParams VisualizationOuterParams newOuterParams = new VisualizationOuterParams(); BeanUtils.copyBean(newOuterParams, outerParamsDTO); outerParamsMapper.insert(newOuterParams); + Map finalParamsInfoNameIdMap = paramsInfoNameIdMap; Optional.ofNullable(outerParamsDTO.getOuterParamsInfoArray()).orElse(new ArrayList<>()).forEach(outerParamsInfo -> { - String paramsInfoId = UUID.randomUUID().toString(); + String paramsInfoId = finalParamsInfoNameIdMap.get(outerParamsInfo.getParamName()); + if(StringUtils.isEmpty(paramsInfoId)){ + paramsInfoId = UUID.randomUUID().toString(); + } outerParamsInfo.setParamsInfoId(paramsInfoId); outerParamsInfo.setParamsId(paramsId); VisualizationOuterParamsInfo newOuterParamsInfo = new VisualizationOuterParamsInfo(); BeanUtils.copyBean(newOuterParamsInfo, outerParamsInfo); outerParamsInfoMapper.insert(newOuterParamsInfo); + String finalParamsInfoId = paramsInfoId; Optional.ofNullable(outerParamsInfo.getTargetViewInfoList()).orElse(new ArrayList<>()).forEach(targetViewInfo -> { String targetViewInfoId = UUID.randomUUID().toString(); targetViewInfo.setTargetId(targetViewInfoId); - targetViewInfo.setParamsInfoId(paramsInfoId); + targetViewInfo.setParamsInfoId(finalParamsInfoId); VisualizationOuterParamsTargetViewInfo newOuterParamsTargetViewInfo = new VisualizationOuterParamsTargetViewInfo(); BeanUtils.copyBean(newOuterParamsTargetViewInfo, targetViewInfo); outerParamsTargetViewInfoMapper.insert(newOuterParamsTargetViewInfo); diff --git a/core/core-backend/src/main/resources/mybatis/ExtVisualizationOuterParamsMapper.xml b/core/core-backend/src/main/resources/mybatis/ExtVisualizationOuterParamsMapper.xml index 9e8361b763..210fc0616b 100644 --- a/core/core-backend/src/main/resources/mybatis/ExtVisualizationOuterParamsMapper.xml +++ b/core/core-backend/src/main/resources/mybatis/ExtVisualizationOuterParamsMapper.xml @@ -139,6 +139,17 @@ and popi.checked=1 + +