|
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<ProgramNodeMapper, ProgramNode> {
|
|
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<ProgramNodeVO> lazyList(Long parentId) {
|
// 判断点击搜索但是没有查询条件的情况
|
if (Func.isEmpty(parentId)) {
|
parentId = 0L;
|
}
|
|
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.rootDeptId());
|
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();
|
}
|
}
|