From 59d9fd33e4a5b5ebc73e771e9b3cbaf1f2248f50 Mon Sep 17 00:00:00 2001 From: Charles7c Date: Sun, 26 Mar 2023 11:46:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=83=A8=E9=97=A8=E7=9A=84=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.启用部门,其所有上级部门需要处于启用状态;禁用部门,其所有下级部门需要处于禁用状态 2.新增部门时,默认为禁用状态 --- .../system/service/impl/DeptServiceImpl.java | 54 +++++++++++++++---- 1 file changed, 44 insertions(+), 10 deletions(-) diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/DeptServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/DeptServiceImpl.java index 37a74e0e..0d2a9ba0 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/DeptServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/DeptServiceImpl.java @@ -70,7 +70,7 @@ public class DeptServiceImpl extends BaseServiceImpl children = this.listChildren(id); + long enabledChildrenCount = + children.stream().filter(d -> DisEnableStatusEnum.ENABLE.equals(d.getStatus())).count(); + CheckUtils.throwIf(DisEnableStatusEnum.DISABLE.equals(newStatus) && enabledChildrenCount > 0, + "禁用 [{}] 前,请先禁用其所有下级部门", oldName); + DeptDO oldParentDept = this.getByParentId(oldParentId); + CheckUtils.throwIf(DisEnableStatusEnum.ENABLE.equals(newStatus) + && DisEnableStatusEnum.DISABLE.equals(oldParentDept.getStatus()), "启用 [{}] 前,请先启用其所有上级部门", oldName); } // 变更上级部门 - if (ObjectUtil.notEqual(request.getParentId(), oldDept.getParentId())) { + if (ObjectUtil.notEqual(request.getParentId(), oldParentId)) { // 更新祖级列表 String newAncestors = this.getAncestors(request.getParentId()); request.setAncestors(newAncestors); @@ -147,15 +159,38 @@ public class DeptServiceImpl extends BaseServiceImpl listChildren(Long id) { + return baseMapper.lambdaQuery().apply(String.format("find_in_set(%s, `ancestors`)", id)).list(); } /** @@ -169,8 +204,7 @@ public class DeptServiceImpl extends BaseServiceImpl children = - baseMapper.lambdaQuery().apply(String.format("find_in_set(%s, `ancestors`)", id)).list(); + List children = this.listChildren(id); if (CollUtil.isEmpty(children)) { return; }