From da9044488955d6c3662f8f4a78c432bcf6f4439d Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Mon, 20 Jun 2022 10:29:23 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=907.2.3=E3=80=91=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=85=AC=E5=8F=B8=E4=B8=8B=E6=89=80=E6=9C=89?= =?UTF-8?q?=E9=83=A8=E9=97=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/api/OrganizationServiceApi.java | 9 +++++++ .../controller/HrOrganizationController.java | 12 ++++++++++ .../impl/HrOrganizationServiceImpl.java | 24 +++++++++++++++++++ 3 files changed, 45 insertions(+) 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 *