yangys
2025-08-22 9810791a41d381a10451f3e9770cfcfedf98e886
blade-service/blade-mdm/src/main/java/org/springblade/mdm/gkw/programnode/service/ProgramNodeService.java
@@ -4,18 +4,23 @@
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BizServiceImpl;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.mdm.basesetting.machine.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.gkw.programnode.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.springblade.system.feign.ISysClient;
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 +32,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 +51,76 @@
      return baseMapper.lazyList(parentId);
   }
   /**
    * 生成工控网树
    * @return 树根节点集合
    */
   public List<ProgramNodeVO> loadTree() {
      Integer workshoptDictVal = Func.toInt(paramService.getParamValue(ParamConstants.WORKSHOP_DICT_KEY,DEFAULT_WORKSHOP_VALUE));
      List<ProgramNodeVO> roots = new ArrayList<>();
      List<TreeDept> workshops = treeDeptService.lambdaQuery().eq(TreeDept::getDeptCategory,workshoptDictVal)
         .orderByAsc(TreeDept::getSort).list();
      for(TreeDept workshop : workshops) {
         ProgramNodeVO node = new ProgramNodeVO();
         node.setId(String.valueOf(workshop.getId()));
         node.setName(workshop.getDeptName());
         roots.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());
            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());
               addFolderNodes(nodeMachine);
               nodeGd.addChildren(nodeMachine);
            });
         }
      }
      return roots;
   }
   /**
    * 加入3个文件夹节点
    * @param nodeMachine 机床节点
    */
   void addFolderNodes(ProgramNodeVO nodeMachine){
      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.setParentId(nodeMachine.getId());
      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);
      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);
      nodeMachine.setChildren(Arrays.asList(sendNode,recNode,tempNode));
   }
}