From ffcd70ab4bdf13d0cfd822830c7553c8ccec4592 Mon Sep 17 00:00:00 2001 From: stylefeng Date: Sun, 26 Jan 2025 15:36:14 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=908.3.3=E3=80=91=E3=80=90org=E3=80=91?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=8C=87=E5=AE=9A=E6=9C=BA=E6=9E=84=E7=9A=84?= =?UTF-8?q?=E6=8C=87=E5=AE=9A=E5=B1=82=E7=BA=A7=E7=BC=96=E7=A0=81=E7=9A=84?= =?UTF-8?q?=E6=9C=BA=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys/api/OrganizationServiceApi.java | 13 ++++++ .../impl/HrOrganizationServiceImpl.java | 42 +++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/OrganizationServiceApi.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/OrganizationServiceApi.java index fd1c19ab1..b3c8fd099 100644 --- a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/OrganizationServiceApi.java +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/OrganizationServiceApi.java @@ -82,4 +82,17 @@ public interface OrganizationServiceApi { */ String getOrgTotalPathName(Long orgId); + /** + * 获取指定机构的指定层级的机构id,从下往上直到找到指定的机构层级 + *

+ * 如果找不到指定层级,返回为空 + * + * @param orgId 指定机构id + * @param orgLevelCode 机构层级编码 + * @return 指定层级的机构的id + * @author fengshuonan + * @since 2025/1/26 14:45 + */ + Long getParentOrgLevel(Long orgId, String orgLevelCode); + } diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/service/impl/HrOrganizationServiceImpl.java b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/service/impl/HrOrganizationServiceImpl.java index d006536cb..9ec5d2d9a 100644 --- a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/service/impl/HrOrganizationServiceImpl.java +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/service/impl/HrOrganizationServiceImpl.java @@ -1,6 +1,7 @@ package cn.stylefeng.roses.kernel.sys.modular.org.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ObjectUtil; @@ -463,6 +464,47 @@ public class HrOrganizationServiceImpl extends ServiceImpl hrOrganizationLambdaQueryWrapper = new LambdaQueryWrapper<>(); + hrOrganizationLambdaQueryWrapper.eq(HrOrganization::getOrgId, orgId); + hrOrganizationLambdaQueryWrapper.select(HrOrganization::getOrgPids); + HrOrganization thisOrg = this.getOne(hrOrganizationLambdaQueryWrapper, false); + if (thisOrg == null) { + return null; + } + String orgPids = thisOrg.getOrgPids(); + if (ObjectUtil.isEmpty(orgPids)) { + return null; + } + + // 获取父级id集合,移除掉为-1的id + List parentIdList = ParentIdParseUtil.parseToPidList(orgPids); + parentIdList.remove(TreeConstants.DEFAULT_PARENT_ID); + + // 获取这些机构的详细信息 + List parentOrgList = this.listByIds(parentIdList); + parentOrgList = CollectionUtil.reverse(parentOrgList); + + // 开始遍历机构,找到指定参数层级的机构 + for (HrOrganization parentOrg : parentOrgList) { + // 获取到当前机构的层级编码 + String orgLevelCodeTemp = parentOrg.getLevelCode(); + + // 如果层级编码和参数的层级编码相同,则返回当前机构的层级编码 + if (orgLevelCodeTemp.equals(orgLevelCode)) { + return parentOrg.getOrgId(); + } + } + + return null; + } + @Override public HomeCompanyInfo orgStatInfo() {