| | |
| | | |
| | | //需要固化的节点 |
| | | NcNode pkgNode = nodeService.lambdaQuery().eq(NcNode::getProcessInstanceId, flowProps.getProcessInstanceId()).one(); |
| | | //原节点保留不动,置为老版本 |
| | | pkgNode.setIsLastEdition(0); |
| | | pkgNode.setIsLocked(1); |
| | | nodeService.updateById(pkgNode); |
| | | |
| | | nodeService.getBaseMapper().deleteById(pkgNode.getParentId());//删除机床组节点 |
| | | //List<NcNode> historyProgramPackageNodes = nodeService.getTryNodeHistory(pkgNode); |
| | | try { |
| | | moveNodeToCuredTree(pkgNode, flowProps);//, historyProgramPackageNodes |
| | |
| | | /** |
| | | * 将节点和历史节点挪动到固化的同级节点下 |
| | | * @param pkgNode1 要固化的节点 |
| | | * @param historyProgramPackageNodes 程序包名 历史节点List<NcNode> historyProgramPackageNodes, |
| | | * @param programProperties 流程属性 |
| | | */ |
| | | void moveNodeToCuredTree(NcNode pkgNode1, FlowProgramProperties programProperties) throws IOException { |
| | | |
| | | //创建节点到机床级别.(固化树) |
| | | NcNode machineGroupNode = ncNodeAutoCreateService.createNodeTreeToMachineGroup(programProperties); |
| | | |
| | | //新建一个节点,作为固化节点,老节点保留不动,置为老版本 |
| | | //新建一个节点,作为固化节点, |
| | | this.nodeService.lambdaUpdate().likeRight(NcNode::getParentIds, machineGroupNode.subNodeParentIds()) |
| | | .in(NcNode::getNodeType, Arrays.asList(NcNode.TYPE_PROGRAM_PACKAGE,NcNode.TYPE_PROGRAM_FILE)) |
| | | .set(NcNode::getIsLastEdition,0).set(NcNode::getIsLocked,1).update(); |
| | | |
| | | //pkgNode1.setParentId(machineGroupNode.getId()); |
| | | //pkgNode1.setParentIds(machineGroupNode.subNodeParentIds());//更新上级节点,下面还要用应为在historyProgramPackageNodes中的和这个不是一个实例 |
| | | List<NcNode> programNodes = nodeService.getProgramFilesByPackageId(pkgNode1.getId()); |
| | | boolean tryPkgNodeHasChild = !programNodes.isEmpty(); |
| | | |
| | |
| | | cureNode.setParentIds(machineGroupNode.subNodeParentIds()); |
| | | nodeService.save(cureNode); |
| | | |
| | | this.copyNonProgramNodes(pkgNode1,cureNode); |
| | | /* |
| | | List<NcNode> oriProgramNodes = nodeService.lambdaQuery().eq(NcNode::getParentId,pkgNode1.getId()).list(); |
| | | //FlowProgramFile pfile; |
| | | FlowProgramFile pfile; |
| | | for(NcNode oldProgramNode : oriProgramNodes){ |
| | | oldProgramNode.setParentIds(pkgNode1.subNodeParentIds()); |
| | | oldProgramNode.setIsLastEdition(0); |
| | | |
| | | //pfile = flowProgramFileService.getById(oldProgramNode.getFlowProgramFileId()); |
| | | |
| | | //当前固化程序包名下的“其他文件”非程序文件。不设置为老版本,直接挪到固化树下,两个网络之间只交换程序文件,其他文件只能保留 |
| | | //其他文件,需要复制到新建的固化节点下 |
| | | NcNode newFileNode = new NcNode(); |
| | | BeanUtils.copyProperties(oldProgramNode,newFileNode); |
| | | EntityUtil.clearBaseProperties(newFileNode); |
| | | newFileNode.setParentId(cureNode.getId()); |
| | | newFileNode.setParentIds(cureNode.subNodeParentIds()); |
| | | newFileNode.setIsLastEdition(1); |
| | | nodeService.save(newFileNode); |
| | | //其他文件,需要复制到新建的固化节点下(程序文件不复制) |
| | | pfile = flowProgramFileService.getById(oldProgramNode.getFlowProgramFileId()); |
| | | if(!pfile.isProgram()) { |
| | | NcNode newFileNode = new NcNode(); |
| | | BeanUtils.copyProperties(oldProgramNode, newFileNode); |
| | | EntityUtil.clearBaseProperties(newFileNode); |
| | | newFileNode.setParentId(cureNode.getId()); |
| | | newFileNode.setParentIds(cureNode.subNodeParentIds()); |
| | | newFileNode.setIsLastEdition(1); |
| | | nodeService.save(newFileNode); |
| | | } |
| | | |
| | | } |
| | | nodeService.updateBatchById(oriProgramNodes); |
| | | /* |
| | | for(NcNode hisPackageNode : historyProgramPackageNodes){ |
| | | hisPackageNode.setIsLastEdition(0); |
| | | hisPackageNode.setParentId(machineGroupNode.getParentId()); |
| | | hisPackageNode.setParentIds(machineGroupNode.subNodeParentIds());//程序包与机床节点同级 |
| | | hisPackageNode.lock(); |
| | | */ |
| | | |
| | | //处理程序包下层的程序节点,这里:老的程序节点不用更新为历史版本,因为会建立新节点。只修改parentId 和 parentIds //改了,看看效果 |
| | | List<NcNode> oriProgramNodes = nodeService.lambdaQuery().eq(NcNode::getParentId,hisPackageNode.getId()).list(); |
| | | FlowProgramFile pfile; |
| | | for(NcNode oldProgramNode : oriProgramNodes){ |
| | | oldProgramNode.setParentIds(hisPackageNode.subNodeParentIds()); |
| | | oldProgramNode.setIsLastEdition(0); |
| | | this.addNewProgramNode(cureNode,pkgNode1.getProcessInstanceId()); |
| | | |
| | | pfile = flowProgramFileService.getById(oldProgramNode.getFlowProgramFileId()); |
| | | //if(oldProgramNode.getParentId().equals(pkgNode1.getId()) && !pfile.isProgram()){ |
| | | //当前固化程序包名下的“其他文件”非程序文件。不设置为老版本,直接挪到固化树下,两个网络之间只交换程序文件,其他文件只能保留 |
| | | //其他文件,需要复制到新建的固化节点下 |
| | | NcNode newFileNode = new NcNode(); |
| | | BeanUtils.copyProperties(oldProgramNode,newFileNode); |
| | | EntityUtil.clearBaseProperties(newFileNode); |
| | | newFileNode.setParentId(cureNode.getId()); |
| | | newFileNode.setParentIds(cureNode.subNodeParentIds()); |
| | | newFileNode.setIsLastEdition(1); |
| | | nodeService.save(newFileNode); |
| | | //} |
| | | } |
| | | |
| | | /** |
| | | * 从待固化节点复制非程序文件节点到固化节点下 |
| | | * @param oriPkgNode 待固化节点 |
| | | * @param cureNode 固化节点 |
| | | */ |
| | | void copyNonProgramNodes(NcNode oriPkgNode,NcNode cureNode){ |
| | | List<NcNode> oriProgramNodes = nodeService.lambdaQuery().eq(NcNode::getParentId,oriPkgNode.getId()).list(); |
| | | FlowProgramFile pfile; |
| | | for(NcNode oldProgramNode : oriProgramNodes){ |
| | | oldProgramNode.setParentIds(oriPkgNode.subNodeParentIds()); |
| | | oldProgramNode.setIsLastEdition(0); |
| | | //当前固化程序包名下的“其他文件”非程序文件。不设置为老版本,直接挪到固化树下,两个网络之间只交换程序文件,其他文件只能保留 |
| | | //其他文件,需要复制到新建的固化节点下(程序文件不复制) |
| | | pfile = flowProgramFileService.getById(oldProgramNode.getFlowProgramFileId()); |
| | | if(!pfile.isProgram()) { |
| | | NcNode newFileNode = new NcNode(); |
| | | BeanUtils.copyProperties(oldProgramNode, newFileNode); |
| | | EntityUtil.clearBaseProperties(newFileNode); |
| | | newFileNode.setParentId(cureNode.getId()); |
| | | newFileNode.setParentIds(cureNode.subNodeParentIds()); |
| | | newFileNode.setIsLastEdition(1); |
| | | nodeService.save(newFileNode); |
| | | } |
| | | nodeService.updateBatchById(oriProgramNodes); |
| | | |
| | | } |
| | | nodeService.updateBatchById(oriProgramNodes); |
| | | } |
| | | |
| | | */ |
| | | //nodeService.updateBatchById(historyProgramPackageNodes); |
| | | |
| | | void addNewProgramNode(NcNode cureNode,String processInstanceId) throws IOException { |
| | | Machine machine = machineService.getByCode(cureNode.getMachineCode()); |
| | | List<DictBiz> annoDicts = programAnnotationService.getAnnotionDictList(); |
| | | //新的流程文件,需要在包节点下新建,不能用老的 |
| | | List<FlowProgramFile> files = flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId,pkgNode1.getProcessInstanceId()).list(); |
| | | //新的流程文件,需要在包节点下新建,不能用老的包节点 |
| | | List<FlowProgramFile> files = flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId,processInstanceId).list(); |
| | | for(FlowProgramFile flowProgramFile : files){ |
| | | NcNode newProgNode = new NcNode(); |
| | | |
| | |
| | | |
| | | nodeService.save(newProgNode); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | /** |