diff --git a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/factory/OrganizationFactory.java b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/factory/OrganizationFactory.java index 9777f1706..cb0814b12 100644 --- a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/factory/OrganizationFactory.java +++ b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/factory/OrganizationFactory.java @@ -1,7 +1,12 @@ package cn.stylefeng.roses.kernel.sys.modular.org.factory; import cn.hutool.core.convert.Convert; +import cn.hutool.extra.spring.SpringUtil; +import cn.stylefeng.roses.kernel.rule.constants.SymbolConstant; +import cn.stylefeng.roses.kernel.rule.constants.TreeConstants; import cn.stylefeng.roses.kernel.sys.modular.org.entity.HrOrganization; +import cn.stylefeng.roses.kernel.sys.modular.org.pojo.request.HrOrganizationRequest; +import cn.stylefeng.roses.kernel.sys.modular.org.service.HrOrganizationService; import java.util.HashSet; import java.util.List; @@ -44,4 +49,36 @@ public class OrganizationFactory { return orgIdList; } + /** + * 填充该节点的pIds + *
+ * 如果pid是顶级节点,pids就是 [-1], + *
+ * 如果pid不是顶级节点,pids就是父节点的pids + [pid] + ,
+ *
+ * @author fengshuonan
+ * @since 2020/11/5 13:45
+ */
+ public static void fillParentIds(HrOrganization hrOrganization) {
+
+ // 如果父级是-1,则代表顶级节点
+ if (TreeConstants.DEFAULT_PARENT_ID.equals(hrOrganization.getOrgParentId())) {
+ hrOrganization.setOrgPids(SymbolConstant.LEFT_SQUARE_BRACKETS + TreeConstants.DEFAULT_PARENT_ID + SymbolConstant.RIGHT_SQUARE_BRACKETS + SymbolConstant.COMMA);
+ }
+
+ // 如果不是顶级节点,则查询到父级的id集合,再拼接上级id即可
+ else {
+
+ HrOrganizationService hrOrganizationService = SpringUtil.getBean(HrOrganizationService.class);
+
+ // 获取父组织机构
+ HrOrganizationRequest hrOrganizationRequest = new HrOrganizationRequest();
+ hrOrganizationRequest.setOrgId(hrOrganization.getOrgParentId());
+ HrOrganization parentOrganization = hrOrganizationService.detail(hrOrganizationRequest);
+
+ // 设置本节点的父ids为 (上一个节点的pids + (上级节点的id) )
+ hrOrganization.setOrgPids(parentOrganization.getOrgPids() + SymbolConstant.LEFT_SQUARE_BRACKETS + parentOrganization.getOrgId() + SymbolConstant.RIGHT_SQUARE_BRACKETS + SymbolConstant.COMMA);
+ }
+ }
+
}
diff --git a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/service/impl/HrOrganizationServiceImpl.java b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/service/impl/HrOrganizationServiceImpl.java
index 6552624a1..e73392963 100644
--- a/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/service/impl/HrOrganizationServiceImpl.java
+++ b/kernel-s-sys/sys-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/org/service/impl/HrOrganizationServiceImpl.java
@@ -36,6 +36,10 @@ public class HrOrganizationServiceImpl extends ServiceImpl