初始化

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())) { if (StrUtil.isBlank(request.getName()) && StrUtil.isBlank(request.getNo())) {
return getPage(request.getPage(), request.getPageSize()); return getPage(request.getPage(), request.getPageSize());
} else { } else {
// return search(); return searchByKey(request);
return getPage(request.getPage(), request.getPageSize());
} }
} }
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 @Override
public Set<Long> getWithChildren(Long deptId) { public Set<Long> getWithChildren(Long deptId) {
Set<Long> ids = lambdaQuery() Set<Long> ids = lambdaQuery()
@ -138,11 +156,11 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
bindParent(department, list); bindParent(department, list);
}); });
List<DepartmentSimpleVO> datas = Convert.toList(DepartmentSimpleVO.class, list); List<DepartmentSimpleVO> datas = Convert.toList(DepartmentSimpleVO.class, list);
bindTree(datas); bindTree1(datas);
return datas; return datas;
} }
private void bindTree(List<DepartmentSimpleVO> datas) { private void bindTree1(List<DepartmentSimpleVO> datas) {
datas.sort(Comparator.comparing(DepartmentSimpleVO::getId).reversed()); datas.sort(Comparator.comparing(DepartmentSimpleVO::getId).reversed());
Iterator<DepartmentSimpleVO> iterator = datas.iterator(); Iterator<DepartmentSimpleVO> iterator = datas.iterator();
while (iterator.hasNext()) { 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) { private void bindParent(Department department, List<Department> departments) {
if (department.getParentId() != 0L if (department.getParentId() != 0L
&& departments.stream().noneMatch(d -> Objects.equals(d.getId(), department.getParentId()))) { && departments.stream().noneMatch(d -> Objects.equals(d.getId(), department.getParentId()))) {