|
@@ -167,34 +167,16 @@ public class ZhcxItpTemplateServiceImpl extends ServiceImpl<ZhcxItpTemplateDao,
|
|
|
}
|
|
|
}else{
|
|
|
if(copyAddTemplate.getTmpIds() != null && copyAddTemplate.getTmpIds().size()>0){
|
|
|
+ ZhcxItpTemplateDo itpTemplateDo = this.getById(copyAddTemplate.getTargetTmpId());
|
|
|
// 查询所有引用子节点,复制给新的ITP地图
|
|
|
List<ZhcxItpTemplateNodesDo> copyNodesDos = zhcxItpTemplateNodesService.list(
|
|
|
new LambdaQueryWrapper<ZhcxItpTemplateNodesDo>().in(ZhcxItpTemplateNodesDo::getItpid,copyAddTemplate.getTmpIds()));
|
|
|
- if(copyNodesDos != null && copyNodesDos.size()>0){
|
|
|
- // 获取当前ITP地图模板所有子节点
|
|
|
- List<ZhcxItpTemplateNodesDo> targetNodesDos = zhcxItpTemplateNodesService.list(
|
|
|
- new LambdaQueryWrapper<ZhcxItpTemplateNodesDo>().eq(ZhcxItpTemplateNodesDo::getItpid,copyAddTemplate.getTargetTmpId()));
|
|
|
- // 过滤出当前ITP地图模板所有根节点
|
|
|
- List<ZhcxItpTemplateNodesDo> rootTargetNodes = targetNodesDos.stream().filter(v -> v.getPid().equals("-1")).collect(Collectors.toList());
|
|
|
- // 存放老ID和新ID的Map,方便后面的归属大构件ID替换
|
|
|
- Map<String,String> oldNewId = new HashMap<>();
|
|
|
- for (ZhcxItpTemplateNodesDo copyNodesDo : copyNodesDos) {
|
|
|
- // 重复的已存在的根节点
|
|
|
- ZhcxItpTemplateNodesDo repeatNode = null;
|
|
|
- if(copyNodesDo.getPid().equals("-1") && copyNodesDo.getNodename() != null){
|
|
|
- for (ZhcxItpTemplateNodesDo rootTargetNode : rootTargetNodes) {
|
|
|
- if(rootTargetNode.getNodename() != null && copyNodesDo.getNodename().equals(rootTargetNode.getNodename())){
|
|
|
- repeatNode = rootTargetNode;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- // 重复的阶段(即根节点),则不需要插入,只需要插入当前根节点所有子节点
|
|
|
- if(repeatNode != null){
|
|
|
- oldNewId.put(copyNodesDo.getId(),repeatNode.getId());
|
|
|
- }
|
|
|
- // 无重复的设置新ID,并加入待保存的列表
|
|
|
- else{
|
|
|
+ // 存放老ID和新ID的Map,方便后面的归属大构件ID替换
|
|
|
+ Map<String,String> oldNewId = new HashMap<>();
|
|
|
+ // 3级引用二级节点直接覆盖
|
|
|
+ if("3".equals(copyAddTemplate.getTargetTemplate().getTmplevel())){
|
|
|
+ if(copyNodesDos != null && copyNodesDos.size()>0){
|
|
|
+ for (ZhcxItpTemplateNodesDo copyNodesDo : copyNodesDos) {
|
|
|
String newId = SecurityUtil.getUUID();
|
|
|
oldNewId.put(copyNodesDo.getId(),newId);
|
|
|
// 先设置引用节点为原节点ID,再设置新的ID
|
|
@@ -203,6 +185,46 @@ public class ZhcxItpTemplateServiceImpl extends ServiceImpl<ZhcxItpTemplateDao,
|
|
|
toCopySaveNodes.add(copyNodesDo);
|
|
|
}
|
|
|
}
|
|
|
+ }else{
|
|
|
+ if(copyNodesDos != null && copyNodesDos.size()>0){
|
|
|
+ // 获取当前ITP地图模板所有子节点
|
|
|
+ List<ZhcxItpTemplateNodesDo> targetNodesDos = zhcxItpTemplateNodesService.list(
|
|
|
+ new LambdaQueryWrapper<ZhcxItpTemplateNodesDo>().eq(ZhcxItpTemplateNodesDo::getItpid,copyAddTemplate.getTargetTmpId()));
|
|
|
+ // 过滤出当前ITP地图模板所有根节点
|
|
|
+ List<ZhcxItpTemplateNodesDo> rootTargetNodes = targetNodesDos.stream().filter(v -> v.getPid().equals("-1")).collect(Collectors.toList());
|
|
|
+ for (ZhcxItpTemplateNodesDo copyNodesDo : copyNodesDos) {
|
|
|
+ // 重复的已存在的根节点
|
|
|
+ ZhcxItpTemplateNodesDo repeatNode = null;
|
|
|
+ if(copyNodesDo.getPid().equals("-1") && copyNodesDo.getNodename() != null){
|
|
|
+ for (ZhcxItpTemplateNodesDo rootTargetNode : rootTargetNodes) {
|
|
|
+ if(rootTargetNode.getNodename() != null && copyNodesDo.getNodename().equals(rootTargetNode.getNodename())){
|
|
|
+ repeatNode = rootTargetNode;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 重复的阶段(即根节点),则不需要插入,只需要插入当前根节点所有子节点
|
|
|
+ if(repeatNode != null){
|
|
|
+ oldNewId.put(copyNodesDo.getId(),repeatNode.getId());
|
|
|
+ }
|
|
|
+ // 无重复的设置新ID,并加入待保存的列表
|
|
|
+ else{
|
|
|
+ String newId = SecurityUtil.getUUID();
|
|
|
+ oldNewId.put(copyNodesDo.getId(),newId);
|
|
|
+ // 先设置引用节点为原节点ID,再设置新的ID
|
|
|
+ copyNodesDo.setRefnodeid(copyNodesDo.getId());
|
|
|
+ copyNodesDo.setId(newId);
|
|
|
+ toCopySaveNodes.add(copyNodesDo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(toCopySaveNodes != null && toCopySaveNodes.size()>0){
|
|
|
+ // 3级引用2级清空数据
|
|
|
+ if("3".equals(copyAddTemplate.getTargetTemplate().getTmplevel())){
|
|
|
+ zhcxItpTemplateNodesService.remove(new LambdaQueryWrapper<ZhcxItpTemplateNodesDo>().
|
|
|
+ eq(ZhcxItpTemplateNodesDo::getItpid,copyAddTemplate.getTargetTmpId()));
|
|
|
+ }
|
|
|
// 替换相关ID
|
|
|
for (ZhcxItpTemplateNodesDo copyNodesDo : toCopySaveNodes) {
|
|
|
// 设置新的ITP地图ID
|