fangpy 1 рік тому
батько
коміт
7c9f34fd87

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

@@ -55,10 +55,9 @@ public class ZhcxItpTemplateNodesServiceImpl extends ServiceImpl<ZhcxItpTemplate
         if(StringUtils.isNotBlank(zhcxItpTemplateNodeSyncProjectVo.getNodeid())
                 && zhcxItpTemplateNodeSyncProjectVo.getProjectids() != null && zhcxItpTemplateNodeSyncProjectVo.getProjectids().size()>0){
             // 待保存的项目ITP节点
-            List<ZhcxItpProjectNodesDo> toSaveNodes = new ArrayList<>();
-            List<ZhcxItpProjectNodesDo> toUpdateNodes = new ArrayList<>();
-            // 模板节点ID和项目节点ID的映射关系
-            Map<String,String> tempProMap = new HashMap<>();
+            List<ZhcxItpProjectNodesDo> toSaveTotalNodes = new ArrayList<>();
+            List<ZhcxItpProjectNodesDo> toUpdateTotalNodes = new ArrayList<>();
+
             // 获取当前报验点
             ZhcxItpTemplateNodesDo baNodes = this.getById(zhcxItpTemplateNodeSyncProjectVo.getNodeid());
             // 查询当前报验点及上级节点和以及上级节点归属大构件
@@ -75,32 +74,18 @@ public class ZhcxItpTemplateNodesServiceImpl extends ServiceImpl<ZhcxItpTemplate
             for (ZhcxItpTemplateNodesDo nodess : templateNodess) {
                 if(StringUtils.isNotBlank(nodess.getPnodeid())){
                     ZhcxItpTemplateNodesDo pnode = this.getById(nodess.getPnodeid());
-                    templateBigNodess.add(pnode);
-                    nodeids.add(nodess.getPnodeid());
+                    if(pnode != null){
+                        templateBigNodess.add(pnode);
+                        nodeids.add(nodess.getPnodeid());
+                    }
                 }
             }
             if(templateBigNodess != null && templateBigNodess.size()>0){
                 templateNodess.addAll(templateBigNodess);
             }
 
+            // 根据名称刷新最新数据
             for (String projectid : zhcxItpTemplateNodeSyncProjectVo.getProjectids()) {
-                // 查询项目ID关联的机号
-                String projectDeviceNumberIds = null;
-                String projectDeviceNumberNames = null;
-                List<ZhcxProjectDeviceNumberDo> deviceNumberDos = zhcxProjectDeviceNumberService.list(
-                        new LambdaQueryWrapper<ZhcxProjectDeviceNumberDo>().eq(ZhcxProjectDeviceNumberDo::getPid, projectid));
-                if(deviceNumberDos != null && deviceNumberDos.size()>0){
-                    for (ZhcxProjectDeviceNumberDo deviceNumberDo : deviceNumberDos) {
-                        if(projectDeviceNumberIds == null){
-                            projectDeviceNumberIds = deviceNumberDo.getId();
-                            projectDeviceNumberNames = deviceNumberDo.getDeviceNumber();
-                        }else{
-                            projectDeviceNumberIds = projectDeviceNumberIds + "," + deviceNumberDo.getId();
-                            projectDeviceNumberNames = projectDeviceNumberNames + "," + deviceNumberDo.getDeviceNumber();
-                        }
-                    }
-                }
-
                 // 根据名称判断
                 String sql1 = "select a.NODENAME AS \"NAMEONE\",a.ID AS \"IDONE\",b.NODENAME AS \"NAMETWO\",b.ID AS \"IDTWO\",c.NODENAME AS \"NAMETHREE\",c.ID AS \"IDTHREE\"\n" +
                         "from ZHCX_ITP_TEMPLATE_NODES a \n" +
@@ -118,45 +103,104 @@ public class ZhcxItpTemplateNodesServiceImpl extends ServiceImpl<ZhcxItpTemplate
                         node1.setId(namethree.get(0).getId());
                         node1.setItpnodeid(nodes.get(0).get("IDTHREE").toString());
                         zhcxItpProjectNodesService.updateById(node1);
-                        // 2级
-                        List<String> a = new ArrayList<>();
-                        a.add(CxConstants.ITP_NODETYPE_SMALL);a.add(CxConstants.ITP_NODETYPE_BIG);
-                        List<ZhcxItpProjectNodesDo> nametwo = zhcxItpProjectNodesService.list(new LambdaQueryWrapper<ZhcxItpProjectNodesDo>()
-                                .eq(ZhcxItpProjectNodesDo::getProjectid, projectid).in(ZhcxItpProjectNodesDo::getNodetype,a)
-                                .eq(ZhcxItpProjectNodesDo::getNodename, nodes.get(0).get("NAMETWO")).eq(ZhcxItpProjectNodesDo::getPid,node1.getId()));
-                        if(nametwo != null && nametwo.size()>0){
-                            if(!nametwo.get(0).getItpnodeid().equals(nodes.get(0).get("IDTWO"))){
-                                ZhcxItpProjectNodesDo node2 = new ZhcxItpProjectNodesDo();
-                                node2.setId(nametwo.get(0).getId());
-                                node2.setItpnodeid(nodes.get(0).get("IDTWO").toString());
-                                zhcxItpProjectNodesService.updateById(node2);
-                                // 3级
-                                List<ZhcxItpProjectNodesDo> nameone = zhcxItpProjectNodesService.list(new LambdaQueryWrapper<ZhcxItpProjectNodesDo>()
-                                        .eq(ZhcxItpProjectNodesDo::getProjectid, projectid).eq(ZhcxItpProjectNodesDo::getNodetype,CxConstants.ITP_NODETYPE_CHECKPOINT)
-                                        .eq(ZhcxItpProjectNodesDo::getNodename, nodes.get(0).get("NAMEONE")).eq(ZhcxItpProjectNodesDo::getPid,node2.getId()));
-                                if(!nameone.get(0).getItpnodeid().equals(nodes.get(0).get("IDONE"))){
-                                    ZhcxItpProjectNodesDo node3 = new ZhcxItpProjectNodesDo();
-                                    node3.setId(nameone.get(0).getId());
-                                    node3.setItpnodeid(nodes.get(0).get("IDONE").toString());
-                                    ZhcxItpTemplateNodesDo idone = this.getById(nodes.get(0).get("IDONE").toString());
-                                    node3.setIsneedout(idone.getIsneedout());
-                                    node3.setInspectiontype(idone.getInspectiontype());
-                                    node3.setIssupp(idone.getIssupp());
-                                    node3.setChecktmpid(idone.getChecktmpid());
-                                    node3.setCheckrole(idone.getCheckrole());
-                                    node3.setCheckroleid(idone.getCheckroleid());
-                                    node3.setOrgid(idone.getOrgid());
-                                    node3.setOrgname(idone.getOrgname());
-                                    node3.setCheckfile(idone.getCheckfile());
-                                    node3.setNodename(idone.getNodename());
-                                    node3.setIsneedinput(idone.getIsneedinput());
-                                    zhcxItpProjectNodesService.updateById(node3);
-                                }
+                    }
+
+                    // 2级
+                    List<String> a = new ArrayList<>();
+                    a.add(CxConstants.ITP_NODETYPE_SMALL);a.add(CxConstants.ITP_NODETYPE_BIG);
+                    List<ZhcxItpProjectNodesDo> nametwo = zhcxItpProjectNodesService.list(new LambdaQueryWrapper<ZhcxItpProjectNodesDo>()
+                            .eq(ZhcxItpProjectNodesDo::getProjectid, projectid).in(ZhcxItpProjectNodesDo::getNodetype,a)
+                            .eq(ZhcxItpProjectNodesDo::getNodename, nodes.get(0).get("NAMETWO")).eq(ZhcxItpProjectNodesDo::getPid,namethree.get(0).getId()));
+                    if(nametwo != null && nametwo.size()>0){
+                        if(!nametwo.get(0).getItpnodeid().equals(nodes.get(0).get("IDTWO"))){
+                            ZhcxItpProjectNodesDo node2 = new ZhcxItpProjectNodesDo();
+                            node2.setId(nametwo.get(0).getId());
+                            node2.setItpnodeid(nodes.get(0).get("IDTWO").toString());
+                            zhcxItpProjectNodesService.updateById(node2);
+                        }
+
+                        // 3级
+                        List<ZhcxItpProjectNodesDo> nameone = zhcxItpProjectNodesService.list(new LambdaQueryWrapper<ZhcxItpProjectNodesDo>()
+                                .eq(ZhcxItpProjectNodesDo::getProjectid, projectid).eq(ZhcxItpProjectNodesDo::getNodetype,CxConstants.ITP_NODETYPE_CHECKPOINT)
+                                .eq(ZhcxItpProjectNodesDo::getNodename, nodes.get(0).get("NAMEONE")).eq(ZhcxItpProjectNodesDo::getPid,nametwo.get(0).getId()));
+                        if(nameone != null && nameone.size()>0){
+                            if(!nameone.get(0).getItpnodeid().equals(nodes.get(0).get("IDONE"))){
+                                ZhcxItpProjectNodesDo node3 = new ZhcxItpProjectNodesDo();
+                                node3.setId(nameone.get(0).getId());
+                                node3.setItpnodeid(nodes.get(0).get("IDONE").toString());
+                                ZhcxItpTemplateNodesDo idone = this.getById(nodes.get(0).get("IDONE").toString());
+                                node3.setIsneedout(idone.getIsneedout());
+                                node3.setInspectiontype(idone.getInspectiontype());
+                                node3.setIssupp(idone.getIssupp());
+                                node3.setChecktmpid(idone.getChecktmpid());
+                                node3.setCheckrole(idone.getCheckrole());
+                                node3.setCheckroleid(idone.getCheckroleid());
+                                node3.setOrgid(idone.getOrgid());
+                                node3.setOrgname(idone.getOrgname());
+                                node3.setCheckfile(idone.getCheckfile());
+                                node3.setNodename(idone.getNodename());
+                                node3.setIsneedinput(idone.getIsneedinput());
+                                zhcxItpProjectNodesService.updateById(node3);
                             }
                         }
                     }
                 }
 
+                // 归属大构件
+                for (ZhcxItpTemplateNodesDo nodess : templateBigNodess) {
+                    // 查找大构件所属阶段
+                    ZhcxItpTemplateNodesDo pidnode = this.getById(nodess.getPid());
+                    // 1级
+                    List<ZhcxItpProjectNodesDo> dgjpnode = zhcxItpProjectNodesService.list(new LambdaQueryWrapper<ZhcxItpProjectNodesDo>()
+                            .eq(ZhcxItpProjectNodesDo::getProjectid, projectid).eq(ZhcxItpProjectNodesDo::getNodetype, CxConstants.ITP_NODETYPE_PHASE)
+                            .eq(ZhcxItpProjectNodesDo::getNodename, pidnode.getNodename()));
+                    if(dgjpnode != null && dgjpnode.size()>0){
+                        if(!dgjpnode.get(0).getItpnodeid().equals(pidnode.getId())){
+                            ZhcxItpProjectNodesDo node1 = new ZhcxItpProjectNodesDo();
+                            node1.setId(dgjpnode.get(0).getId());
+                            node1.setItpnodeid(pidnode.getId());
+                            zhcxItpProjectNodesService.updateById(node1);
+                        }
+                    }
+                    // 2级
+                    List<String> a1 = new ArrayList<>();
+                    a1.add(CxConstants.ITP_NODETYPE_SMALL);a1.add(CxConstants.ITP_NODETYPE_BIG);
+                    List<ZhcxItpProjectNodesDo> gsnametwo = zhcxItpProjectNodesService.list(new LambdaQueryWrapper<ZhcxItpProjectNodesDo>()
+                            .eq(ZhcxItpProjectNodesDo::getProjectid, projectid).in(ZhcxItpProjectNodesDo::getNodetype,a1)
+                            .eq(ZhcxItpProjectNodesDo::getNodename, nodess.getNodename()).eq(ZhcxItpProjectNodesDo::getPid,pidnode.getId()));
+                    if(gsnametwo != null && gsnametwo.size()>0){
+                        if(!gsnametwo.get(0).getItpnodeid().equals(nodess.getId())){
+                            ZhcxItpProjectNodesDo node2 = new ZhcxItpProjectNodesDo();
+                            node2.setId(gsnametwo.get(0).getId());
+                            node2.setItpnodeid(nodess.getId());
+                            zhcxItpProjectNodesService.updateById(node2);
+                        }
+                    }
+                }
+            }
+
+            for (String projectid : zhcxItpTemplateNodeSyncProjectVo.getProjectids()) {
+                List<ZhcxItpProjectNodesDo> toSaveNodes = new ArrayList<>();
+                List<ZhcxItpProjectNodesDo> toUpdateNodes = new ArrayList<>();
+                // 模板节点ID和项目节点ID的映射关系
+                Map<String,String> tempProMap = new HashMap<>();
+                // 查询项目ID关联的机号
+                String projectDeviceNumberIds = null;
+                String projectDeviceNumberNames = null;
+                List<ZhcxProjectDeviceNumberDo> deviceNumberDos = zhcxProjectDeviceNumberService.list(
+                        new LambdaQueryWrapper<ZhcxProjectDeviceNumberDo>().eq(ZhcxProjectDeviceNumberDo::getPid, projectid));
+                if(deviceNumberDos != null && deviceNumberDos.size()>0){
+                    for (ZhcxProjectDeviceNumberDo deviceNumberDo : deviceNumberDos) {
+                        if(projectDeviceNumberIds == null){
+                            projectDeviceNumberIds = deviceNumberDo.getId();
+                            projectDeviceNumberNames = deviceNumberDo.getDeviceNumber();
+                        }else{
+                            projectDeviceNumberIds = projectDeviceNumberIds + "," + deviceNumberDo.getId();
+                            projectDeviceNumberNames = projectDeviceNumberNames + "," + deviceNumberDo.getDeviceNumber();
+                        }
+                    }
+                }
+
                 // 获取当前项目是否有当前报验点
                 List<ZhcxItpProjectNodesDo> projectNodesDos = zhcxItpProjectNodesService.list(new LambdaQueryWrapper<ZhcxItpProjectNodesDo>().
                         eq(ZhcxItpProjectNodesDo::getProjectid, projectid).in(ZhcxItpProjectNodesDo::getItpnodeid, nodeids));
@@ -207,48 +251,58 @@ public class ZhcxItpTemplateNodesServiceImpl extends ServiceImpl<ZhcxItpTemplate
                         tempProMap.put(nodess.getId(),itpProjectNodesDo.getId());
                     }
                 }
-            }
-            // 项目节点相关ID替换
-            for (ZhcxItpProjectNodesDo projectNode : toSaveNodes) {
-                if(StringUtils.isNotBlank(projectNode.getPid()) && !"-1".equals(projectNode.getPid())){
-                    if(tempProMap.containsKey(projectNode.getPid())){
-                        projectNode.setPid(tempProMap.get(projectNode.getPid()));
+
+                // 项目节点相关ID替换
+                for (ZhcxItpProjectNodesDo projectNode : toSaveNodes) {
+                    if(StringUtils.isNotBlank(projectNode.getPid()) && !"-1".equals(projectNode.getPid())){
+                        if(tempProMap.containsKey(projectNode.getPid())){
+                            projectNode.setPid(tempProMap.get(projectNode.getPid()));
+                        }
                     }
-                }
-                if(StringUtils.isNotBlank(projectNode.getPnodeid())){
-                    if(tempProMap.containsKey(projectNode.getPnodeid())){
-                        projectNode.setPnodeid(tempProMap.get(projectNode.getPnodeid()));
+                    if(StringUtils.isNotBlank(projectNode.getPnodeid())){
+                        if(tempProMap.containsKey(projectNode.getPnodeid())){
+                            projectNode.setPnodeid(tempProMap.get(projectNode.getPnodeid()));
+                        }
                     }
-                }
-                // 替换新的path
-                if(StringUtils.isNotBlank(projectNode.getPath())){
-                    String newPaths = null;
-                    String[] paths = projectNode.getPath().split(",");
-                    for (String path : paths) {
-                        if(newPaths == null){
-                            if(tempProMap.containsKey(path)){
-                                newPaths = tempProMap.get(path);
-                            }else{
-                                newPaths = path;
-                            }
-                        }else{
-                            if(tempProMap.containsKey(path)){
-                                newPaths = newPaths + "," + tempProMap.get(path);
+                    // 替换新的path
+                    if(StringUtils.isNotBlank(projectNode.getPath())){
+                        String newPaths = null;
+                        String[] paths = projectNode.getPath().split(",");
+                        for (String path : paths) {
+                            if(newPaths == null){
+                                if(tempProMap.containsKey(path)){
+                                    newPaths = tempProMap.get(path);
+                                }else{
+                                    newPaths = path;
+                                }
                             }else{
-                                newPaths = newPaths + "," + path;
+                                if(tempProMap.containsKey(path)){
+                                    newPaths = newPaths + "," + tempProMap.get(path);
+                                }else{
+                                    newPaths = newPaths + "," + path;
+                                }
                             }
                         }
+                        projectNode.setPath(newPaths);
                     }
-                    projectNode.setPath(newPaths);
+                }
+
+                // 数据汇总
+                if(toSaveNodes != null && toSaveNodes.size()>0){
+                    toSaveTotalNodes.addAll(toSaveNodes);
+                }
+                if(toUpdateNodes != null && toUpdateNodes.size()>0){
+                    toUpdateTotalNodes.addAll(toUpdateNodes);
                 }
             }
+
             // 数据保存
-            if(toSaveNodes != null && toSaveNodes.size()>0){
-                zhcxItpProjectNodesService.saveBatch(toSaveNodes);
+            if(toSaveTotalNodes != null && toSaveTotalNodes.size()>0){
+                zhcxItpProjectNodesService.saveBatch(toSaveTotalNodes);
             }
             // 数据更新
-            if(toUpdateNodes != null && toUpdateNodes.size()>0){
-                zhcxItpProjectNodesService.updateBatchById(toUpdateNodes);
+            if(toUpdateTotalNodes != null && toUpdateTotalNodes.size()>0){
+                zhcxItpProjectNodesService.updateBatchById(toUpdateTotalNodes);
             }
         }
     }