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)); } }