yangys
2025-07-25 86d0a38916d2edb66e451c44f1f1b9729dee965b
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcNodeService.java
@@ -12,11 +12,14 @@
import org.springblade.mdm.program.mapper.NcNodeMapper;
import org.springblade.mdm.program.vo.NcNodeProgramQueryVO;
import org.springblade.mdm.program.vo.NcNodeProgramVO;
import org.springblade.mdm.program.vo.NcNodeQueryVO;
import org.springblade.mdm.program.vo.NcNodeVO;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
 * 程序节点
@@ -82,14 +85,6 @@
      return baseMapper.lazyList(parentId);
   }
   /**
    * 程序节点
    * @param query
    * @return
    */
   public IPage<NcNodeProgramVO> programPageQuery(NcNodeProgramQueryVO query) {
      return this.getBaseMapper().programPageQuery(Condition.getPage(query),query);
   }
   /**
    * 查询现有固化的程序,暂定条件:零组件号相同,且是同一机床组
@@ -102,4 +97,64 @@
   }
   /**
    * 首页树查询
    * @param queryVO
    * @return
    */
   public List<NcNodeVO> searchList(NcNodeQueryVO queryVO) {
      //1.根据关进字和节点类型查询初始列表,查询的原始列表,需要hasChild字段,所以使用mapper.xml
      List<NcNodeVO> oriList = this.getBaseMapper().searchList(queryVO);
      //List<NcNode> list = this.lambdaQuery().eq(NcNode::getNodeType, queryVO.getNodeType()).like(NcNode::getName, queryVO.getName()).list();
      if ("10".equals(queryVO.getNodeType())) {
         //搜索的根级别,直接返回
         return oriList;
      }
      List<NcNodeVO> allVos = new ArrayList<NcNodeVO>();//已经加入过的节点,用于去重
      List<NcNodeVO> rootVos = new ArrayList<NcNodeVO>();
      //List<NcNode> rootNodes = new ArrayList<>();
      for(NcNodeVO vo : oriList){
         allVos.add(vo);
         //上级各级的节点
         List<NcNodeVO> parents = this.getBaseMapper().searchListInIds(Func.toLongList(vo.getParentIds()));
         for(NcNodeVO pvo : parents){
            if(pvo.getParentId() == 0L){
               rootVos.add(pvo);
            }
            allVos.add(pvo);
         }
      }
      for(NcNodeVO root : rootVos){
         addNodeChildren(root, allVos);
      }
      return rootVos;
   }
   void addNodeChildren(NcNodeVO node, List<NcNodeVO> allNodes) {
      for(NcNodeVO vo : allNodes){
         if(Objects.equals(vo.getParentId(), node.getId())){
            node.addChildren(vo);
         }
      }
      if(node.getChildren()!=null && !node.getChildren().isEmpty()){
         for(NcNodeVO child : node.getChildren()){
            addNodeChildren(child, allNodes);
         }
      }
   }
   NcNodeVO toNodeVO(NcNode node){
      NcNodeVO vo = new NcNodeVO();
      BeanUtils.copyProperties(node, vo);
      return vo;
   }
}