【8.3.3】【org】获取指定机构的指定层级编码的机构

pull/62/head
stylefeng 2025-01-26 15:36:14 +08:00
parent 79da038b11
commit ffcd70ab4b
2 changed files with 55 additions and 0 deletions

View File

@ -82,4 +82,17 @@ public interface OrganizationServiceApi {
*/
String getOrgTotalPathName(Long orgId);
/**
* id
* <p>
*
*
* @param orgId id
* @param orgLevelCode
* @return id
* @author fengshuonan
* @since 2025/1/26 14:45
*/
Long getParentOrgLevel(Long orgId, String orgLevelCode);
}

View File

@ -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<HrOrganizationMapper,
return String.join("/", orgNameList);
}
@Override
public Long getParentOrgLevel(Long orgId, String orgLevelCode) {
if (orgId == null || StrUtil.isEmpty(orgLevelCode)) {
return null;
}
// 获取当前机构的父级id集合
LambdaQueryWrapper<HrOrganization> 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<Long> parentIdList = ParentIdParseUtil.parseToPidList(orgPids);
parentIdList.remove(TreeConstants.DEFAULT_PARENT_ID);
// 获取这些机构的详细信息
List<HrOrganization> 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() {