From fe33646ee6e2d1e57f2b51812e94983a0e9efb04 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期日, 14 十二月 2025 16:51:28 +0800
Subject: [PATCH] feat: 修复统计

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java |   98 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 98 insertions(+), 0 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
index fa50273..84af926 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
@@ -31,6 +31,7 @@
 import com.ruoyi.system.service.ISysPostService;
 import com.ruoyi.system.service.ISysRoleService;
 import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.system.domain.vo.BranchUserQueryVO;
 
 /**
  * 鐢ㄦ埛淇℃伅
@@ -252,4 +253,101 @@
     {
         return success(deptService.selectDeptTreeList(dept));
     }
+    
+    /**
+     * 鑾峰彇褰撳墠鐢ㄦ埛绠$悊鐨勫垎鍏徃涓嬬殑鎵�鏈夌敤鎴凤紙灏忕▼搴忕涓撶敤锛�
+     * 鏍规嵁褰撳墠鐢ㄦ埛鐨刼aOrderClass瀛楁鍖归厤鍒嗗叕鍙革紝杩斿洖杩欎簺鍒嗗叕鍙稿強鍏舵墍鏈夊瓙閮ㄩ棬鐨勭敤鎴�
+     */
+    @GetMapping("/branch/users")
+    public AjaxResult listBranchUsers()
+    {
+        // 鑾峰彇褰撳墠鐢ㄦ埛
+        SysUser currentUser = userService.selectUserById(getUserId());
+        if (currentUser == null) {
+            return error("鐢ㄦ埛涓嶅瓨鍦�");
+        }
+        
+        // 鑾峰彇褰撳墠鐢ㄦ埛绠$悊鐨勫垎鍏徃ID鍒楄〃
+        String oaOrderClass = currentUser.getOaOrderClass();
+        List<Long> branchDeptIds = new java.util.ArrayList<>();
+        
+        if (StringUtils.isNotEmpty(oaOrderClass)) {
+            // 鏍规嵁oaOrderClass鏌ヨ鍖归厤鐨勫垎鍏徃
+            String[] orderCodes = oaOrderClass.split(",");
+            SysDept queryDept = new SysDept();
+            queryDept.setParentId(100L); // 鍙煡璇㈠垎鍏徃
+            List<SysDept> allBranches = deptService.selectDeptList(queryDept);
+            
+            for (SysDept branch : allBranches) {
+                for (String code : orderCodes) {
+                    // 鍖归厤serviceOrderClass鎴杁ispatchOrderClass
+                    if ((StringUtils.isNotEmpty(branch.getServiceOrderClass()) && branch.getServiceOrderClass().equals(code.trim()))
+                        || (StringUtils.isNotEmpty(branch.getDispatchOrderClass()) && branch.getDispatchOrderClass().equals(code.trim()))) {
+                        branchDeptIds.add(branch.getDeptId());
+                        break;
+                    }
+                }
+            }
+        }
+        
+        // 濡傛灉娌℃湁鎵惧埌鍖归厤鐨勫垎鍏徃锛屼娇鐢ㄥ綋鍓嶇敤鎴锋墍鍦ㄩ儴闂�
+        if (branchDeptIds.isEmpty()) {
+            Long userDeptId = currentUser.getDeptId();
+            if (userDeptId != null) {
+                // 鏌ユ壘鐢ㄦ埛鎵�鍦ㄩ儴闂ㄧ殑鐖剁骇鍒嗗叕鍙�
+                SysDept userDept = deptService.selectDeptById(userDeptId);
+                if (userDept != null) {
+                    // 鍚戜笂鏌ユ壘鐩村埌鎵惧埌parent_id=100鐨勫垎鍏徃
+                    while (userDept != null && userDept.getParentId() != 100L) {
+                        userDept = deptService.selectDeptById(userDept.getParentId());
+                    }
+                    if (userDept != null && userDept.getParentId() == 100L) {
+                        branchDeptIds.add(userDept.getDeptId());
+                    }
+                }
+            }
+        }
+        
+        // 濡傛灉杩樻槸娌℃湁鎵惧埌锛岃繑鍥炵┖鍒楄〃
+        if (branchDeptIds.isEmpty()) {
+            return success(new java.util.ArrayList<>());
+        }
+        
+        // 鏌ヨ杩欎簺鍒嗗叕鍙稿強鍏舵墍鏈夊瓙閮ㄩ棬鐨勭敤鎴�
+        List<SysUser> users = userService.selectUsersByBranchDeptIds(branchDeptIds);
+        
+        return success(users);
+    }
+    
+    /**
+     * 鏍规嵁鍒嗗叕鍙窱D鍒楄〃鑾峰彇鐢ㄦ埛(POST鏂瑰紡)
+     */
+    @PostMapping("/branch/users")
+    public AjaxResult listUsersByBranchDepts(@RequestBody BranchUserQueryVO queryVO)
+    {
+        List<Long> branchDeptIds = queryVO.getBranchDeptIds();
+        
+        if (branchDeptIds == null || branchDeptIds.isEmpty()) {
+            return success(new java.util.ArrayList<>());
+        }
+        
+        // 鏌ヨ杩欎簺鍒嗗叕鍙稿強鍏舵墍鏈夊瓙閮ㄩ棬鐨勭敤鎴�
+        List<SysUser> users = userService.selectUsersByBranchDeptIds(branchDeptIds);
+        
+        return success(users);
+    }
+    
+    /**
+     * 鏍规嵁oaUserId鏌ヨ鐢ㄦ埛淇℃伅
+     */
+    @GetMapping("/oa-user/{oaUserId}")
+    public AjaxResult getUserByOaUserId(@PathVariable Integer oaUserId)
+    {
+        SysUser user = userService.selectUserByOaUserId(oaUserId);
+        if (user != null) {
+            return success(user);
+        } else {
+            return error("鏈壘鍒板搴旂殑鐢ㄦ埛淇℃伅");
+        }
+    }
 }

--
Gitblit v1.9.1