diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/AdminUserController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/AdminUserController.java index c425c959..1fca14b9 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/AdminUserController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/AdminUserController.java @@ -373,7 +373,7 @@ public class AdminUserController extends ControllerBase { } /** - * 搜索账号 + * 搜索账号(新) * @param request 请求参数 */ @PostMapping("searchAccountNew") diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminUserVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminUserVO.java index 00811883..9c153e9c 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminUserVO.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminUserVO.java @@ -5,6 +5,7 @@ import lombok.Data; import lombok.experimental.Accessors; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -83,5 +84,5 @@ public class AdminUserVO { @JsonProperty("isGongfu") private boolean isGongfu; - private List children; + private List children = new ArrayList<>(); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminUserServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminUserServiceImpl.java index 484228df..28d2412a 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminUserServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminUserServiceImpl.java @@ -443,34 +443,66 @@ public class AdminUserServiceImpl extends ServiceImpl userVOS = convert(roots, department, positions, roleMaps, roles); - getChildren(userVOS.get(0), departments, adminUsers, positions, roleMaps, roles); - for (int index = 1, size = userVOS.size(); index < size; index++) { - userVOS.get(index).setChildren(userVOS.get(0).getChildren()); + List rootUserVOS = convert(roots, department, positions, roleMaps, roles); + getChildren(rootUserVOS.get(0), departments, adminUsers, positions, roleMaps, roles); + for (int index = 1, size = rootUserVOS.size(); index < size; index++) { + rootUserVOS.get(index).setChildren(rootUserVOS.get(0).getChildren()); } - return userVOS; + return rootUserVOS; } else { List adminUsers = lambdaQuery() .eq(AdminUser::getIsDel, false) - .like(StrUtil.isNotBlank(request.getLoginName()), AdminUser::getLoginName, request.getLoginName()) - .like(StrUtil.isNotBlank(request.getUserName()), AdminUser::getUserName, request.getUserName()) - .eq(request.getState() != null, AdminUser::getState, request.getState()) .list(); - if (CollectionUtil.isEmpty(adminUsers)) { + List searchUsers = adminUsers.stream() + .filter(u -> (StrUtil.isBlank(request.getLoginName()) || StrUtil.contains(u.getLoginName(), request.getLoginName())) + && (StrUtil.isBlank(request.getUserName()) || StrUtil.contains(u.getUserName(), request.getUserName())) + && (request.getState() == null || Objects.equals(u.getState(), request.getState())) + ) + .collect(Collectors.toList()); + if (CollectionUtil.isEmpty(searchUsers)) { return Collections.emptyList(); } - List userVOS = convert1(adminUsers, departments, positions, roleMaps, roles); - Set departmentVOS = departments.stream() - .filter(d -> userVOS.stream().map(AdminUserVO::getDepartmentId).anyMatch(dt -> Objects.equals(d.getId(), dt))) + Set searchDepartments = departments.stream() + .filter(d -> searchUsers.stream().map(AdminUser::getDepartmentId).anyMatch(dt -> Objects.equals(d.getId(), dt))) .collect(Collectors.toSet()); - departmentVOS.forEach(d -> bindParent(d, departmentVOS, departments)); - List rootDepartments = departmentVOS.stream() + searchDepartments.forEach(d -> bindParent(d, searchDepartments, departments)); + List rootDepartments = searchDepartments.stream() .filter(d -> d.getDeptParentId() == 0) .collect(Collectors.toList()); -// List -// rootDepartments.forEach(d -> getChildren1(d, departmentVOS, adminUsers, positions, roleMaps, roles)); - //TODO 绑定树形结构 - return userVOS; + List rootUsers = adminUsers.stream() + .filter(u -> rootDepartments.stream() + .map(TBaseDepartment::getId).anyMatch(dt -> Objects.equals(u.getDepartmentId(), dt)) + ).collect(Collectors.toList()); + List rootUserVOS = convert1(rootUsers, departments, positions, roleMaps, roles); + rootUserVOS.forEach(uvo -> getChildren1(uvo, departments, adminUsers, searchUsers, positions, roleMaps, roles)); + return rootUserVOS; + } + } + + private void getChildren1(AdminUserVO user, List departments, List users, List searchUsers + , List positions, List roleMaps, List roles) { + List cdepartments = departments.stream() + .filter(d -> Objects.equals(d.getDeptParentId(), user.getDepartmentId())) + .collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(cdepartments)) { + cdepartments.forEach(department -> { + List csers = searchUsers.stream() + .filter(u -> Objects.equals(u.getDepartmentId(), department.getId())) + .collect(Collectors.toList()); + if (CollectionUtil.isEmpty(csers)) { + csers = users.stream() + .filter(u -> Objects.equals(u.getDepartmentId(), department.getId())) + .collect(Collectors.toList()); + } + if (CollectionUtil.isNotEmpty(csers)) { + List cuserVOS = convert(csers, department, positions, roleMaps, roles); + user.getChildren().addAll(cuserVOS); + getChildren(cuserVOS.get(0), departments, users, positions, roleMaps, roles); + for (int index = 1, size = cuserVOS.size(); index < size; index++) { + cuserVOS.get(index).setChildren(cuserVOS.get(0).getChildren()); + } + } + }); } } @@ -540,22 +572,23 @@ public class AdminUserServiceImpl extends ServiceImpl departments, List users , List positions, List roleMaps, List roles) { - TBaseDepartment department = departments.stream() + List cdepartments = departments.stream() .filter(d -> Objects.equals(d.getDeptParentId(), user.getDepartmentId())) - .findFirst() - .orElse(null); - if (Objects.nonNull(department)) { - List csers = users.stream() - .filter(u -> Objects.equals(u.getDepartmentId(), department.getId())) - .collect(Collectors.toList()); - if (CollectionUtil.isNotEmpty(csers)) { - List cuserVOS = convert(csers, department, positions, roleMaps, roles); - user.setChildren(cuserVOS); - getChildren(cuserVOS.get(0), departments, users, positions, roleMaps, roles); - for (int index = 1, size = cuserVOS.size(); index < size; index++) { - cuserVOS.get(index).setChildren(cuserVOS.get(0).getChildren()); + .collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(cdepartments)) { + cdepartments.forEach(department -> { + List csers = users.stream() + .filter(u -> Objects.equals(u.getDepartmentId(), department.getId())) + .collect(Collectors.toList()); + if (CollectionUtil.isNotEmpty(csers)) { + List cuserVOS = convert(csers, department, positions, roleMaps, roles); + user.getChildren().addAll(cuserVOS); + getChildren(cuserVOS.get(0), departments, users, positions, roleMaps, roles); + for (int index = 1, size = cuserVOS.size(); index < size; index++) { + cuserVOS.get(index).setChildren(cuserVOS.get(0).getChildren()); + } } - } + }); } } } \ No newline at end of file