//根据当前用户登录机构的区域获取区域集合
public static List<Area> areaIdForUsed(String areaId) { //当前机构所在区域id
//查询所有区域
List<Area> areaList = areaService.findAll();
List<Area> rootTree = getAreaTree(areaList, areaId); //筛选为树形结构
List<Area> areaIds = getLeafNode(rootTree); //转换为集合
return areaIds;
}
制作区域树方法=============
private static List<Area> getAreaTree(List<Area> list, String areaId) {
List<Area> areas = Lists.newArrayList();
Area area = areaService.get(areaId);
areas.add(getChildOfTree(area, list));
return areas;
}
private static Area getChildOfTree(Area area, List<Area> areaList) {
area.setChildNodes(null);
for (Area child : areaList) {
if (child.getParentId().equals(area.getId())) {
if (area.getChildNodes() == null) {
area.setChildNodes(Lists.newArrayList());
}
area.getChildNodes().add(getChildOfTree(child, areaList));
}
}
return area;
}
将树转换为list方法
public static List<Area> getLeafNode(List<Area> eAreas) {
List<Area> newsTypeLeafNode = new ArrayList<>();
for (Area eArea : eAreas) {
//子节点为空的话,add进叶子节点集合
if (eArea.getChildNodes() != null) {
newsTypeLeafNode.add(eArea);
//递归遍历下一级
newsTypeLeafNode.addAll(getLeafNode(eArea.getChildNodes()));
} else {
newsTypeLeafNode.add(eArea);
}
}
return newsTypeLeafNode;
}