java
/**
* 获取部门列表,支持模糊查询
*/
public List<SysDeptVo> getDeptList(String deptName) {
QueryWrapper<SysDeptEntity> wrapper = new QueryWrapper<>();
wrapper.like(!StrUtil.isEmpty(deptName), "name", deptName);
List<SysDeptEntity> list = sysDeptMapper.selectList(wrapper);
List<SysDeptVo> voList = list.stream().map(entity -> {
SysDeptVo vo = new SysDeptVo();
BeanUtils.copyProperties(entity, vo);
vo.setChildren(new ArrayList<>()); // 初始化子部门列表
return vo;
}).collect(Collectors.toList());
Map<String, SysDeptVo> deptMap = voList.stream().collect(Collectors.toMap(SysDeptVo::getDeptId, vo -> vo));
for (SysDeptVo vo : voList) {
String parentId = vo.getParentId();
SysDeptVo parentDept = deptMap.get(parentId);
if (parentDept != null) {
parentDept.getChildren().add(vo); // 将当前部门添加到父级部门的子部门列表中
}
}
return voList.stream().filter(s -> {
SysDeptVo sysDeptVo = deptMap.get(s.getParentId());
return Objects.isNull(sysDeptVo); // 筛选出没有父级部门的部门, 即:顶级部门
}).collect(Collectors.toList());
}