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.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.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.springblade.system.feign.ISysClient; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; 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 workshoptDictVal = Func.toInt(paramService.getParamValue(ParamConstants.WORKSHOP_DICT_KEY,DEFAULT_WORKSHOP_VALUE)); Long rootDeptId = Func.toLong(paramService.rootDetpId()); TreeDept root = treeDeptService.getById(rootDeptId); List roots = new ArrayList<>(); ProgramNodeVO rootVO = new ProgramNodeVO(); rootVO.setNodeType("factory"); rootVO.setName(root.getDeptName()); rootVO.setId(rootVO.getId()); roots.add(rootVO); List workshops = treeDeptService.lambdaQuery().eq(TreeDept::getDeptCategory,workshoptDictVal) .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"); // 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"); 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("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 treeSearch(String keyword) { return machineService.lambdaQuery() .like(Machine::getCode,keyword) .list().stream().map(m -> {return Func.toStr(m.getId());}).toList(); } }