From c667ab6f30b348155d0285a1f015d322b1ddfa3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E4=BA=AC=E9=80=9A?= <2405957150@qq.com> Date: Mon, 9 Jun 2025 23:03:53 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=BD=93=E5=89=8D=E9=83=A8=E9=97=A8?= =?UTF-8?q?=E5=87=BA=E7=8E=B0=E5=9C=A8=E6=9C=80=E9=A1=B6=E9=83=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusinessTripApprovalController.java | 102 +++++++++++++++++- 1 file changed, 98 insertions(+), 4 deletions(-) diff --git a/gather-app/src/main/java/com/ruoyi/business/controller/BusinessTripApprovalController.java b/gather-app/src/main/java/com/ruoyi/business/controller/BusinessTripApprovalController.java index b3dee76..d5431dd 100644 --- a/gather-app/src/main/java/com/ruoyi/business/controller/BusinessTripApprovalController.java +++ b/gather-app/src/main/java/com/ruoyi/business/controller/BusinessTripApprovalController.java @@ -14,7 +14,6 @@ import com.ruoyi.database.domain.ApprovalProcess; import com.ruoyi.database.domain.BaseAddressInfo; import com.ruoyi.database.domain.BusinessTripApproval; import com.ruoyi.database.domain.dto.ApprovaltBusinessDto; -import com.ruoyi.database.domain.dto.ApprovaltDto; import com.ruoyi.database.domain.gwglLog; import com.ruoyi.database.service.ApprovalProcessService; import com.ruoyi.database.service.BaseAddressInfoService; @@ -22,7 +21,6 @@ import com.ruoyi.database.service.BusinessTripApprovalService; import com.ruoyi.database.service.gwglLogService; import com.ruoyi.system.service.ISysDeptService; import com.ruoyi.system.service.ISysUserService; -import com.sun.org.apache.xpath.internal.operations.Bool; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -148,7 +146,7 @@ public class BusinessTripApprovalController extends BaseController { @GetMapping("/userList") @ApiOperation("查询用户人员列表") public AjaxResult applyList() { - List sysUsers = sysUserService.selectList(); + /*List sysUsers = sysUserService.selectList(); List sysDepts = sysDeptService.selectDeptList(new SysDept()); sysDepts = sysDepts.stream() .filter(dept -> dept.getDeptId() != 131000) // 过滤掉id为131000的部门 @@ -158,7 +156,103 @@ public class BusinessTripApprovalController extends BaseController { for (SysUser user : sysUsers) { deptUsersMap.computeIfAbsent(user.getDeptId(), k -> new ArrayList<>()).add(user); } - return AjaxResult.success(buildTree(depts, deptUsersMap)); + return AjaxResult.success(buildTree(depts, deptUsersMap));*/ + + // 获取当前用户ID + // 获取当前用户ID + Long userId = getLoginUser().getUser().getUserId(); + // 查询用户和部门 + List sysUsers = sysUserService.selectList(); + List sysDepts = sysDeptService.selectDeptList(new SysDept()); + sysDepts = sysDepts.stream() + .filter(dept -> dept.getDeptId() != 131000) // 过滤掉id为131000的部门 + .collect(Collectors.toList()); + + // 构建部门树 + List depts = sysDeptService.buildDeptTree(sysDepts); + + // 查找当前用户所在部门 + SysUser currentUser = sysUsers.stream() + .filter(user -> user.getUserId().equals(userId)) + .findFirst() + .orElse(null); + + Long currentDeptId = currentUser != null ? currentUser.getDeptId() : null; + + // 构建用户映射 + Map> deptUsersMap = new HashMap<>(); + for (SysUser user : sysUsers) { + deptUsersMap.computeIfAbsent(user.getDeptId(), k -> new ArrayList<>()).add(user); + } + + // 构建树结构 + List treeList = new ArrayList<>(); + + // 在最外层顶部添加当前部门资源(如果找到) + if (currentDeptId != null) { + SysDept currentDept = findDeptById(depts, currentDeptId); + if (currentDept != null) { + TreeSelect currentDeptNode = buildDeptNode(currentDept, deptUsersMap); + treeList.add(currentDeptNode); + } + } + + // 保持原有部门树结构不变 + treeList.addAll(buildTree(depts, deptUsersMap)); + + return AjaxResult.success(treeList); + } + + private TreeSelect buildDeptNode(SysDept dept, Map> deptUsersMap) { + TreeSelect treeSelect = new TreeSelect(); + treeSelect.setId(dept.getDeptId()); + treeSelect.setLabel(dept.getDeptName()); + + // 添加部门下的用户 + List children = new ArrayList<>(); + List users = deptUsersMap.getOrDefault(dept.getDeptId(), Collections.emptyList()); + for (SysUser user : users) { + TreeSelect userNode = new TreeSelect(); + userNode.setLabel(user.getNickName()); + userNode.setId(user.getUserId()); + userNode.setDictId(dept.getDeptId()); + userNode.setDictName(dept.getDeptName()); + children.add(userNode); + } + + // 递归添加所有子部门 + for (SysDept child : dept.getChildren()) { + children.add(buildDeptNode(child, deptUsersMap)); + } + + if (!children.isEmpty()) { + treeSelect.setChildren(children); + } + + return treeSelect; + } + private SysDept findDeptById(List depts, Long deptId) { + for (SysDept dept : depts) { + SysDept found = findDeptInTree(dept, deptId); + if (found != null) { + return found; + } + } + return null; + } + + // 辅助方法:在部门树中递归查找指定ID的部门 + private SysDept findDeptInTree(SysDept dept, Long deptId) { + if (dept.getDeptId().equals(deptId)) { + return dept; + } + for (SysDept child : dept.getChildren()) { + SysDept found = findDeptInTree(child, deptId); + if (found != null) { + return found; + } + } + return null; }