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.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() { Integer workshoptDictVal = Func.toInt(paramService.getParamValue(ParamConstants.WORKSHOP_DICT_KEY,DEFAULT_WORKSHOP_VALUE)); List roots = new ArrayList<>(); List workshops = treeDeptService.lambdaQuery().eq(TreeDept::getDeptCategory,workshoptDictVal) .orderByAsc(TreeDept::getSort).list(); for(TreeDept workshop : workshops) { ProgramNodeVO node = new ProgramNodeVO(); node.setId(workshop.getId()); node.setName(workshop.getDeptName()); roots.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(nodeGd.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.getName()); nodeMachine.setId(machine.getId()); addFolderNodes(nodeMachine); nodeGd.addChildren(nodeMachine); }); } } return roots; } /** * 加入3个文件夹节点 * @param nodeMachine 机床节点 */ void addFolderNodes(ProgramNodeVO nodeMachine){ ProgramNodeVO sendNode = new ProgramNodeVO(); sendNode.setName("SEND"); sendNode.setDirType("SEND"); ProgramNodeVO recNode = new ProgramNodeVO(); recNode.setName("REC"); sendNode.setDirType("REC"); ProgramNodeVO tempNode = new ProgramNodeVO(); tempNode.setName("TEMP"); sendNode.setDirType("TEMP"); nodeMachine.setChildren(Arrays.asList(sendNode,recNode,tempNode)); } }