diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/DepartmentServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/DepartmentServiceImpl.java index 2655cb02..9ecef651 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/DepartmentServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/DepartmentServiceImpl.java @@ -104,11 +104,29 @@ public class DepartmentServiceImpl extends ServiceImpl searchByKey(DepartmentSearchQO request) { + List 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 list = new CopyOnWriteArrayList<>(departments); + list.forEach(department -> bindParent(department, list)); + List datas = Convert.toList(DepartmentVO.class, list); + bindTree2(datas); + return new PageData() + .setPage(request.getPage()) + .setPageSize(request.getPageSize()) + .setTotal(datas.size()) + .setItems(datas); + } + @Override public Set getWithChildren(Long deptId) { Set ids = lambdaQuery() @@ -138,11 +156,11 @@ public class DepartmentServiceImpl extends ServiceImpl datas = Convert.toList(DepartmentSimpleVO.class, list); - bindTree(datas); + bindTree1(datas); return datas; } - private void bindTree(List datas) { + private void bindTree1(List datas) { datas.sort(Comparator.comparing(DepartmentSimpleVO::getId).reversed()); Iterator iterator = datas.iterator(); while (iterator.hasNext()) { @@ -155,6 +173,19 @@ public class DepartmentServiceImpl extends ServiceImpl datas) { + datas.sort(Comparator.comparing(DepartmentVO::getId).reversed()); + Iterator 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 departments) { if (department.getParentId() != 0L && departments.stream().noneMatch(d -> Objects.equals(d.getId(), department.getParentId()))) {