From 7b9a3eb074edc9b37950cd6457207a02192c61ce Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期一, 12 十月 2026 17:39:34 +0800
Subject: [PATCH] 【丽水】专科档案生成配置

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java |   66 +++++++++++++++++++++++----------
 1 files changed, 46 insertions(+), 20 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 797600a..694c7bd 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
@@ -4,15 +4,18 @@
 import com.ruoyi.common.constant.UserConstants;
 import com.ruoyi.common.core.domain.entity.*;
 import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.DtoConversionUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.TreeUtils;
 import com.ruoyi.common.utils.bean.BeanValidators;
 import com.ruoyi.common.utils.spring.SpringUtils;
 import com.ruoyi.system.domain.SysPost;
 import com.ruoyi.system.domain.SysUserPost;
 import com.ruoyi.system.mapper.*;
 import com.ruoyi.system.service.ISysConfigService;
+import com.ruoyi.system.service.ISysDeptService;
 import com.ruoyi.system.service.ISysUserService;
 import com.ruoyi.common.core.service.IUserExtInfoService;
 import com.ruoyi.system.mapper.SysUserDeptMapper;
@@ -44,6 +47,9 @@
 
     @Autowired
     private SysUserMapper userMapper;
+
+    @Autowired
+    private ISysDeptService sysDeptService;
 
     @Autowired
     private SysDeptMapper sysDeptMapper;
@@ -133,19 +139,20 @@
         SysUserDept sysUserDept = new SysUserDept();
         sysUserDept.setUserId(sysUser.getUserId());
         sysUserDept.setDeptType(sysUser.getSearchscope());
+        sysUserDept.setOrgid(sysUser.getOrgid());
         List<SysUserDept> sysUserDeptKSs = null;
         List<SysUserDept> sysUserDeptBQs = null;
         if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals("0")) {
             sysUserDept.setDeptType("1");
-            sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);
+            sysUserDeptKSs = selectLeafSysDeptList(sysUserDept);
             sysUserDept.setDeptType("2");
-            sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);
+            sysUserDeptBQs = selectLeafSysDeptList(sysUserDept);
         } else if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals("1")) {
             sysUserDept.setDeptType("1");
-            sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);
+            sysUserDeptKSs = selectLeafSysDeptList(sysUserDept);
         } else if (StringUtils.isNotEmpty(sysUser.getSearchscope()) && sysUser.getSearchscope().equals("2")) {
             sysUserDept.setDeptType("2");
-            sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);
+            sysUserDeptBQs = selectLeafSysDeptList(sysUserDept);
         }
 
         sysUser.setDepts(deptIds);
@@ -181,14 +188,16 @@
         String[] split = userName.split("&");
         SysUser sysUser = userMapper.selectUserByUserNameByCondition(split[0], split[1], null);
         if (Objects.isNull(sysUser)) return sysUser;
+        //杩欓噷鍙崱鐢ㄦ埛绫诲瀷涓衡�滄偅鑰呪�濈殑
+        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]);
         IUserExtInfoService userExtInfoService = SpringUtils.getBean(IUserExtInfoService.class);
         Executor executor = SpringUtils.getBean("threadPoolTaskExecutor");
 
         // === 骞惰鏌ヨ: 鐢ㄦ埛鏈烘瀯淇℃伅 + 閮ㄩ棬鍒楄〃 ===
-        CompletableFuture<Map<String, String>> orgInfoFuture = CompletableFuture.supplyAsync(() ->
-                userExtInfoService.getUserOrgInfo(sysUser.getUserId().toString(), split[1], split[2]), executor);
+        CompletableFuture<Map<String, String>> orgInfoFuture = CompletableFuture.supplyAsync(() -> userExtInfoService.getUserOrgInfo(sysUser.getUserId().toString(), split[1], split[2]), executor);
 
         CompletableFuture<List<SysDept>> deptsFuture;
         if (isAdmin) {
@@ -237,8 +246,8 @@
                     SysDept deptBQ = new SysDept();
                     deptBQ.setOrgid(split[1]);
                     deptBQ.setDeptType("2");
-                    CompletableFuture<List<SysDept>> ksFuture = CompletableFuture.supplyAsync(() -> sysDeptMapper.selectDeptList(deptKS), executor);
-                    CompletableFuture<List<SysDept>> bqFuture = CompletableFuture.supplyAsync(() -> sysDeptMapper.selectDeptList(deptBQ), executor);
+                    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));
@@ -255,8 +264,8 @@
                     queryBQ.setUserId(sysUser.getUserId());
                     queryBQ.setDeptType("2");
                     queryBQ.setOrgid(split[1]);
-                    CompletableFuture<List<SysUserDept>> ksFuture = CompletableFuture.supplyAsync(() -> sysUserDeptMapper.selectSysUserDeptList(queryKS), executor);
-                    CompletableFuture<List<SysUserDept>> bqFuture = CompletableFuture.supplyAsync(() -> sysUserDeptMapper.selectSysUserDeptList(queryBQ), executor);
+                    CompletableFuture<List<SysUserDept>> ksFuture = CompletableFuture.supplyAsync(() -> selectLeafSysDeptList(queryKS), executor);
+                    CompletableFuture<List<SysUserDept>> bqFuture = CompletableFuture.supplyAsync(() -> selectLeafSysDeptList(queryBQ), executor);
                     try {
                         sysUserDeptKSs = ksFuture.get(5, TimeUnit.SECONDS);
                         sysUserDeptBQs = bqFuture.get(5, TimeUnit.SECONDS);
@@ -269,13 +278,13 @@
                 queryKS.setUserId(sysUser.getUserId());
                 queryKS.setDeptType("1");
                 queryKS.setOrgid(split[1]);
-                sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(queryKS);
+                sysUserDeptKSs = selectLeafSysDeptList(queryKS);
             } else if ("2".equals(sysUser.getSearchscope())) {
                 SysUserDept queryBQ = new SysUserDept();
                 queryBQ.setUserId(sysUser.getUserId());
                 queryBQ.setDeptType("2");
                 queryBQ.setOrgid(split[1]);
-                sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(queryBQ);
+                sysUserDeptBQs = selectLeafSysDeptList(queryBQ);
             }
         }
 
@@ -340,10 +349,7 @@
 
         //鑾峰彇褰撳墠鐧婚檰浜虹殑鏈烘瀯鍜岄櫌锟�?
         IUserExtInfoService userExtInfoService2 = SpringUtils.getBean(IUserExtInfoService.class);
-        Map<String, String> userOrgInfo2 = userExtInfoService2.getUserOrgInfo(
-                sysUser.getUserId().toString(),
-                split[1],
-                split[3]);
+        Map<String, String> userOrgInfo2 = userExtInfoService2.getUserOrgInfo(sysUser.getUserId().toString(), split[1], split[3]);
         if (!userOrgInfo2.isEmpty()) {
             sysUser.setOrgid(userOrgInfo2.get("orgid"));
             sysUser.setCampusid(userOrgInfo2.get("campusid"));
@@ -374,20 +380,20 @@
                 sysUserDept.setUserId(null);
             }
             sysUserDept.setDeptType("1");
-            sysUserDeptKSs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);
+            sysUserDeptKSs = selectLeafSysDeptList(sysUserDept);
             sysUserDept.setDeptType("2");
-            sysUserDeptBQs = sysUserDeptMapper.selectSysUserDeptList(sysUserDept);
+            sysUserDeptBQs = selectLeafSysDeptList(sysUserDept);
             //濡傛灉鏄痑dmin锛岄渶瑕佸sysUserDeptBQs锛宻ysUserDeptBQs鍘婚噸
             if (StringUtils.isNotEmpty(split[0]) && split[0].equals("admin")) {
                 //濡傛灉鏄痑dmin锛屽彧鑳藉幓sys_dept鍘诲彇鏁版嵁
                 SysDept dept = new SysDept();
                 dept.setOrgid(split[1]);
                 dept.setDeptType("1");
-                sysDepts = sysDeptMapper.selectDeptList(dept);
+                sysDepts = selectLeafSysDeptForAdmin(dept);
                 sysUserDeptKSs = DtoConversionUtils.sourceToTarget(sysDepts, SysUserDept.class);
 
                 dept.setDeptType("2");
-                sysDepts = sysDeptMapper.selectDeptList(dept);
+                sysDepts = selectLeafSysDeptForAdmin(dept);
                 sysUserDeptBQs = DtoConversionUtils.sourceToTarget(sysDepts, SysUserDept.class);
 
                 List<SysUserDept> distinctUserDepts = new ArrayList<>();
@@ -972,4 +978,24 @@
         }
         return successMsg.toString();
     }
+
+    public List<SysUserDept> selectLeafSysDeptList(SysUserDept sysUserDept){
+        List<SysDept> list =  sysDeptMapper.selectSysDeptListBySysUserDept(sysUserDept);
+        if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(list)){
+            List<SysDept> tree = TreeUtils.buildDeptTree(list);
+            list = TreeUtils.getLeafDepts(tree);
+        }
+        List<SysUserDept> list1 = DtoConversionUtils.sourceToTarget(list, SysUserDept.class);
+        return list1;
+    }
+
+    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<SysDept> tree = TreeUtils.buildDeptTree(list);
+            list = TreeUtils.getLeafDepts(tree);
+        }
+        return list;
+    }
 }

--
Gitblit v1.9.3