From 1958e8bad428b94aa457734f7f047fe373eafd83 Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期三, 11 十一月 2026 14:06:11 +0800
Subject: [PATCH] Merge branch 'smartor_ls_261103' into smartor_ls_merge

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java |   45 +++++++++++++++++++++++++++++++++------------
 1 files changed, 33 insertions(+), 12 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index 29b434b..f8a826b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -146,7 +146,10 @@
             deptIds.add(sysDept.getDeptId());
         }
         SysUserDept sysUserDept = new SysUserDept();
-        sysUserDept.setUserId(sysUser.getUserId());
+        // 绠$悊鍛橈細涓嶆寜鐢ㄦ埛杩囨护锛坰ys_user_dept 閲屾病鏈� admin 鐨勬暟鎹級锛岀洿鎺ュ彇鏈満鏋勫叏閮ㄧ瀹�/鐥呭尯
+        if (!isAdminUser(sysUser)) {
+            sysUserDept.setUserId(sysUser.getUserId());
+        }
         sysUserDept.setDeptType(sysUser.getSearchscope());
         sysUserDept.setOrgid(sysUser.getOrgid());
         List<SysUserDept> sysUserDeptKSs = null;
@@ -201,7 +204,7 @@
         if (sysUser.getUserType().equals("鎮h��") && StringUtils.isNotEmpty(split[3]) && !split[3].equals("null") && !sysUser.getUserType().equals(split[3].trim()))
             throw new BaseException("褰撳墠鐢ㄦ埛绫诲瀷涓庣櫥褰曠敤鎴风被鍨嬩笉涓�鑷�");
 
-        boolean isAdmin = StringUtils.isNotEmpty(split[0]) && "admin".equals(split[0]);
+        boolean isAdmin = isAdminUser(sysUser);
         IUserExtInfoService userExtInfoService = SpringUtils.getBean(IUserExtInfoService.class);
         Executor executor = SpringUtils.getBean("threadPoolTaskExecutor");
 
@@ -220,7 +223,7 @@
         // 绛夊緟鏈烘瀯淇℃伅
         Map<String, String> userOrgInfo = new HashMap<>();
         try {
-            userOrgInfo = orgInfoFuture.get(5, TimeUnit.SECONDS);
+            userOrgInfo = orgInfoFuture.get(50, TimeUnit.SECONDS);
         } catch (Exception e) {
             log.warn("鑾峰彇鐢ㄦ埛鏈烘瀯淇℃伅瓒呮椂鎴栧紓甯�", e);
         }
@@ -258,8 +261,8 @@
                     CompletableFuture<List<SysDept>> ksFuture = CompletableFuture.supplyAsync(() -> selectLeafSysDeptForAdmin(deptKS), executor);
                     CompletableFuture<List<SysDept>> bqFuture = CompletableFuture.supplyAsync(() -> selectLeafSysDeptForAdmin(deptBQ), executor);
                     try {
-                        sysUserDeptKSs = distinctByDeptCode(DtoConversionUtils.sourceToTarget(ksFuture.get(5, TimeUnit.SECONDS), SysUserDept.class));
-                        sysUserDeptBQs = distinctByDeptCode(DtoConversionUtils.sourceToTarget(bqFuture.get(5, TimeUnit.SECONDS), SysUserDept.class));
+                        sysUserDeptKSs = distinctByDeptCode(DtoConversionUtils.sourceToTarget(ksFuture.get(50, TimeUnit.SECONDS), SysUserDept.class));
+                        sysUserDeptBQs = distinctByDeptCode(DtoConversionUtils.sourceToTarget(bqFuture.get(50, TimeUnit.SECONDS), SysUserDept.class));
                     } catch (Exception e) {
                         log.warn("鑾峰彇admin绉戝/鐥呭尯淇℃伅瓒呮椂鎴栧紓甯�", e);
                     }
@@ -358,6 +361,23 @@
             log.warn("鑾峰彇婊℃剰搴﹀垎绫诲け璐ワ紝宸查檷绾т负绌虹粨鏋滐紙涓嶅奖鍝嶇櫥褰曪級銆俹rgid={}", orgid, e);
             return Collections.emptyMap();
         }
+    }
+
+    /**
+     * 鏄惁绠$悊鍛橈細璐﹀彿鍚嶄负 admin锛屾垨鐢ㄦ埛ID鍛戒腑閰嶇疆椤� isAdmin銆�
+     * <p>
+     * 绠$悊鍛樺彇绉戝/鐥呭尯鏃朵笉鎸� sys_user_dept 杩囨护鈥斺�擧IS 閲囬泦鍐欒琛ㄦ椂鏄庣‘鎺掗櫎浜� admin
+     * 锛圕ollectHISMapper 鐨� yhyksxx/yhybfxx 閮芥湁 {@code ud.user_id != 'admin'}锛夛紝
+     * 璧板叧鑱旀煡璇細寰楀埌绌哄垪琛紝琛ㄧ幇涓恒�岀櫥褰曟垚鍔熶絾鍒涘缓浠诲姟鏃堕�変笉鍒扮瀹ょ梾鍖恒�嶃��
+     */
+    private boolean isAdminUser(SysUser sysUser) {
+        if (sysUser == null) {
+            return false;
+        }
+        if ("admin".equalsIgnoreCase(sysUser.getUserName())) {
+            return true;
+        }
+        return sysUser.getUserId() != null && isAdmin != null && isAdmin.contains(sysUser.getUserId());
     }
 
     /**
@@ -1022,8 +1042,11 @@
 
     public List<SysUserDept> selectLeafSysDeptList(SysUserDept sysUserDept){
         List<SysDept> list =  sysDeptMapper.selectSysDeptListBySysUserDept(sysUserDept);
-        if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(list)){
-            list = TreeUtils.getLeafDepts(list);
+        // userId 涓虹┖ = 绠$悊鍛樺彇鏈満鏋勫叏閲忥細瑕併�屾墍鏈夌瀹ょ梾鍖恒�嶏紝涓嶈兘鍐嶆寜鍙跺瓙鑺傜偣杩囨护
+        if (sysUserDept == null || sysUserDept.getUserId() != null) {
+            if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(list)){
+                list = TreeUtils.getLeafDepts(list);
+            }
         }
         List<SysUserDept> list1 = DtoConversionUtils.sourceToTarget(list, SysUserDept.class);
         return list1;
@@ -1031,11 +1054,9 @@
 
     public List<SysDept> selectLeafSysDeptForAdmin(SysDept sysDept){
         SysUserDept sysUserDept = DtoConversionUtils.sourceToTarget(sysDept, SysUserDept.class);
-        List<SysDept> list =  sysDeptMapper.selectSysDeptListBySysUserDept(sysUserDept);
-        if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(list)){
-            list = TreeUtils.getLeafDepts(list);
-        }
-        return list;
+        // 绠$悊鍛樺垎鏀細sysUserDept 涓嶅甫 userId锛宮apper 浼氱洿鎺ユ煡 sys_dept锛堜笉鍏宠仈 sys_user_dept锛夛紝
+        // 杩斿洖鏈満鏋勫叏閮ㄧ瀹�/鐥呭尯锛涜繖閲屼笉鍐嶅仛鍙跺瓙杩囨护锛屽惁鍒欍�屾墍鏈夌瀹ょ梾鍖恒�嶄細琚爫鎺夌埗绾ч儴闂ㄣ��
+        return sysDeptMapper.selectSysDeptListBySysUserDept(sysUserDept);
     }
 
     /**

--
Gitblit v1.9.3