From d7e3192804fca756d881af360ffd5eea157ef9ad Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期三, 21 十月 2026 15:45:18 +0800
Subject: [PATCH] 【市一】电话挂断服务

---
 ruoyi-common/src/main/java/com/ruoyi/common/utils/TreeUtils.java |   32 ++++++++++++++++++++++++++++++--
 1 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/TreeUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/TreeUtils.java
index 873610d..aac16ca 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/TreeUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/TreeUtils.java
@@ -76,13 +76,41 @@
      * 鏍规嵁 SysDept.parentId 鏋勯�犻儴闂ㄦ爲
      */
     public static List<SysDept> buildDeptTree(List<SysDept> depts) {
+        // 鎸� deptId 鍘婚噸锛岄槻姝� sys_user_dept 涓�瀵瑰鍏宠仈浜х敓閲嶅鐨勭埗鑺傜偣锛屽鑷存瀯寤洪儴闂ㄦ爲鏃跺嚭鐜伴棶棰�
+        depts = distinctByDeptId(depts);
         return buildTree(depts, SysDept::getDeptId, SysDept::getParentId, SysDept::setChildren);
     }
 
     /**
-     * 涓�娆℃�ц幏鍙栨墍鏈夐儴闂ㄥ彾瀛愯妭鐐�
+     * 浠庢墎骞抽儴闂ㄥ垪琛ㄤ竴娆℃�ц幏鍙栨墍鏈夊彾瀛愰儴闂細鍗炽�宒eptId 涓嶅嚭鐜板湪浠讳綍鑺傜偣鐨� parentId 涓�嶇殑鑺傜偣銆�
+     * 鍏ュ弬搴斾负鎵佸钩鍒楄〃锛堜笉鏄� buildDeptTree 鐨勮繑鍥炲�硷級锛屾棤闇�鍏堝缓鏍戙��
+     * 浼氬厛鎸� deptId 鍘婚噸锛岄伩鍏� join 浜х敓鐨勯噸澶嶉儴闂ㄥ彉鎴愰噸澶嶅彾瀛愩��
      */
     public static List<SysDept> getLeafDepts(List<SysDept> depts) {
-        return getLeafNodes(depts, SysDept::getHisDeptId, SysDept::getHisParentId);
+        return getLeafNodes(distinctByDeptId(depts), SysDept::getDeptId, SysDept::getParentId);
+    }
+
+    /**
+     * 鎸� deptId 瀵归儴闂ㄥ垪琛ㄥ幓閲嶏紝淇濈暀棣栨鍑虹幇鐨勮妭鐐广��
+     * 鏌ヨ缁撴灉閫氳繃 dept_code 鍏宠仈 sys_user_dept锛屽悓涓�閮ㄩ棬鍙兘鍑虹幇澶氭潯璁板綍锛堥噸澶嶇殑鐖惰妭鐐癸級锛�
+     * 鏋勫缓閮ㄩ棬鏍戝墠闇�鍘婚噸锛岄伩鍏嶉噸澶嶈妭鐐瑰鑷存爲缁撴瀯寮傚父銆�
+     *
+     * @param list 閮ㄩ棬鍒楄〃锛屽厑璁镐负 null
+     * @return 鍘婚噸鍚庣殑閮ㄩ棬鍒楄〃锛涘叆鍙備负 null 鎴栫┖鏃跺師鏍疯繑鍥�
+     */
+    private static List<SysDept> distinctByDeptId(List<SysDept> list) {
+        if (list == null || list.isEmpty()) {
+            return list;
+        }
+        Set<Long> deptIdSet = new HashSet<>();
+        List<SysDept> distinctList = new ArrayList<>(list.size());
+        for (SysDept dept : list) {
+            Long deptId = dept.getDeptId();
+            // deptId 涓虹┖鏃朵繚鐣欙紝閬垮厤璇悎骞朵笉鍚岄儴闂�
+            if (deptId == null || deptIdSet.add(deptId)) {
+                distinctList.add(dept);
+            }
+        }
+        return distinctList;
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3