package com.hnzhny.mall.restfulapi.modular.sys.controller.utils;
import java.util.List;
import java.util.Map;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.hnzhny.mall.restfulapi.modular.sys.controller.vo.TreeVO;
public class TreeCommonToolUtils {
private List<TreeVO> rootList;
private List<TreeVO> bodyList;
public TreeCommonToolUtils(List<TreeVO> rootList, List<TreeVO> bodyList) {
this.rootList = rootList;
this.bodyList = bodyList;
}
public List<TreeVO> getTree(){
if(bodyList != null && !bodyList.isEmpty()){
Map<Integer,Integer> map = Maps.newHashMapWithExpectedSize(bodyList.size());
rootList.forEach(beanTree -> getChild(beanTree,map));
return rootList;
}
return null;
}
public void getChild(TreeVO treeDto,Map<Integer,Integer> map){
List<TreeVO> childList = Lists.newArrayList();
bodyList.stream()
.filter(c -> !map.containsKey(c.getTreeNodeId()))
.filter(c ->c.getParentTreeNodeId().equals(treeDto.getTreeNodeId()))
.forEach(c ->{
map.put(c.getTreeNodeId(),c.getParentTreeNodeId());
getChild(c,map);
childList.add(c);
});
treeDto.setChildTreeVO(childList);
}
}
package com.hnzhny.mall.restfulapi.modular.sys.controller.vo;
import java.util.List;
import lombok.Data;
@Data
public class TreeVO {
private Integer treeNodeId;
private String treeNodeName;
private Integer parentTreeNodeId;
private List<TreeVO> childTreeVO;
}
@Override
public List<TreeVO> getDeptTree() {
TreeVO parentTreeVO = new TreeVO();
parentTreeVO.setTreeNodeId(0);
parentTreeVO.setTreeNodeName("顶级");
ArrayList<TreeVO> rootList = new ArrayList<>();
rootList.add(parentTreeVO);
List<SysDept> sysDeptList = this.selectList(new EntityWrapper<SysDept>().eq("is_deleted", HttpConsts.ZERO)
.eq("is_enable", HttpConsts.ONE).orderBy("num", true));
ArrayList<TreeVO> bodyList = new ArrayList<>();
TreeVO vo = null;
if (CollectionUtils.isNotEmpty(sysDeptList)) {
for (Iterator<SysDept> it = sysDeptList.iterator(); it.hasNext();) {
SysDept sysDept = it.next();
vo = new TreeVO();
vo.setTreeNodeId(sysDept.getId());
vo.setTreeNodeName(
StringUtils.isBlank(sysDept.getSimplename()) ? sysDept.getFullname() : sysDept.getSimplename());
vo.setParentTreeNodeId(sysDept.getPid());
bodyList.add(vo);
}
}
TreeCommonToolUtils utils = new TreeCommonToolUtils(rootList, bodyList);
List<TreeVO> result = utils.getTree();
return result;
}