1、通过id得到机构树及下面的所有子集合id
package com.li.base;
import org.apache.commons.collections.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
/**
* 获取某个层级下的全部数据
* @Author: yk
* @Date: 2022/09/22/17:18
*/
public class DG {
public static void main(String[] args) {
//第一层
List<YL> list = new ArrayList<>();
//第二层
List<YL> list1 = new ArrayList<>();
List<YL> list2 = new ArrayList<>();
List<YL> list11 = new ArrayList<>();
// 第2-1层下的第三层1个
YL yl2 = new YL();
yl2.setId(3);
yl2.setName("c");
yl2.setPid(2);
list2.add(yl2);
//第2-1层下的第三层2个
YL yl21 = new YL();
yl21.setId(4);
yl21.setName("c");
yl21.setPid(2);
list2.add(yl21);
//第2-2层下的第三层一个
YL yl22 = new YL();
yl22.setId(6);
yl22.setName("c");
yl22.setPid(5);
list11.add(yl22);
//第二层下的第一个
YL yl1 = new YL();
yl1.setId(2);
yl1.setName("b");
yl1.setPid(1);
yl1.setYlList(list2);
list1.add(yl1);
//第二层下的第二个
YL yl11 = new YL();
yl11.setId(5);
yl11.setName("b");
yl11.setPid(1);
yl11.setYlList(list11);
list1.add(yl11);
//第一层
YL yl = new YL();
yl.setId(1);
yl.setName("a");
yl.setPid(0);
yl.setYlList(list1);
list.add(yl);
List<Integer> list3 = listXh(list, 1);
System.out.println(list3);
}
private static List<Integer> listXh(List<YL> htrsSysTjcodes, Integer id) {
List<Integer> list = new ArrayList<>();
for (YL htrsSysTjcode : htrsSysTjcodes) {
if (htrsSysTjcode.getId()==id) {
list.add(htrsSysTjcode.getId());
if(htrsSysTjcode.getYlList()!=null){
list = listXh2((List<YL>) htrsSysTjcode.getYlList(),list);
}
}
}
if(CollectionUtils.isEmpty(list)){
for (YL htrsSysTjcode : htrsSysTjcodes) {
if(!CollectionUtils.isEmpty(htrsSysTjcode.getYlList())){
if(!CollectionUtils.isEmpty(listXh((List<YL>) htrsSysTjcode.getYlList(), id))){
return listXh((List<YL>) htrsSysTjcode.getYlList(), id);
}else{
listXh((List<YL>) htrsSysTjcode.getYlList(), id);
}
}
}
}
return list;
}
private static List<Integer> listXh2(List<YL> htrsSysTjcodes, List<Integer> list){
if(!CollectionUtils.isEmpty(htrsSysTjcodes)){
for (YL htrsSysTjcode : htrsSysTjcodes) {
list.add(htrsSysTjcode.getId());
if(!CollectionUtils.isEmpty(htrsSysTjcode.getYlList())){
listXh2((List<YL>) htrsSysTjcode.getYlList(),list);
}
}
}
return list;
}
}