|
@@ -9,6 +9,7 @@ import com.rongwei.bscommon.sys.service.ZhcxItpTemplateService;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.rongwei.bsentity.domain.ZhcxItpTemplateNodesDo;
|
|
|
import com.rongwei.bsentity.vo.CopyAddTemplateVo;
|
|
|
+import com.rongwei.bsentity.vo.ZhcxItpTemplateNodesVo;
|
|
|
import com.rongwei.commonservice.service.dao.CommonSqlDao;
|
|
|
import com.rongwei.rwcommon.base.exception.CustomException;
|
|
|
import com.rongwei.rwcommon.utils.SecurityUtil;
|
|
@@ -169,14 +170,13 @@ public class ZhcxItpTemplateServiceImpl extends ServiceImpl<ZhcxItpTemplateDao,
|
|
|
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()));
|
|
|
+ List<ZhcxItpTemplateNodesVo> copyNodesDos = zhcxItpTemplateNodesService.selectPnameByTmpIds(copyAddTemplate.getTmpIds());
|
|
|
// 存放老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) {
|
|
|
+ for (ZhcxItpTemplateNodesVo copyNodesDo : copyNodesDos) {
|
|
|
String newId = SecurityUtil.getUUID();
|
|
|
oldNewId.put(copyNodesDo.getId(),newId);
|
|
|
// 先设置引用节点为原节点ID,再设置新的ID
|
|
@@ -188,19 +188,21 @@ public class ZhcxItpTemplateServiceImpl extends ServiceImpl<ZhcxItpTemplateDao,
|
|
|
}else{
|
|
|
if(copyNodesDos != null && copyNodesDos.size()>0){
|
|
|
// 获取当前ITP地图模板所有子节点
|
|
|
- List<ZhcxItpTemplateNodesDo> targetNodesDos = zhcxItpTemplateNodesService.list(
|
|
|
- new LambdaQueryWrapper<ZhcxItpTemplateNodesDo>().eq(ZhcxItpTemplateNodesDo::getItpid,copyAddTemplate.getTargetTmpId()));
|
|
|
+ List<String> targetIds = new ArrayList<>();
|
|
|
+ targetIds.add(copyAddTemplate.getTargetTmpId());
|
|
|
+ List<ZhcxItpTemplateNodesVo> targetNodesDos = zhcxItpTemplateNodesService.selectPnameByTmpIds(targetIds);
|
|
|
// 过滤出当前ITP地图模板所有根节点
|
|
|
- List<ZhcxItpTemplateNodesDo> rootTargetNodes = targetNodesDos.stream().filter(v -> v.getPid().equals("-1")).collect(Collectors.toList());
|
|
|
- for (ZhcxItpTemplateNodesDo copyNodesDo : copyNodesDos) {
|
|
|
+// List<ZhcxItpTemplateNodesDo> rootTargetNodes = targetNodesDos.stream().filter(v -> v.getPid().equals("-1")).collect(Collectors.toList());
|
|
|
+ // 重复的待过滤的节点
|
|
|
+ for (ZhcxItpTemplateNodesVo 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;
|
|
|
- }
|
|
|
+ ZhcxItpTemplateNodesVo repeatNode = null;
|
|
|
+ for (ZhcxItpTemplateNodesVo rootTargetNode : targetNodesDos) {
|
|
|
+ if(rootTargetNode.getNodename() != null && copyNodesDo.getNodename().equals(rootTargetNode.getNodename())
|
|
|
+ && (rootTargetNode.getPname() != null && rootTargetNode.getPname().equals(copyNodesDo.getPname())
|
|
|
+ || ("-1".equals(rootTargetNode.getPid()) && "-1".equals(copyNodesDo.getPid())))){
|
|
|
+ repeatNode = rootTargetNode;
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
// 重复的阶段(即根节点),则不需要插入,只需要插入当前根节点所有子节点
|
|
@@ -237,6 +239,27 @@ public class ZhcxItpTemplateServiceImpl extends ServiceImpl<ZhcxItpTemplateDao,
|
|
|
if(oldNewId.containsKey(copyNodesDo.getPid())){
|
|
|
copyNodesDo.setPid(oldNewId.get(copyNodesDo.getPid()));
|
|
|
}
|
|
|
+
|
|
|
+ // 替换新的path
|
|
|
+ if(StringUtils.isNotBlank(copyNodesDo.getPath())){
|
|
|
+ String newPaths = null;
|
|
|
+ String[] paths = copyNodesDo.getPath().split(",");
|
|
|
+ for (String path : paths) {
|
|
|
+ if(newPaths == null){
|
|
|
+ if(oldNewId.containsKey(path)){
|
|
|
+ newPaths = oldNewId.get(path);
|
|
|
+ }else{
|
|
|
+ newPaths = path;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ if(oldNewId.containsKey(path)){
|
|
|
+ newPaths = newPaths + "," + oldNewId.get(path);
|
|
|
+ }else{
|
|
|
+ newPaths = newPaths + "," + path;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|