yangys
2025-08-30 86c8efdb19a2f4be79a947650ef62ed79382011b
blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/service/ProgramNodeService.java
@@ -10,6 +10,7 @@
import org.springblade.mdm.basesetting.machine.entity.Machine;
import org.springblade.mdm.commons.contants.ParamConstants;
import org.springblade.mdm.commons.service.ParamService;
import org.springblade.mdm.machinefile.entity.MachineFile;
import org.springblade.mdm.gkw.programnode.entity.ProgramNode;
import org.springblade.mdm.gkw.programnode.entity.TreeDept;
import org.springblade.mdm.gkw.programnode.mapper.ProgramNodeMapper;
@@ -54,43 +55,55 @@
    * 生成工控网树
    * @return 树根节点集合
    */
   public List<ProgramNodeVO> loadTree() {
      Integer workshoptDictVal = Func.toInt(paramService.getParamValue(ParamConstants.WORKSHOP_DICT_KEY,DEFAULT_WORKSHOP_VALUE));
   public List<ProgramNodeVO> loadTree(String includeSend) {
      Integer workshoptDictVal = Func.toInt(paramService.getParamValue(ParamConstants.WORKSHOP_DICT_KEY,DEFAULT_WORKSHOP_VALUE));
      Long rootDeptId = Func.toLong(paramService.rootDetpId());
      TreeDept root =  treeDeptService.getById(rootDeptId);
      List<ProgramNodeVO> roots = new ArrayList<>();
      ProgramNodeVO rootVO = new ProgramNodeVO();
      rootVO.setNodeType("factory");
      rootVO.setName(root.getDeptName());
      rootVO.setId(rootVO.getId());
      roots.add(rootVO);
      List<TreeDept> workshops = treeDeptService.lambdaQuery().eq(TreeDept::getDeptCategory,workshoptDictVal)
         .orderByAsc(TreeDept::getSort).list();
      List<ProgramNodeVO> workshopsVOList = new ArrayList<>();
      for(TreeDept workshop : workshops) {
         ProgramNodeVO node = new ProgramNodeVO();
         node.setId(workshop.getId());
         node.setId(String.valueOf(workshop.getId()));
         node.setName(workshop.getDeptName());
         roots.add(node);
         node.setNodeType("workshop");
      //   roots.add(node);
         workshopsVOList.add(node);
         //加入车间下的工段
         List<TreeDept> gongduanList = treeDeptService.lambdaQuery().eq(TreeDept::getParentId,workshop.getId())
            .orderByAsc(TreeDept::getSort).list();
         for(TreeDept gd : gongduanList){
            ProgramNodeVO nodeGd = new ProgramNodeVO();
            nodeGd.setId(nodeGd.getId());
            nodeGd.setId(String.valueOf(gd.getId()));
            nodeGd.setName(gd.getDeptName());
            nodeGd.setParentId(gd.getParentId());
            nodeGd.setNodeType("seg");
            node.addChildren(nodeGd);
            //加入工段下的机床
            machineService.lambdaQuery().eq(Machine::getOwnerDept,gd.getId()).list().forEach(machine -> {
               ProgramNodeVO nodeMachine = new ProgramNodeVO();
               nodeMachine.setName(machine.getCode());
               nodeMachine.setId(machine.getId());
               nodeMachine.setId(String.valueOf(machine.getId()));
               nodeMachine.setMachineCode(machine.getCode());
               addFolderNodes(nodeMachine);
               nodeMachine.setNodeType("machine");
               addFolderNodes(nodeMachine,includeSend);
               nodeGd.addChildren(nodeMachine);
            });
         }
      }
      rootVO.setChildren(workshopsVOList);
      return roots;
   }
@@ -99,23 +112,48 @@
    * 加入3个文件夹节点
    * @param nodeMachine 机床节点
    */
   void addFolderNodes(ProgramNodeVO nodeMachine){
   void addFolderNodes(ProgramNodeVO nodeMachine,String includeSend){
      ProgramNodeVO sendNode = new ProgramNodeVO();
      sendNode.setName("SEND");
      sendNode.setMachineCode(nodeMachine.getMachineCode());
      sendNode.setDirType("SEND");
      List<ProgramNodeVO> dirNodes = new ArrayList<>();
      if(!"0".equals(includeSend)){
         ProgramNodeVO sendNode = new ProgramNodeVO();
         sendNode.setId(nodeMachine.getId()+"_"+MachineFile.DIR_TYPE_SEND);
         sendNode.setName("SEND");
         sendNode.setMachineCode(nodeMachine.getMachineCode());
         sendNode.setDirType(MachineFile.DIR_TYPE_SEND);
         sendNode.setNodeType("dir");
         dirNodes.add(sendNode);
      }
      ProgramNodeVO recNode = new ProgramNodeVO();
      recNode.setId(nodeMachine.getId()+"_"+MachineFile.DIR_TYPE_REC);
      recNode.setName("REC");
      recNode.setMachineCode(nodeMachine.getMachineCode());
      recNode.setDirType("REC");
      recNode.setDirType(MachineFile.DIR_TYPE_REC);
      recNode.setNodeType("dir");
      dirNodes.add(recNode);
      ProgramNodeVO tempNode = new ProgramNodeVO();
      tempNode.setId(nodeMachine.getId()+"_"+MachineFile.DIR_TYPE_TEMP);
      tempNode.setName("TEMP");
      tempNode.setMachineCode(nodeMachine.getMachineCode());
      tempNode.setDirType("TEMP");
      tempNode.setDirType(MachineFile.DIR_TYPE_TEMP);
      tempNode.setNodeType("dir");
      dirNodes.add(tempNode);
      nodeMachine.setChildren(Arrays.asList(sendNode,recNode,tempNode));
      nodeMachine.setChildren(dirNodes);
   }
   /**
    * 树查询
    * @param keyword 关键字
    * @return 搜索道德机器列表
    */
   public List<String> treeSearch(String keyword) {
      return machineService.lambdaQuery()
         .like(Machine::getCode,keyword)
         .list().stream().map(m -> {return Func.toStr(m.getId());}).toList();
   }
}