From 81d10ba5d19945fa1170d45585a5d53a5f67066b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Fri, 16 Jan 2026 15:57:44 +0800 Subject: [PATCH] =?UTF-8?q?refactor(department):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E9=83=A8=E9=97=A8=E5=B1=82=E7=BA=A7=E7=BB=91=E5=AE=9A=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E5=B9=B6=E6=B7=BB=E5=8A=A0=E9=83=A8=E9=97=A8=E5=B1=9E?= =?UTF-8?q?=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改bindParent方法参数名以提高代码可读性 - 在bindParent方法中添加重复检查避免循环引用 - 创建treeDepartments副本确保数据完整性 - 调整TBaseDepartment类中导入语句顺序 - 添加hasChild和hasManager两个新字段用于标识部门状态 --- .../repository/entity/TBaseDepartment.java | 15 +++++++++++++-- .../service/impl/AdminUserServiceImpl.java | 10 ++++++---- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/TBaseDepartment.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/TBaseDepartment.java index 781408aa..5de98169 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/TBaseDepartment.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/TBaseDepartment.java @@ -3,12 +3,13 @@ package com.nflg.mobilebroken.repository.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.time.LocalDateTime; import lombok.Getter; import lombok.Setter; import lombok.experimental.Accessors; +import java.io.Serializable; +import java.time.LocalDateTime; + /** *

* 部门表 @@ -85,4 +86,14 @@ public class TBaseDepartment implements Serializable { * 更新时间 */ private LocalDateTime dataModifyTime; + + /** + * 是否有下级 + */ + private boolean hasChild; + + /** + * 是否已设置管理者 + */ + private boolean hasManager; } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminUserServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminUserServiceImpl.java index 28d2412a..ab354682 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminUserServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminUserServiceImpl.java @@ -465,7 +465,8 @@ public class AdminUserServiceImpl extends ServiceImpl searchDepartments = departments.stream() .filter(d -> searchUsers.stream().map(AdminUser::getDepartmentId).anyMatch(dt -> Objects.equals(d.getId(), dt))) .collect(Collectors.toSet()); - searchDepartments.forEach(d -> bindParent(d, searchDepartments, departments)); + Set treeDepartments = new HashSet<>(searchDepartments); + searchDepartments.forEach(d -> bindParent(d, treeDepartments, departments)); List rootDepartments = searchDepartments.stream() .filter(d -> d.getDeptParentId() == 0) .collect(Collectors.toList()); @@ -506,13 +507,14 @@ public class AdminUserServiceImpl extends ServiceImpl vos, List departments) { + private void bindParent(TBaseDepartment department, Set treeDepartments, List departments) { Set parents = departments.stream() .filter(d -> Objects.equals(d.getId(), department.getDeptParentId())) .collect(Collectors.toSet()); + parents.removeIf(p -> treeDepartments.stream().anyMatch(v -> Objects.equals(p.getId(), v.getId()))); if (CollectionUtil.isNotEmpty(parents)) { - vos.addAll(parents); - parents.forEach(p -> bindParent(p, vos, departments)); + treeDepartments.addAll(parents); + parents.forEach(p -> bindParent(p, treeDepartments, departments)); } }