Ver código fonte

Merge remote-tracking branch 'origin/master'

zhuang 1 ano atrás
pai
commit
44a91d7246

+ 10 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/dao/ZhcxItpTemplateNodesDao.java

@@ -2,6 +2,13 @@ package com.rongwei.bscommon.sys.dao;
 
 import com.rongwei.bsentity.domain.ZhcxItpTemplateNodesDo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwei.bsentity.vo.ZhcxItpTemplateNodesVo;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +20,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface ZhcxItpTemplateNodesDao extends BaseMapper<ZhcxItpTemplateNodesDo> {
 
+    @Select("select a.*,b.NODENAME AS \"pname\" from ZHCX_ITP_TEMPLATE_NODES a left join ZHCX_ITP_TEMPLATE_NODES b on a.PID=b.ID " +
+            " where a.ITPID in (${itpids}) and a.DELETED='0'")
+    List<ZhcxItpTemplateNodesVo> selectPnameByTmpIds(@Param("itpids") String itpids);
 }

+ 3 - 1
business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxItpTemplateNodesService.java

@@ -4,7 +4,7 @@ import com.rongwei.bsentity.domain.ZhcxItpTemplateNodesDo;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.rongwei.bsentity.vo.CopyNodeVo;
 import com.rongwei.bsentity.vo.ZhcxItpTemplateNodeSyncProjectVo;
-
+import com.rongwei.bsentity.vo.ZhcxItpTemplateNodesVo;
 import java.util.List;
 import java.util.Map;
 
@@ -22,4 +22,6 @@ public interface ZhcxItpTemplateNodesService extends IService<ZhcxItpTemplateNod
 
     List<Map<String, Object>> copyItpTemplateNode(CopyNodeVo copyNodeVo);
 
+    List<ZhcxItpTemplateNodesVo> selectPnameByTmpIds(List<String> itpidList);
+
 }

+ 25 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxItpTemplateNodesServiceImpl.java

@@ -13,6 +13,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.rongwei.bsentity.domain.ZhcxProjectDeviceNumberDo;
 import com.rongwei.bsentity.vo.CopyNodeVo;
 import com.rongwei.bsentity.vo.ZhcxItpTemplateNodeSyncProjectVo;
+import com.rongwei.bsentity.vo.ZhcxItpTemplateNodesVo;
 import com.rongwei.commonservice.service.dao.CommonSqlDao;
 import com.rongwei.rwcommon.utils.SecurityUtil;
 import com.rongwei.rwcommon.utils.StringUtils;
@@ -41,6 +42,8 @@ public class ZhcxItpTemplateNodesServiceImpl extends ServiceImpl<ZhcxItpTemplate
     private ZhcxProjectDeviceNumberService zhcxProjectDeviceNumberService;
     @Autowired
     private CommonSqlDao commonSqlDao;
+    @Autowired
+    private ZhcxItpTemplateNodesDao zhcxItpTemplateNodesDao;
 
     /**
      * 新增的ITP模板节点同步到指定项目
@@ -302,6 +305,28 @@ public class ZhcxItpTemplateNodesServiceImpl extends ServiceImpl<ZhcxItpTemplate
         return getItpNodes(copyNodeVo);
     }
 
+    /**
+     * 根据模板ID查询节点数据带出相关父节点名称
+     * @param itpidList
+     * @return
+     */
+    @Override
+    public List<ZhcxItpTemplateNodesVo> selectPnameByTmpIds(List<String> itpidList) {
+        List<ZhcxItpTemplateNodesVo> templateNodesVos = null;
+        if(itpidList != null && itpidList.size()>0){
+            String itpids = null;
+            for (String s : itpidList) {
+                if(itpids == null){
+                    itpids = "'" + s + "'";
+                }else{
+                    itpids = itpids + ",'" + s + "'";
+                }
+            }
+            templateNodesVos = zhcxItpTemplateNodesDao.selectPnameByTmpIds(itpids);
+        }
+        return templateNodesVos;
+    }
+
     /**
      * 返回最新数据
      * @param copyNodeVo

+ 37 - 14
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxItpTemplateServiceImpl.java

@@ -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;
+                                    }
+                                }
+                            }
+                        }
                     }
                 }
             }

+ 12 - 0
business-entity/src/main/java/com/rongwei/bsentity/vo/ZhcxItpTemplateNodesVo.java

@@ -0,0 +1,12 @@
+package com.rongwei.bsentity.vo;
+
+import com.rongwei.bsentity.domain.ZhcxItpTemplateNodesDo;
+import lombok.Data;
+
+@Data
+public class ZhcxItpTemplateNodesVo extends ZhcxItpTemplateNodesDo {
+
+    // 父节点名称
+    private String pname;
+
+}