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

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; 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.enums.ResBizTypeEnum;
import cn.stylefeng.roses.kernel.rule.pojo.dict.SimpleDict; import cn.stylefeng.roses.kernel.rule.pojo.dict.SimpleDict;
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData; import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
@ -66,19 +65,6 @@ public class HrOrgApproverController {
return new SuccessResponseData<>(); 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; package cn.stylefeng.roses.kernel.system.modular.organization.service;
import cn.stylefeng.roses.kernel.rule.pojo.dict.SimpleDict; 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.entity.HrOrgApprover;
import cn.stylefeng.roses.kernel.system.modular.organization.pojo.request.HrOrgApproverRequest; import cn.stylefeng.roses.kernel.system.modular.organization.pojo.request.HrOrgApproverRequest;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
@ -59,11 +60,12 @@ public interface HrOrgApproverService extends IService<HrOrgApprover> {
* @param userId * @param userId
* @param orgApproverType * @param orgApproverType
* @param parentLevel 001 * @param parentLevel 001
* @param detectModeEnum
* @return id * @return id
* @author fengshuonan * @author fengshuonan
* @date 2022/9/18 14:52 * @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 deptId id
* @param orgApproverType * @param orgApproverType
* @param parentLevel 001 * @param parentLevel 001
* @param detectModeEnum
* @return id * @return id
* @author fengshuonan * @author fengshuonan
* @date 2022/9/18 14:52 * @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.UserOrgServiceApi;
import cn.stylefeng.roses.kernel.system.api.UserServiceApi; import cn.stylefeng.roses.kernel.system.api.UserServiceApi;
import cn.stylefeng.roses.kernel.system.api.constants.SystemConstants; 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.organization.BindUserItem;
import cn.stylefeng.roses.kernel.system.api.pojo.user.SysUserDTO; import cn.stylefeng.roses.kernel.system.api.pojo.user.SysUserDTO;
import cn.stylefeng.roses.kernel.system.api.pojo.user.SysUserOrgDTO; import cn.stylefeng.roses.kernel.system.api.pojo.user.SysUserOrgDTO;
@ -158,7 +159,7 @@ public class HrOrgApproverServiceImpl extends ServiceImpl<HrOrgApproverMapper, H
} }
@Override @Override
public List<Long> getUserOrgApprover(Long userId, Integer orgApproverType, Integer parentLevel) { public List<Long> getUserOrgApprover(Long userId, Integer orgApproverType, Integer parentLevel, DetectModeEnum detectModeEnum) {
// 获取用户的所属机构id // 获取用户的所属机构id
SysUserOrgDTO sysUserOrgDTO = userOrgServiceApi.getUserOrgByUserId(userId); SysUserOrgDTO sysUserOrgDTO = userOrgServiceApi.getUserOrgByUserId(userId);
@ -170,14 +171,14 @@ public class HrOrgApproverServiceImpl extends ServiceImpl<HrOrgApproverMapper, H
} }
// 获取指定部门的负责人id信息 // 获取指定部门的负责人id信息
return getDeptOrgApprover(orgId, orgApproverType, parentLevel); return getDeptOrgApprover(orgId, orgApproverType, parentLevel, detectModeEnum);
} }
@Override @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)) { 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.RoleServiceApi;
import cn.stylefeng.roses.kernel.system.api.UserOrgServiceApi; import cn.stylefeng.roses.kernel.system.api.UserOrgServiceApi;
import cn.stylefeng.roses.kernel.system.api.UserServiceApi; 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.SystemModularException;
import cn.stylefeng.roses.kernel.system.api.exception.enums.organization.OrganizationExceptionEnum; import cn.stylefeng.roses.kernel.system.api.exception.enums.organization.OrganizationExceptionEnum;
import cn.stylefeng.roses.kernel.system.api.pojo.organization.HrOrganizationDTO; import cn.stylefeng.roses.kernel.system.api.pojo.organization.HrOrganizationDTO;
@ -414,13 +415,12 @@ public class HrOrganizationServiceImpl extends ServiceImpl<HrOrganizationMapper,
} }
@Override @Override
public Long getParentLevelOrgId(Long orgId, Integer parentLevelNum) { public Long getParentLevelOrgId(Long orgId, Integer parentLevelNum, DetectModeEnum detectModeEnum) {
return calcParentOrgId(orgId, parentLevelNum, true); if (DetectModeEnum.TO_TOP.equals(detectModeEnum)) {
} return calcParentOrgId(orgId, parentLevelNum, true);
} else {
@Override return calcParentOrgId(orgId, parentLevelNum, false);
public Long getHighestLevelOrgId(Long orgId, Integer highestLevelNum) { }
return calcParentOrgId(orgId, highestLevelNum, false);
} }
/** /**