| | |
| | | * @return |
| | | */ |
| | | @Override |
| | | public AjaxResult listWithTree() { |
| | | public AjaxResult listWithTree(Integer depth) { |
| | | |
| | | List<ZInfoUser> allPeopleList = list(); |
| | | List<ZInfoUser> result = null; |
| | | try { |
| | | result = allPeopleList.stream().filter(people -> people.getUserId()!=1&&(people.getFatherId() == 0||people.getMomId()==0)) |
| | | .map(people -> { |
| | | people.setChildList(fillChildren(people, allPeopleList)); |
| | | if(depth>1) |
| | | people.setChildList(fillChildren(people, allPeopleList, depth-1)); |
| | | return people; |
| | | }).collect(Collectors.toList()); |
| | | } catch (NullPointerException e) { |
| | |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public AjaxResult listMySelfAndSpouse(Long id) { |
| | | LambdaQueryWrapper<ZInfoUser> lqw1 = new LambdaQueryWrapper<>(); |
| | | lqw1.eq(ZInfoUser::getUserId,id); |
| | | ZInfoUser myself = getOne(lqw1); |
| | | Long spouseId = myself.getSpouseId(); |
| | | |
| | | LambdaQueryWrapper<ZInfoUser> lqw2 = new LambdaQueryWrapper<>(); |
| | | lqw2.eq(ZInfoUser::getUserId,spouseId); |
| | | ZInfoUser spouse = getOne(lqw2); |
| | | |
| | | ArrayList<ZInfoUser> zInfoUsers = new ArrayList<>(); |
| | | zInfoUsers.add(myself); |
| | | zInfoUsers.add(spouse); |
| | | |
| | | return AjaxResult.success(zInfoUsers); |
| | | } |
| | | |
| | | /** |
| | | * 递归算法 |
| | | * @param people |
| | | * @param allPeopleList |
| | | * @return |
| | | */ |
| | | private List<ZInfoUser> fillChildren(ZInfoUser people, List<ZInfoUser> allPeopleList) { |
| | | return allPeopleList.stream().filter( |
| | | private List<ZInfoUser> fillChildren(ZInfoUser people, List<ZInfoUser> allPeopleList, Integer depth) { |
| | | |
| | | // TODO: 2023-05-05 控制递归的次数 |
| | | // if(depth==layer) |
| | | |
| | | // layer = layer + 1; |
| | | System.out.println(depth); |
| | | List<ZInfoUser> collect = allPeopleList.stream().filter( |
| | | one -> one.getFatherId() == people.getUserId() || one.getMomId() == people.getUserId() |
| | | ).map( |
| | | one -> { |
| | | one.setChildList(fillChildren(one, allPeopleList)); |
| | | return one; |
| | | if(depth==1) |
| | | return one; |
| | | else { |
| | | List<ZInfoUser> zinfo = fillChildren(one, allPeopleList, depth - 1); |
| | | one.setChildList(zinfo); |
| | | System.out.println(one); |
| | | return one; |
| | | } |
| | | |
| | | //return one; |
| | | } |
| | | ).collect(Collectors.toList()); |
| | | System.out.println(collect); |
| | | return collect; |
| | | |
| | | } |
| | | |