diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/OrganizationServiceApi.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/OrganizationServiceApi.java index 04fdd090d..6733a43c5 100644 --- a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/OrganizationServiceApi.java +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/OrganizationServiceApi.java @@ -62,4 +62,13 @@ public interface OrganizationServiceApi { * @date 2022/6/8 14:40 */ List getOrgTreeList(HrOrganizationRequest hrOrganizationRequest); + + /** + * 获取某个公司下,所有部门树的集合 + * + * @author fengshuonan + * @date 2022/6/16 18:26 + */ + List getDeptOrgTree(Long orgId); + } diff --git a/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/controller/HrOrganizationController.java b/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/controller/HrOrganizationController.java index dd8ea4319..009f0fc6b 100644 --- a/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/controller/HrOrganizationController.java +++ b/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/controller/HrOrganizationController.java @@ -213,4 +213,16 @@ public class HrOrganizationController { return new SuccessResponseData<>(list); } + /** + * 获取某个公司下部门的机构树 + * + * @author fengshuonan + * @date 2021/1/9 18:37 + */ + @GetResource(name = "获取某个公司下部门的机构树", path = "/hrOrganization/getDeptOrgTree") + public ResponseData> getDeptOrgTree(@Validated(HrOrganizationRequest.detail.class) HrOrganizationRequest hrOrganizationRequest) { + List list = hrOrganizationService.getDeptOrgTree(hrOrganizationRequest.getOrgId()); + return new SuccessResponseData<>(list); + } + } diff --git a/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/service/impl/HrOrganizationServiceImpl.java b/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/service/impl/HrOrganizationServiceImpl.java index 06410659d..834d4ca87 100644 --- a/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/service/impl/HrOrganizationServiceImpl.java +++ b/kernel-s-system/system-business-organization/src/main/java/cn/stylefeng/roses/kernel/system/modular/organization/service/impl/HrOrganizationServiceImpl.java @@ -33,6 +33,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.stylefeng.roses.kernel.auth.api.context.LoginContext; import cn.stylefeng.roses.kernel.auth.api.enums.DataScopeTypeEnum; +import cn.stylefeng.roses.kernel.db.api.DbOperatorApi; import cn.stylefeng.roses.kernel.db.api.context.DbOperatorContext; import cn.stylefeng.roses.kernel.db.api.factory.PageFactory; import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory; @@ -94,6 +95,9 @@ public class HrOrganizationServiceImpl extends ServiceImpl().doTreeBuild(treeNodeList); } + @Override + public List getDeptOrgTree(Long orgId) { + + // 获取该公司下所有的子部门id集合 + Set deptIds = dbOperatorApi.findSubListByParentId("hr_organization", "org_pids", "org_id", orgId); + deptIds.add(orgId); + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(HrOrganization::getOrgId, deptIds); + List hrOrganizationList = this.list(wrapper); + + // 组装部门的树形节点 + List treeNodeList = CollectionUtil.newArrayList(); + for (HrOrganization hrOrganization : hrOrganizationList) { + OrganizationTreeNode treeNode = OrganizationFactory.parseOrganizationTreeNode(hrOrganization); + treeNodeList.add(treeNode); + } + return new DefaultTreeBuildFactory().doTreeBuild(treeNodeList); + } + /** * 创建组织架构的通用条件查询wrapper *