yangys
2025-09-06 61763cc1a182effa7e5535ac72d54a6a56f029eb
blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/service/ProgramNodeService.java
@@ -5,17 +5,18 @@
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BizServiceImpl;
import org.springblade.core.tool.utils.Func;
import org.springblade.mdm.basesetting.machine.service.MachineService;
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;
import org.springblade.mdm.gkw.programnode.vo.ProgramNodeVO;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.*;
/**
 * 程序节点
@@ -27,7 +28,10 @@
@AllArgsConstructor
public class ProgramNodeService extends BizServiceImpl<ProgramNodeMapper, ProgramNode> {
   private final ParamService paramService;
   private final TreeDeptService treeDeptService;
   private final MachineService machineService;
   private static final String DEFAULT_WORKSHOP_VALUE = "4";
   /**
   /**
    * 懒加载列表
@@ -43,4 +47,112 @@
      return baseMapper.lazyList(parentId);
   }
   /**
    * 生成工控网树
    * @return 树根节点集合
    */
   public List<ProgramNodeVO> loadTree(String includeSend) {
      Integer workshopDictVal = 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());
      rootVO.setMachineCode("FAC_"+rootVO.getId());
      roots.add(rootVO);
      List<TreeDept> workshops = treeDeptService.lambdaQuery().eq(TreeDept::getDeptCategory,workshopDictVal)
         .orderByAsc(TreeDept::getSort).list();
      List<ProgramNodeVO> workshopsVOList = new ArrayList<>();
      for(TreeDept workshop : workshops) {
         ProgramNodeVO node = new ProgramNodeVO();
         node.setId(String.valueOf(workshop.getId()));
         node.setName(workshop.getDeptName());
         node.setNodeType("workshop");
         node.setMachineCode("WS_"+node.getId());
      //   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(String.valueOf(gd.getId()));
            nodeGd.setName(gd.getDeptName());
            nodeGd.setParentId(gd.getParentId());
            nodeGd.setNodeType("seg");
            nodeGd.setMachineCode("SEG_"+nodeGd.getId());
            node.addChildren(nodeGd);
            //加入工段下的机床
            machineService.lambdaQuery().eq(Machine::getOwnerDept,gd.getId()).list().forEach(machine -> {
               ProgramNodeVO nodeMachine = new ProgramNodeVO();
               nodeMachine.setName(machine.getCode());
               nodeMachine.setId(String.valueOf(machine.getId()));
               nodeMachine.setMachineCode(machine.getCode());
               nodeMachine.setNodeType("machine");
               addFolderNodes(nodeMachine,includeSend);
               nodeGd.addChildren(nodeMachine);
            });
         }
      }
      rootVO.setChildren(workshopsVOList);
      return roots;
   }
   /**
    * 加入3个文件夹节点
    * @param nodeMachine 机床节点
    */
   void addFolderNodes(ProgramNodeVO nodeMachine,String includeSend){
      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(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(MachineFile.DIR_TYPE_TEMP);
      tempNode.setNodeType("dir");
      dirNodes.add(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();
   }
}