package org.springblade.mdm.gkw.programnode.service; import lombok.AllArgsConstructor; 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.stereotype.Service; import java.util.*; /** * 程序节点 * * @author yangys */ @Slf4j @Service @AllArgsConstructor public class ProgramNodeService extends BizServiceImpl { private final ParamService paramService; private final TreeDeptService treeDeptService; private final MachineService machineService; private static final String DEFAULT_WORKSHOP_VALUE = "4"; /** /** * 懒加载列表 * @param parentId 父节点ID * @return */ public List lazyList(Long parentId) { // 判断点击搜索但是没有查询条件的情况 if (Func.isEmpty(parentId)) { parentId = 0L; } return baseMapper.lazyList(parentId); } /** * 生成工控网树 * @return 树根节点集合 */ public List loadTree(String includeSend) { Integer workshopDictVal = Func.toInt(paramService.getParamValue(ParamConstants.WORKSHOP_DICT_KEY,DEFAULT_WORKSHOP_VALUE)); Long rootDeptId = Func.toLong(paramService.rootDeptId()); TreeDept root = treeDeptService.getById(rootDeptId); List 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 workshops = treeDeptService.lambdaQuery().eq(TreeDept::getDeptCategory,workshopDictVal) .orderByAsc(TreeDept::getSort).list(); List 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 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 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(MachineFile.DIR_TYPE_REC); recNode.setMachineCode(nodeMachine.getMachineCode()); recNode.setDirType(MachineFile.DIR_TYPE_REC); recNode.setNodeType("dir"); dirNodes.add(recNode); ProgramNodeVO progNode = new ProgramNodeVO(); progNode.setId(nodeMachine.getId()+"_"+MachineFile.DIR_TYPE_PROGRAM); progNode.setName(MachineFile.DIR_TYPE_PROGRAM); progNode.setMachineCode(nodeMachine.getMachineCode()); progNode.setDirType(MachineFile.DIR_TYPE_PROGRAM); progNode.setNodeType("dir"); dirNodes.add(progNode); ProgramNodeVO tempNode = new ProgramNodeVO(); tempNode.setId(nodeMachine.getId()+"_"+MachineFile.DIR_TYPE_TEMP); tempNode.setName(MachineFile.DIR_TYPE_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 treeSearch(String keyword) { return machineService.lambdaQuery() .like(Machine::getCode,keyword) .list().stream().map(m -> {return Func.toStr(m.getId());}).toList(); } }