Ver Fonte

项目引用项目节点bug修复、以及ITP模板新增节点更新到项目中

fangpy há 1 ano atrás
pai
commit
72307e438d

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

@@ -2,6 +2,7 @@ package com.rongwei.bscommon.sys.service;
 
 import com.rongwei.bsentity.domain.ZhcxItpTemplateNodesDo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwei.bsentity.vo.ZhcxItpTemplateNodeSyncProjectVo;
 
 /**
  * <p>
@@ -13,4 +14,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ZhcxItpTemplateNodesService extends IService<ZhcxItpTemplateNodesDo> {
 
+    void itpTemplateAddNodeSyncProjects(ZhcxItpTemplateNodeSyncProjectVo zhcxItpTemplateNodeSyncProjectVo);
+
 }

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

@@ -121,6 +121,26 @@ public class ZhcxItpProjectNodesServiceImpl extends ServiceImpl<ZhcxItpProjectNo
                                     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);
+                                        }else{
+                                            newPaths = newPaths + "," + path;
+                                        }
+                                    }
+                                }
+                            }
                         }
 
                         // 复制引用模板节点报告模板数据
@@ -232,6 +252,26 @@ public class ZhcxItpProjectNodesServiceImpl extends ServiceImpl<ZhcxItpProjectNo
                                     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);
+                                        }else{
+                                            newPaths = newPaths + "," + path;
+                                        }
+                                    }
+                                }
+                            }
                         }
 
                         // 复制项目ITP节点报告模板数据

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

@@ -1,11 +1,24 @@
 package com.rongwei.bscommon.sys.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.rongwei.bscommon.sys.service.ZhcxItpProjectNodesService;
+import com.rongwei.bscommon.sys.service.ZhcxProjectDeviceNumberService;
+import com.rongwei.bsentity.domain.ZhcxItpProjectNodesDo;
 import com.rongwei.bsentity.domain.ZhcxItpTemplateNodesDo;
 import com.rongwei.bscommon.sys.dao.ZhcxItpTemplateNodesDao;
 import com.rongwei.bscommon.sys.service.ZhcxItpTemplateNodesService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.bsentity.domain.ZhcxProjectDeviceNumberDo;
+import com.rongwei.bsentity.vo.ZhcxItpTemplateNodeSyncProjectVo;
+import com.rongwei.rwcommon.utils.SecurityUtil;
+import com.rongwei.rwcommon.utils.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.*;
+import java.util.stream.Collectors;
+
 /**
  * <p>
  * itp地图模板检验点 服务实现类
@@ -17,4 +30,117 @@ import org.springframework.stereotype.Service;
 @Service
 public class ZhcxItpTemplateNodesServiceImpl extends ServiceImpl<ZhcxItpTemplateNodesDao, ZhcxItpTemplateNodesDo> implements ZhcxItpTemplateNodesService {
 
+    @Autowired
+    private ZhcxItpProjectNodesService zhcxItpProjectNodesService;
+    @Autowired
+    private ZhcxProjectDeviceNumberService zhcxProjectDeviceNumberService;
+
+    /**
+     * 新增的ITP模板节点同步到指定项目
+     * @param zhcxItpTemplateNodeSyncProjectVo
+     */
+    @Override
+    public void itpTemplateAddNodeSyncProjects(ZhcxItpTemplateNodeSyncProjectVo zhcxItpTemplateNodeSyncProjectVo){
+        if(StringUtils.isNotBlank(zhcxItpTemplateNodeSyncProjectVo.getNodeid())
+                && zhcxItpTemplateNodeSyncProjectVo.getProjectids() != null && zhcxItpTemplateNodeSyncProjectVo.getProjectids().size()>0){
+            // 待保存的项目ITP节点
+            List<ZhcxItpProjectNodesDo> toSaveNodes = new ArrayList<>();
+            // 模板节点ID和项目节点ID的映射关系
+            Map<String,String> tempProMap = new HashMap<>();
+            // 获取当前报验点
+            ZhcxItpTemplateNodesDo baNodes = this.getById(zhcxItpTemplateNodeSyncProjectVo.getNodeid());
+            // 查询当前报验点及上级节点和归属大构件
+            List<String> nodeids = new ArrayList<>();
+            nodeids.add(zhcxItpTemplateNodeSyncProjectVo.getNodeid());
+            if(StringUtils.isNotBlank(baNodes.getPnodeid())){
+                nodeids.add(baNodes.getPnodeid());
+            }
+            if(StringUtils.isNotBlank(baNodes.getPath())){
+                nodeids.addAll(Arrays.asList(baNodes.getPath().split(",")));
+            }
+            // 查询当前报验点及上级节点
+            List<ZhcxItpTemplateNodesDo> templateNodess = this.list(new LambdaQueryWrapper<ZhcxItpTemplateNodesDo>().in(ZhcxItpTemplateNodesDo::getId, nodeids));
+            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();
+                        }
+                    }
+                }
+                // 获取当前项目是否有当前报验点
+                List<ZhcxItpProjectNodesDo> projectNodesDos = zhcxItpProjectNodesService.list(new LambdaQueryWrapper<ZhcxItpProjectNodesDo>().
+                        eq(ZhcxItpProjectNodesDo::getProjectid, projectid).in(ZhcxItpProjectNodesDo::getItpnodeid, nodeids));
+                for (ZhcxItpTemplateNodesDo nodess : templateNodess) {
+                    List<ZhcxItpProjectNodesDo> hasProNodes = projectNodesDos.stream().filter(v -> v.getItpnodeid().equals(nodess.getId())).collect(Collectors.toList());
+                    if(hasProNodes == null && hasProNodes.size() == 0){
+                        // 相关属性复制
+                        ZhcxItpProjectNodesDo zhcxItpProjectNodesDo = new ZhcxItpProjectNodesDo();
+                        BeanUtil.copyProperties(nodess,zhcxItpProjectNodesDo);
+                        zhcxItpProjectNodesDo.setProjectid(projectid);
+                        zhcxItpProjectNodesDo.setItpnodeid(nodess.getId());
+                        zhcxItpProjectNodesDo.setId(SecurityUtil.getUUID());
+                        // 关联机号
+                        if(StringUtils.isNotBlank(projectDeviceNumberIds)){
+                            zhcxItpProjectNodesDo.setMachineno(projectDeviceNumberIds);
+                        }
+                        if(StringUtils.isNotBlank(projectDeviceNumberNames)){
+                            zhcxItpProjectNodesDo.setMachinename(projectDeviceNumberNames);
+                        }
+                        toSaveNodes.add(zhcxItpProjectNodesDo);
+                        // 映射关系建立
+                        tempProMap.put(nodess.getId(),zhcxItpProjectNodesDo.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()));
+                    }
+                }
+                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);
+                            }else{
+                                newPaths = newPaths + "," + path;
+                            }
+                        }
+                    }
+                }
+            }
+            // 数据保存
+            if(toSaveNodes != null && toSaveNodes.size()>0){
+                zhcxItpProjectNodesService.saveBatch(toSaveNodes);
+            }
+        }
+    }
+
+
 }

+ 13 - 0
business-entity/src/main/java/com/rongwei/bsentity/vo/ZhcxItpTemplateNodeSyncProjectVo.java

@@ -0,0 +1,13 @@
+package com.rongwei.bsentity.vo;
+
+import lombok.Data;
+import java.util.List;
+
+@Data
+public class ZhcxItpTemplateNodeSyncProjectVo {
+
+    private String nodeid;
+
+    private List<String> projectids;
+
+}

+ 15 - 0
business-server/src/main/java/com/rongwei/bsserver/controller/ZhcxItpTemplateController.java

@@ -1,8 +1,10 @@
 package com.rongwei.bsserver.controller;
 
 
+import com.rongwei.bscommon.sys.service.ZhcxItpTemplateNodesService;
 import com.rongwei.bscommon.sys.service.ZhcxItpTemplateService;
 import com.rongwei.bsentity.vo.CopyAddTemplateVo;
+import com.rongwei.bsentity.vo.ZhcxItpTemplateNodeSyncProjectVo;
 import com.rongwei.rwcommon.base.R;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -26,6 +28,8 @@ public class ZhcxItpTemplateController {
 
     @Autowired
     private ZhcxItpTemplateService zhcxItpTemplateService;
+    @Autowired
+    private ZhcxItpTemplateNodesService zhcxItpTemplateNodesService;
 
     @RequestMapping("/copyAddTemplateNodes")
     public R copyAddTemplateNodes(@RequestBody CopyAddTemplateVo copyAddTemplate){
@@ -39,5 +43,16 @@ public class ZhcxItpTemplateController {
         return R.ok(maps);
     }
 
+    /**
+     * ITP模板新增报验点同步到项目中
+     * @param zhcxItpTemplateNodeSyncProjectVo
+     * @return
+     */
+    @RequestMapping("/itpTemplateAddNodeSyncProjects")
+    public R itpTemplateAddNodeSyncProjects(@RequestBody ZhcxItpTemplateNodeSyncProjectVo zhcxItpTemplateNodeSyncProjectVo){
+        zhcxItpTemplateNodesService.itpTemplateAddNodeSyncProjects(zhcxItpTemplateNodeSyncProjectVo);
+        return R.ok();
+    }
+
 }