diff --git a/klp-admin/src/main/java/com/klp/web/controller/system/SysDeptController.java b/klp-admin/src/main/java/com/klp/web/controller/system/SysDeptController.java index 81193513..3375f416 100644 --- a/klp-admin/src/main/java/com/klp/web/controller/system/SysDeptController.java +++ b/klp-admin/src/main/java/com/klp/web/controller/system/SysDeptController.java @@ -116,4 +116,16 @@ public class SysDeptController extends BaseController { deptService.checkDeptDataScope(deptId); return toAjax(deptService.deleteDeptById(deptId)); } + + /** + * 查询部门及其所有子部门 + * + * @param deptId 部门ID + */ + @SaCheckPermission("system:dept:list") + @GetMapping("/list/{deptId}") + public R> listWithChildren(@PathVariable Long deptId) { + List depts = deptService.selectChildDeptsById(deptId); + return R.ok(depts); + } } diff --git a/klp-system/src/main/java/com/klp/system/service/ISysDeptService.java b/klp-system/src/main/java/com/klp/system/service/ISysDeptService.java index 8c5732cb..5b3cea5a 100644 --- a/klp-system/src/main/java/com/klp/system/service/ISysDeptService.java +++ b/klp-system/src/main/java/com/klp/system/service/ISysDeptService.java @@ -113,4 +113,12 @@ public interface ISysDeptService { * @return 结果 */ int deleteDeptById(Long deptId); + + /** + * 根据部门ID查询所有子部门(递归) + * + * @param deptId 部门ID + * @return 所有子部门列表 + */ + List selectChildDeptsById(Long deptId); } diff --git a/klp-system/src/main/java/com/klp/system/service/impl/SysDeptServiceImpl.java b/klp-system/src/main/java/com/klp/system/service/impl/SysDeptServiceImpl.java index 84026b55..d74d682b 100644 --- a/klp-system/src/main/java/com/klp/system/service/impl/SysDeptServiceImpl.java +++ b/klp-system/src/main/java/com/klp/system/service/impl/SysDeptServiceImpl.java @@ -270,6 +270,16 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService { .in(SysDept::getDeptId, Arrays.asList(deptIds))); } + @Override + public List selectChildDeptsById(Long deptId) { + // 创建查询条件,查找祖先列表中包含指定部门ID的所有部门 + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(SysDept::getDelFlag, "0") + .apply(DataBaseHelper.findInSet(deptId, "ancestors")); + + return baseMapper.selectList(lqw); + } + /** * 修改子元素关系 *