소스 검색

项目引用项目节点

fangpy 1 년 전
부모
커밋
872bc283ae

+ 2 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxItpProjectNodesService.java

@@ -19,6 +19,8 @@ public interface ZhcxItpProjectNodesService extends IService<ZhcxItpProjectNodes
 
     void projectNodeQuote(Map<String,Object> map);
 
+    void projectRefProject(Map<String,Object> map);
+
     List<Map<String,Object>> copyProjectNode(CopyNodeVo copyNodeVo);
 
 }

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

@@ -150,6 +150,117 @@ public class ZhcxItpProjectNodesServiceImpl extends ServiceImpl<ZhcxItpProjectNo
         }
     }
 
+    /**
+     * 项目引用项目ITP节点
+     * @param map
+     */
+    @Override
+    public void projectRefProject(Map<String, Object> map) {
+        Object projectIdObj = map.get("projectId");
+        Object refProjectIdObj = map.get("refProjectId");
+        Object projectDeviceNumberIdObjs = map.get("projectDeviceNumberIds");
+        Object projectDeviceNumberNameObjs = map.get("projectDeviceNumberNames");
+        if(projectIdObj != null){
+            if(refProjectIdObj != null){
+                String refProjectId = (String) refProjectIdObj;
+                String projectId = (String) projectIdObj;
+                if(StringUtils.isNotBlank(projectId) && StringUtils.isNotBlank(refProjectId)){
+                    String projectDeviceNumberIds = null;
+                    String projectDeviceNumberNames = null;
+                    // 获取关联机号初始化
+                    if(projectDeviceNumberIdObjs != null){
+                        projectDeviceNumberNames = projectDeviceNumberNameObjs.toString();
+                    }else {
+                        // 没有机号则查询项目ID关联的机号
+                        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> projectNodes = new ArrayList<>();
+                    // 待复制保存的节点报告模板
+                    List<ZhcxItpProjectNodesFilesDo> projectNodeFiles = new ArrayList<>();
+                    // 根据引用模板ID获取ITP节点数据
+                    List<ZhcxItpProjectNodesDo> templateNodes = this.list(
+                            new LambdaQueryWrapper<ZhcxItpProjectNodesDo>().eq(ZhcxItpProjectNodesDo::getProjectid, refProjectId));
+                    // 根据引用模板ID获取ITP节点报告模板数据
+                    List<ZhcxItpProjectNodesFilesDo> templateNodesFiles = zhcxItpProjectNodesFilesService.list(
+                            new LambdaQueryWrapper<ZhcxItpProjectNodesFilesDo>().eq(ZhcxItpProjectNodesFilesDo::getProjectid, refProjectId));
+                    if(templateNodes != null && templateNodes.size()>0){
+                        // 模板节点ID和项目节点ID的映射关系
+                        Map<String,String> tempProMap = new HashMap<>();
+                        // 先清除已存在的数据
+                        this.remove(new LambdaQueryWrapper<ZhcxItpProjectNodesDo>().eq(ZhcxItpProjectNodesDo::getProjectid,projectId));
+                        // 复制项目ITP节点数据
+                        for (ZhcxItpProjectNodesDo templateNode : templateNodes) {
+                            // 相关属性复制
+                            ZhcxItpProjectNodesDo zhcxItpProjectNodesDo = new ZhcxItpProjectNodesDo();
+                            BeanUtil.copyProperties(templateNode,zhcxItpProjectNodesDo);
+                            zhcxItpProjectNodesDo.setProjectid(projectId);
+                            zhcxItpProjectNodesDo.setItpnodeid(templateNode.getId());
+                            zhcxItpProjectNodesDo.setId(SecurityUtil.getUUID());
+                            // 关联机号
+                            if(StringUtils.isNotBlank(projectDeviceNumberIds)){
+                                zhcxItpProjectNodesDo.setMachineno(projectDeviceNumberIds);
+                            }
+                            if(StringUtils.isNotBlank(projectDeviceNumberNames)){
+                                zhcxItpProjectNodesDo.setMachinename(projectDeviceNumberNames);
+                            }
+                            projectNodes.add(zhcxItpProjectNodesDo);
+                            // 映射关系建立
+                            tempProMap.put(templateNode.getId(),zhcxItpProjectNodesDo.getId());
+                        }
+                        // 替换所有PID为新的ID
+                        for (ZhcxItpProjectNodesDo projectNode : projectNodes) {
+                            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()));
+                                }
+                            }
+                        }
+
+                        // 复制项目ITP节点报告模板数据
+                        for (ZhcxItpProjectNodesFilesDo templateNodesFile : templateNodesFiles) {
+                            if(StringUtils.isBlank(templateNodesFile.getNodeid())){
+                                continue;
+                            }
+                            ZhcxItpProjectNodesFilesDo zhcxItpProjectNodesFilesDo = new ZhcxItpProjectNodesFilesDo();
+                            BeanUtil.copyProperties(templateNodesFile,zhcxItpProjectNodesFilesDo);
+                            zhcxItpProjectNodesFilesDo.setId(SecurityUtil.getUUID());
+                            zhcxItpProjectNodesFilesDo.setProjectid(projectId);
+                            zhcxItpProjectNodesFilesDo.setProjectnodeid(tempProMap.get(templateNodesFile.getNodeid()));
+                            projectNodeFiles.add(zhcxItpProjectNodesFilesDo);
+                        }
+                    }
+                    // 数据保存
+                    if(projectNodes != null && projectNodes.size()>0){
+                        this.saveBatch(projectNodes);
+                    }
+                    if(projectNodeFiles != null && projectNodeFiles.size()>0){
+                        zhcxItpProjectNodesFilesService.saveBatch(projectNodeFiles);
+                    }
+                }
+            }
+        }else{
+            throw new CustomException("项目ID不能为空");
+        }
+    }
+
     /**
      * 复制项目节点
      * @param copyNodeVo

+ 6 - 0
business-server/src/main/java/com/rongwei/bsserver/controller/ZhcxItpProjectNodesController.java

@@ -33,6 +33,12 @@ public class ZhcxItpProjectNodesController {
         return R.ok();
     }
 
+    @RequestMapping("/projectRefProject")
+    public R projectRefProject(@RequestBody Map<String,Object> map){
+        zhcxItpProjectNodesService.projectRefProject(map);
+        return R.ok();
+    }
+
     @RequestMapping("/copyProjectNode")
     public R copyProjectNode(@RequestBody CopyNodeVo copyNodeVo){
         List<Map<String, Object>> maps = zhcxItpProjectNodesService.copyProjectNode(copyNodeVo);