【7.2.5】【org】简化获取上级组织机构

pull/37/head
fengshuonan 2022-10-01 18:28:23 +08:00
parent 293a2a4fdf
commit e5431884c9
6 changed files with 85 additions and 42 deletions

View File

@ -24,6 +24,7 @@
*/
package cn.stylefeng.roses.kernel.system.api;
import cn.stylefeng.roses.kernel.system.api.enums.DetectModeEnum;
import cn.stylefeng.roses.kernel.system.api.pojo.organization.HrOrganizationDTO;
import cn.stylefeng.roses.kernel.system.api.pojo.organization.HrOrganizationRequest;
import cn.stylefeng.roses.kernel.system.api.pojo.organization.OrganizationTreeNode;
@ -74,27 +75,16 @@ public interface OrganizationServiceApi {
/**
*
* <p>
*
*
*
*
* @param orgId id
* @param parentLevelNum 00
* @param detectModeEnum
* @return id
* @author fengshuonan
* @date 2022/9/18 15:02
*/
Long getParentLevelOrgId(Long orgId, Integer parentLevelNum);
/**
*
* <p>
*
*
* @param orgId id
* @param highestLevelNum 00
* @return id
* @author fengshuonan
* @date 2022/10/1 11:37
*/
Long getHighestLevelOrgId(Long orgId, Integer highestLevelNum);
Long getParentLevelOrgId(Long orgId, Integer parentLevelNum, DetectModeEnum detectModeEnum);
}

View File

@ -0,0 +1,63 @@
package cn.stylefeng.roses.kernel.system.api.enums;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
import cn.stylefeng.roses.kernel.rule.base.ReadableEnum;
import lombok.Getter;
/**
*
*
* @author fengshuonan
* @date 2022/10/1 18:02
*/
@Getter
public enum DetectModeEnum implements ReadableEnum<DetectModeEnum> {
/**
*
* <p>
*
*/
TO_TOP(1, "自下而上"),
/**
*
* <p>
*
*/
TO_DOWN(2, "自上而下");
private final Integer code;
private final String name;
DetectModeEnum(Integer code, String name) {
this.code = code;
this.name = name;
}
@Override
public Object getKey() {
return code;
}
@Override
public Object getName() {
return name;
}
@Override
public DetectModeEnum parseToEnum(String originValue) {
if (ObjectUtil.isEmpty(originValue)) {
return null;
}
for (DetectModeEnum value : DetectModeEnum.values()) {
if (value.code.equals(Convert.toInt(originValue))) {
return value;
}
}
return null;
}
}

View File

@ -1,6 +1,5 @@
package cn.stylefeng.roses.kernel.system.modular.organization.controller;
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
import cn.stylefeng.roses.kernel.rule.enums.ResBizTypeEnum;
import cn.stylefeng.roses.kernel.rule.pojo.dict.SimpleDict;
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
@ -66,19 +65,6 @@ public class HrOrgApproverController {
return new SuccessResponseData<>();
}
/**
*
*
* @author fengshuonan
* @date 2022/9/18 14:46
*/
@GetResource(name = "获取当前用户,指定部门负责人", path = "/hrOrgApprover/getAssignOrgApprover")
public ResponseData<List<Long>> getAssignOrgApprover(@Validated(HrOrgApproverRequest.getAssignOrgApprover.class) HrOrgApproverRequest hrOrgApproverRequest) {
Long userId = LoginContext.me().getLoginUser().getUserId();
List<Long> result = hrOrgApproverService.getUserOrgApprover(userId, hrOrgApproverRequest.getOrgApproverType(), hrOrgApproverRequest.getParentLevel());
return new SuccessResponseData<>(result);
}
/**
*
*

View File

@ -1,6 +1,7 @@
package cn.stylefeng.roses.kernel.system.modular.organization.service;
import cn.stylefeng.roses.kernel.rule.pojo.dict.SimpleDict;
import cn.stylefeng.roses.kernel.system.api.enums.DetectModeEnum;
import cn.stylefeng.roses.kernel.system.modular.organization.entity.HrOrgApprover;
import cn.stylefeng.roses.kernel.system.modular.organization.pojo.request.HrOrgApproverRequest;
import com.baomidou.mybatisplus.extension.service.IService;
@ -59,11 +60,12 @@ public interface HrOrgApproverService extends IService<HrOrgApprover> {
* @param userId
* @param orgApproverType
* @param parentLevel 001
* @param detectModeEnum
* @return id
* @author fengshuonan
* @date 2022/9/18 14:52
*/
List<Long> getUserOrgApprover(Long userId, Integer orgApproverType, Integer parentLevel);
List<Long> getUserOrgApprover(Long userId, Integer orgApproverType, Integer parentLevel, DetectModeEnum detectModeEnum);
/**
*
@ -71,11 +73,12 @@ public interface HrOrgApproverService extends IService<HrOrgApprover> {
* @param deptId id
* @param orgApproverType
* @param parentLevel 001
* @param detectModeEnum
* @return id
* @author fengshuonan
* @date 2022/9/18 14:52
*/
List<Long> getDeptOrgApprover(Long deptId, Integer orgApproverType, Integer parentLevel);
List<Long> getDeptOrgApprover(Long deptId, Integer orgApproverType, Integer parentLevel, DetectModeEnum detectModeEnum);
/**
*

View File

@ -9,6 +9,7 @@ import cn.stylefeng.roses.kernel.system.api.OrganizationServiceApi;
import cn.stylefeng.roses.kernel.system.api.UserOrgServiceApi;
import cn.stylefeng.roses.kernel.system.api.UserServiceApi;
import cn.stylefeng.roses.kernel.system.api.constants.SystemConstants;
import cn.stylefeng.roses.kernel.system.api.enums.DetectModeEnum;
import cn.stylefeng.roses.kernel.system.api.pojo.organization.BindUserItem;
import cn.stylefeng.roses.kernel.system.api.pojo.user.SysUserDTO;
import cn.stylefeng.roses.kernel.system.api.pojo.user.SysUserOrgDTO;
@ -158,7 +159,7 @@ public class HrOrgApproverServiceImpl extends ServiceImpl<HrOrgApproverMapper, H
}
@Override
public List<Long> getUserOrgApprover(Long userId, Integer orgApproverType, Integer parentLevel) {
public List<Long> getUserOrgApprover(Long userId, Integer orgApproverType, Integer parentLevel, DetectModeEnum detectModeEnum) {
// 获取用户的所属机构id
SysUserOrgDTO sysUserOrgDTO = userOrgServiceApi.getUserOrgByUserId(userId);
@ -170,14 +171,14 @@ public class HrOrgApproverServiceImpl extends ServiceImpl<HrOrgApproverMapper, H
}
// 获取指定部门的负责人id信息
return getDeptOrgApprover(orgId, orgApproverType, parentLevel);
return getDeptOrgApprover(orgId, orgApproverType, parentLevel, detectModeEnum);
}
@Override
public List<Long> getDeptOrgApprover(Long deptId, Integer orgApproverType, Integer parentLevel) {
public List<Long> getDeptOrgApprover(Long deptId, Integer orgApproverType, Integer parentLevel, DetectModeEnum detectModeEnum) {
// 根据参数的级别,获取组织机构的父级机构
Long parentLevelOrgId = this.organizationServiceApi.getParentLevelOrgId(deptId, parentLevel);
Long parentLevelOrgId = this.organizationServiceApi.getParentLevelOrgId(deptId, parentLevel, detectModeEnum);
// 如果没有上级组织机构,则直接返回为空
if (ObjectUtil.isEmpty(parentLevelOrgId)) {

View File

@ -50,6 +50,7 @@ import cn.stylefeng.roses.kernel.system.api.RoleDataScopeServiceApi;
import cn.stylefeng.roses.kernel.system.api.RoleServiceApi;
import cn.stylefeng.roses.kernel.system.api.UserOrgServiceApi;
import cn.stylefeng.roses.kernel.system.api.UserServiceApi;
import cn.stylefeng.roses.kernel.system.api.enums.DetectModeEnum;
import cn.stylefeng.roses.kernel.system.api.exception.SystemModularException;
import cn.stylefeng.roses.kernel.system.api.exception.enums.organization.OrganizationExceptionEnum;
import cn.stylefeng.roses.kernel.system.api.pojo.organization.HrOrganizationDTO;
@ -414,13 +415,12 @@ public class HrOrganizationServiceImpl extends ServiceImpl<HrOrganizationMapper,
}
@Override
public Long getParentLevelOrgId(Long orgId, Integer parentLevelNum) {
public Long getParentLevelOrgId(Long orgId, Integer parentLevelNum, DetectModeEnum detectModeEnum) {
if (DetectModeEnum.TO_TOP.equals(detectModeEnum)) {
return calcParentOrgId(orgId, parentLevelNum, true);
} else {
return calcParentOrgId(orgId, parentLevelNum, false);
}
@Override
public Long getHighestLevelOrgId(Long orgId, Integer highestLevelNum) {
return calcParentOrgId(orgId, highestLevelNum, false);
}
/**