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 37a74e0ebcea8a5c0c631e667d24020bb91941f5..0d2a9ba04f6abd64ba29501e05b460df6eb79d22 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; }