package org.jeecg.modules.dnc.service.support; import cn.hutool.core.util.StrUtil; import org.jeecg.modules.dnc.entity.*; import org.jeecg.modules.dnc.response.CommonGenericTree; import org.jeecg.modules.dnc.entity.ComponentInfo; import org.jeecg.modules.dnc.dto.ComponentExt; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class ProductTreeWrapper { public static List loadTree(List productInfoList, List componentInfoList, List partsInfoList,List processSpecVersionList, List processStreams, List workStepList) { List tree = new ArrayList();// TreeNode集合,存放所有树对象。 Map productMap = new HashMap<>(); Map componentMap = new HashMap<>(); Map partsMap = new HashMap<>(); Map pvsMap = new HashMap<>(); Map processMap = new HashMap<>(); CommonGenericTree node; CommonGenericTree componentNode; CommonGenericTree partsNode; CommonGenericTree pvsNode; CommonGenericTree processNode; CommonGenericTree workStepNode; for(ProductInfo productInfo : productInfoList) { node = new CommonGenericTree(); node.setId(productInfo.getProductId()); node.setLabel("[" + productInfo.getProductNo()+ "]" + productInfo.getProductName()); node.setParentId(productInfo.getProductId()); node.setIconClass(""); node.setType(1); node.setEntity(productInfo); tree.add(node); productMap.put(productInfo.getProductId(), node); } List commonJsonTreeList = ComponentTreeWrapper.loadTree(componentInfoList); for(CommonGenericTree compNode : commonJsonTreeList) { componentMap = CommonGenericTree.getLeafNode(componentMap, compNode); if(productMap.containsKey(compNode.getRField())) { node = productMap.get(compNode.getRField()); compNode.setParentId(node.getId()); node.addChildren(compNode); } } for(PartsInfo parts : partsInfoList) { partsNode = new CommonGenericTree(); partsNode.setId(parts.getPartsId()); partsNode.setLabel("[" + parts.getPartsCode()+ "]" + parts.getPartsName()); partsNode.setParentId(null); partsNode.setIconClass(""); partsNode.setType(3); partsNode.setRField(parts.getComponentId()); partsNode.setEntity(parts); if(componentMap.containsKey(partsNode.getRField())) { componentNode = componentMap.get(partsNode.getRField()); partsNode.setParentId(componentNode.getId()); componentNode.addChildren(partsNode); } partsMap.put(parts.getPartsId(), partsNode); } //工艺规程版本存在零件下 for(ProcessSpecVersion processSpecVersion : processSpecVersionList) { pvsNode = new CommonGenericTree(); pvsNode.setId(processSpecVersion.getId()); pvsNode.setLabel("[" + processSpecVersion.getProcessSpecVersionCode()+ "]" + processSpecVersion.getProcessSpecVersionName()); pvsNode.setParentId(null); pvsNode.setIconClass(""); pvsNode.setType(4); pvsNode.setRField(processSpecVersion.getPartsId()); pvsNode.setEntity(processSpecVersion); if(partsMap.containsKey(pvsNode.getRField())) { partsNode = partsMap.get(pvsNode.getRField()); pvsNode.setParentId(partsNode.getId()); partsNode.addChildren(pvsNode); } pvsMap.put(processSpecVersion.getId(),pvsNode); } //工序存在部件或者工艺规程版本下 for(ProcessStream processStream : processStreams) { processNode = new CommonGenericTree(); processNode.setId(processStream.getProcessId()); processNode.setLabel("[" + processStream.getProcessCode()+ "]" + processStream.getProcessName()); processNode.setParentId(null); processNode.setIconClass(""); processNode.setType(5); if (StrUtil.isEmpty(processStream.getPsvId())) { //没有partsId,部件下的工序 processNode.setRField(processStream.getComponentId()); processNode.setEntity(processStream); if(componentMap.containsKey(processNode.getRField())) { componentNode = componentMap.get(processNode.getRField()); processNode.setParentId(componentNode.getId()); componentNode.addChildren(processNode); } }else { //有psvId,零件下的工序 processNode.setRField(processStream.getPsvId()); processNode.setEntity(processStream); if(pvsMap.containsKey(processNode.getRField())) { pvsNode = pvsMap.get(processNode.getRField()); processNode.setParentId(pvsNode.getId()); pvsNode.addChildren(processNode); } } processMap.put(processStream.getProcessId(),processNode); } //工步存在工序下 for (WorkStep workStep : workStepList) { workStepNode = new CommonGenericTree(); workStepNode.setId(workStep.getId()); workStepNode.setLabel("[" + workStep.getStepCode() + "]" + workStep.getStepName()); workStepNode.setParentId(null); workStepNode.setIconClass(""); workStepNode.setType(6); workStepNode.setRField(workStep.getProcessId()); workStepNode.setEntity(workStep); if (processMap.containsKey(workStepNode.getRField())) { processNode = processMap.get(workStepNode.getRField()); workStepNode.setParentId(processNode.getId()); processNode.addChildren(workStepNode); } } return tree; } public static List loadTree(List productInfoList) { List tree = new ArrayList();// TreeNode集合,存放所有树对象。 CommonGenericTree node; for(ProductInfo productInfo : productInfoList) { node = new CommonGenericTree(); node.setId(productInfo.getProductId()); // node.setLabel("[" + productInfo.getProductNo()+ "]" + productInfo.getProductName()); node.setLabel(productInfo.getProductName()); //node.setParentId(null); node.setIconClass(""); node.setType(1); node.setEntity(productInfo); tree.add(node); } return tree; } }