From 4e5d913d8931d2ce6b8099416bc851fbfbc232bc Mon Sep 17 00:00:00 2001 From: stylefeng Date: Sat, 11 Jan 2025 00:36:03 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=908.3.3=E3=80=91=E3=80=90org=E3=80=91?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=8E=B7=E5=8F=96=E7=BB=84=E7=BB=87=E6=9C=BA?= =?UTF-8?q?=E6=9E=84=E5=85=A8=E8=B7=AF=E5=BE=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys/api/OrganizationServiceApi.java | 8 ++++ .../format/OrgFullPathNameFormatProcess.java | 37 +++++++++++++++++++ kernel-s-system/system-business-hr/pom.xml | 7 ++++ .../impl/HrOrganizationServiceImpl.java | 34 +++++++++++++++++ 4 files changed, 86 insertions(+) create mode 100644 kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/format/OrgFullPathNameFormatProcess.java 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 c3bfc3414..fd1c19ab1 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 @@ -74,4 +74,12 @@ public interface OrganizationServiceApi { */ List getOrgNameList(Collection orgIdList); + /** + * 获取组织机构的全路径名称,例如:北京公司/信息部门 + * + * @author fengshuonan + * @since 2025/1/10 23:55 + */ + String getOrgTotalPathName(Long orgId); + } diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/format/OrgFullPathNameFormatProcess.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/format/OrgFullPathNameFormatProcess.java new file mode 100644 index 000000000..8e009a404 --- /dev/null +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/format/OrgFullPathNameFormatProcess.java @@ -0,0 +1,37 @@ +package cn.stylefeng.roses.kernel.sys.api.format; + +import cn.hutool.core.convert.Convert; +import cn.hutool.extra.spring.SpringUtil; +import cn.stylefeng.roses.kernel.rule.format.BaseSimpleFieldFormatProcess; +import cn.stylefeng.roses.kernel.sys.api.OrganizationServiceApi; + +/** + * 快速获取组织机构的全路径组织机构名称 + *

+ * 通过缓存加快名称获取 + * + * @author fengshuonan + * @since 2025/1/11 0:11 + */ +public class OrgFullPathNameFormatProcess extends BaseSimpleFieldFormatProcess { + + @Override + public Class getItemClass() { + return Long.class; + } + + @Override + public Object simpleItemFormat(Object businessId) { + + if (businessId == null) { + return null; + } + + Long orgId = Convert.toLong(businessId); + + OrganizationServiceApi organizationServiceApi = SpringUtil.getBean(OrganizationServiceApi.class); + + return organizationServiceApi.getOrgTotalPathName(orgId); + } + +} diff --git a/kernel-s-system/system-business-hr/pom.xml b/kernel-s-system/system-business-hr/pom.xml index 6ff5d96e1..ef749cbb1 100644 --- a/kernel-s-system/system-business-hr/pom.xml +++ b/kernel-s-system/system-business-hr/pom.xml @@ -17,6 +17,13 @@ + + + com.javaguns.roses + kernel-d-tree + ${roses.version} + + com.javaguns.roses 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 aad6d28f9..04b85f62f 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 @@ -21,6 +21,7 @@ import cn.stylefeng.roses.kernel.rule.constants.TreeConstants; import cn.stylefeng.roses.kernel.rule.enums.DbTypeEnum; import cn.stylefeng.roses.kernel.rule.enums.StatusEnum; import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException; +import cn.stylefeng.roses.kernel.rule.pidset.ParentIdParseUtil; import cn.stylefeng.roses.kernel.rule.pojo.dict.SimpleDict; import cn.stylefeng.roses.kernel.rule.tree.factory.DefaultTreeBuildFactory; import cn.stylefeng.roses.kernel.sys.api.callback.RemoveOrgCallbackApi; @@ -416,6 +417,39 @@ public class HrOrganizationServiceImpl extends ServiceImpl orgIdList = ParentIdParseUtil.parseToPidList(orgInfo.getOrgPids()); + + // 去掉-1根节点 + orgIdList.remove(TreeConstants.DEFAULT_PARENT_ID); + + // 用于存储组织名称的列表 + List orgNameList = new ArrayList<>(); + + // 遍历每个父节点ID,获取组织名称 + for (Long parentId : orgIdList) { + HrOrganizationDTO parentOrgInfo = this.getOrgInfo(parentId); + if (parentOrgInfo != null && parentOrgInfo.getOrgName() != null) { + orgNameList.add(parentOrgInfo.getOrgName()); + } + } + + // 添加当前组织的名称 + orgNameList.add(orgInfo.getOrgName()); + + // 用斜杠连接所有名称 + return String.join("/", orgNameList); + } + @Override public HomeCompanyInfo orgStatInfo() {