初始化

This commit is contained in:
曹鹏飞 2025-07-03 11:47:18 +08:00
parent d82d7462ea
commit 68011d046e
1 changed files with 35 additions and 4 deletions

View File

@ -104,11 +104,29 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
if (StrUtil.isBlank(request.getName()) && StrUtil.isBlank(request.getNo())) {
return getPage(request.getPage(), request.getPageSize());
} else {
// return search();
return getPage(request.getPage(), request.getPageSize());
return searchByKey(request);
}
}
private PageData<DepartmentVO> searchByKey(DepartmentSearchQO request) {
List<Department> departments = lambdaQuery()
.like(StrUtil.isNotBlank(request.getName()), Department::getName, request.getName())
.like(StrUtil.isNotBlank(request.getNo()), Department::getSourceId, request.getNo())
.list();
if (CollectionUtil.isEmpty(departments)) {
return new PageData<>();
}
List<Department> list = new CopyOnWriteArrayList<>(departments);
list.forEach(department -> bindParent(department, list));
List<DepartmentVO> datas = Convert.toList(DepartmentVO.class, list);
bindTree2(datas);
return new PageData<DepartmentVO>()
.setPage(request.getPage())
.setPageSize(request.getPageSize())
.setTotal(datas.size())
.setItems(datas);
}
@Override
public Set<Long> getWithChildren(Long deptId) {
Set<Long> ids = lambdaQuery()
@ -138,11 +156,11 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
bindParent(department, list);
});
List<DepartmentSimpleVO> datas = Convert.toList(DepartmentSimpleVO.class, list);
bindTree(datas);
bindTree1(datas);
return datas;
}
private void bindTree(List<DepartmentSimpleVO> datas) {
private void bindTree1(List<DepartmentSimpleVO> datas) {
datas.sort(Comparator.comparing(DepartmentSimpleVO::getId).reversed());
Iterator<DepartmentSimpleVO> iterator = datas.iterator();
while (iterator.hasNext()) {
@ -155,6 +173,19 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
}
}
private void bindTree2(List<DepartmentVO> datas) {
datas.sort(Comparator.comparing(DepartmentVO::getId).reversed());
Iterator<DepartmentVO> iterator = datas.iterator();
while (iterator.hasNext()) {
DepartmentVO vo = iterator.next();
DepartmentVO parentVO = datas.stream().filter(d -> Objects.equals(d.getId(), vo.getParentId())).findFirst().orElse(null);
if (Objects.nonNull(parentVO)) {
parentVO.getChildren().add(0, vo);
iterator.remove();
}
}
}
private void bindParent(Department department, List<Department> departments) {
if (department.getParentId() != 0L
&& departments.stream().noneMatch(d -> Objects.equals(d.getId(), department.getParentId()))) {