flowable中使用到的一些方法。获取人员部门信息

package org.springblade.desk.utils;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.system.entity.Dept;
import org.springblade.system.feign.ISysClient;
import org.springblade.system.user.entity.User;
import org.springblade.system.user.feign.IUserClient;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

/***/
@Slf4j
@Component
@AllArgsConstructor
public class DeptUserUtil {
    private ISysClient sysClient ;
    private IUserClient userClient;

    /**
     * 获取职位postId
     * @param postName
     * @param tenantId
     * @return
     */
    public String getPostId(String postName,String tenantId){
        R<String> rPost = sysClient.getPostIds(Func.toStr(tenantId,"000000"),postName);
        return rPost.getData();
    }

    /**
     * 根据角色roleName获取roleId
     */
    public String getRoleId(String tenantId,String roleName){
        R<String> rRole = sysClient.getRoleIds(tenantId,roleName);
        return rRole.getData();
    }

    /**
     * 根据部门deptName获取deptId
     */
    public String getDeptId(String tenantId,String deptName){
        R<String> rDept = sysClient.getDeptIds(Func.toStr(tenantId,"000000"),deptName);
        return rDept.getData();
    }

    /**
     * 根据UserId,获取用户信息User
     */
    public User getUserById(Long userId){
        R<User> rUser = userClient.userInfoById(userId);
        return rUser.getData();
    }

    /**
     * 根据RoleId,获取用户列表
     */
    public List<User> getUserListByRoleId(String roleId){
        HashMap<String ,Object> map = new HashMap<String,Object>();
        map.put("roleId",roleId);
        R<List<User>> rUsers = userClient.getUserList(map);
        return rUsers.getData();
    }

    /**
     * 根据postId,获取用户列表
     */
    public List<User> getUserListByPostId(String postId){
        HashMap<String ,Object> map = new HashMap<String,Object>();
        map.put("postId",postId);
        R<List<User>> rUsers = userClient.getUserList(map);
        return rUsers.getData();
    }

    /**
     * 根据RoleId、deptId,获取用户列表
     */
    public List<User> getUserListByRoleIdAndDeptId(String roleId,String deptId){
        HashMap<String ,Object> map = new HashMap<String,Object>();
        map.put("deptId",deptId);
        map.put("roleId",roleId);
        R<List<User>> rUsers = userClient.getUserList(map);
        return rUsers.getData();
    }

    /**
     * 根据RoleId、deptId,获取用户列表
     */
    public List<User> getUserListByPostIdAndDeptId(String postId,String deptId){
        HashMap<String ,Object> map = new HashMap<String,Object>();
        map.put("deptId",deptId);
        map.put("postId",postId);
        R<List<User>> rUsers = userClient.getUserList(map);
        return rUsers.getData();
    }

    /**
     * 根据RoleId、deptId,获取用户列表,向上级部门查询
     */
    public List<User> getUserListByRoleIdAndDeptId(String roleId,String deptId,boolean isParent){
        List<User> list = getUserListByRoleIdAndDeptId(roleId,deptId);
        if(isParent&&Func.isEmpty(list)) {
            Dept dept = getDeptById(Long.parseLong(deptId));
            if (Func.isEmpty(dept)) {
                return null;
            }
            list = getUserListByRoleIdAndDeptId(roleId, String.valueOf(dept.getParentId()), true);
        }
        return list;
    }

    /**
     * 根据postId、deptId,获取用户列表,向上级部门查询
     */
    public List<User> getUserListByPostIdAndDeptId(String postId,String deptId,boolean isParent){
        List<User> list = getUserListByPostIdAndDeptId(postId,deptId);
        if(isParent&&Func.isEmpty(list)) {
            Dept dept = getDeptById(Long.parseLong(deptId));
            if (Func.isEmpty(dept)) {
                return null;
            }
            list = getUserListByPostIdAndDeptId(postId, String.valueOf(dept.getParentId()), true);
        }
        return list;
    }

    /**
     * 根据部门deptId,获取部门信息Dept(包含部门主管managerUser)
     */
    public Dept getDeptById(Long deptId){
        R<Dept> rDept = sysClient.getDept(deptId);
        return rDept.getData();
    }

    /**
     * 根据部门deptId,获取所有子部门信息Dept
     */
    public List<Dept> getChildDeptsById(Long deptId){
        R<List<Dept>> rDept = sysClient.getDeptChild(deptId);
        return rDept.getData();
    }

    /**
     * 根据部门deptIds,获取所有部门信息Dept
     */
    public List<Dept> getChildDeptsById(String deptIds){
        R<List<Dept>> rDept = sysClient.getDepts(deptIds);
        return rDept.getData();
    }

    /**
     * 根据部门deptId,获取上级部门(包含上级主管managerUser),区分用户userId
     */
    public Dept getManagerDept(Long deptId,Long distinctUserId){
        if(Func.isEmpty(distinctUserId)){
            return null;
        }
        Dept dept = getDeptById(deptId);
        if(dept==null){
            return null;
        }
        Long managerUserId = dept.getManagerUser();
        if(Func.isEmpty(managerUserId)){
            dept = getManagerDept(dept.getParentId(),distinctUserId);
        }
        if(!Func.isEmpty(dept)&&distinctUserId.equals(dept.getManagerUser())){
            dept = getManagerDept(dept.getParentId(),distinctUserId);
        }
        return dept;
    }

    /**
     * 根据部门deptId,获取上级部门(包含上级主管managerUser),区分用户userId,设置上级部门上限
     * 部门等级 level : 1 -> 10  最高级 -> 最低级
     */
    public Dept getManagerDept(Long deptId,Long distinctUserId,Integer level){
        if(Func.isEmpty(distinctUserId) || Func.isEmpty(level)){
            return null;
        }
        Dept dept = getDeptById(deptId);
        if(dept==null){
            return null;
        }
        Long managerUserId = dept.getManagerUser();
        if(Func.isEmpty(managerUserId)){
            dept = getManagerDept(dept.getParentId(),distinctUserId,level);
        }
        Integer managerDeptLevel = dept.getLevel();
        if(Func.isEmpty(managerDeptLevel) || managerDeptLevel.compareTo(level)<0){
            return null;
        }
        if(!Func.isEmpty(dept)&&distinctUserId.equals(dept.getManagerUser())){
            dept = getManagerDept(dept.getParentId(),distinctUserId,level);
        }
        return dept;
    }

    /**
     * 根据部门deptId及职位postId,获取上级部门(包含上级主管managerUser),区分用户userId
     */
    public Dept getManagerDept(Long deptId,Long distinctUserId,Long postId){
        if(Func.isEmpty(postId) || Func.isEmpty(distinctUserId)|| Func.isEmpty(deptId)){
            return null;
        }
        Dept dept = getDeptById(deptId);
        if(dept==null){
            return null;
        }
        Long managerUserId = dept.getManagerUser();
        if(Func.isEmpty(managerUserId)){
            dept = getManagerDept(dept.getParentId(),distinctUserId,postId);
        }
        if(!Func.isEmpty(dept)&&!distinctUserId.equals(dept.getManagerUser())){
            R<User> rUser = userClient.userInfoById(dept.getManagerUser());
            User user = rUser.getData();
            if(user==null || !postId.equals(user.getPostId())){
                dept = getManagerDept(dept.getParentId(),distinctUserId,postId);
            }
        }
        else if(!Func.isEmpty(dept)&&distinctUserId.equals(dept.getManagerUser())){
            dept = getManagerDept(dept.getParentId(),distinctUserId,postId);
        }
        return dept;
    }

    /**
     * 判断是否是部门主管
     */
    public boolean isManagerUser(Long  deptId,Long userId){
        if(Func.isEmpty(deptId) || Func.isEmpty(userId)){
            return false;
        }
        Dept dept = getDeptById(deptId);
        if(dept==null){
            return false;
        }
        Long managerUserId = dept.getManagerUser();
        if(userId.compareTo(managerUserId)==0){
            return true;
        }
        return false;
    }

    public String isStrManagerUser(Long  deptId,Long userId){
        if(Func.isEmpty(deptId) || Func.isEmpty(userId)){
            return "N";
        }
        Dept dept = getDeptById(deptId);
        if(dept==null){
            return "N";
        }
        Long managerUserId = dept.getManagerUser();
        if(userId.compareTo(managerUserId)==0){
            return "Y";
        }
        return "N";
    }

    /**
     * 判断是否是某个部门
     */
    public boolean isOneDept(String deptName,Long deptId){
        if(Func.isEmpty(deptName) || Func.isEmpty(deptId)){
            return false;
        }
        String deptIds = getDeptId(AuthUtil.getTenantId(),deptName);
        if(deptIds==null){
            return false;
        }
        if(deptId.equals(deptIds)){
            return true;
        }
        return false;
    }

    public String isStrOneDept(String deptName,Long deptId){
        if(Func.isEmpty(deptName) || Func.isEmpty(deptId)){
            return "N";
        }
        String deptIds = getDeptId(AuthUtil.getTenantId(),deptName);
        if(Func.isEmpty(deptIds)){
            return "N";
        }
        if(deptIds.equals(deptId)){
            return "Y";
        }
        return "N";
    }

    /**
     * 判断是否最高主管
     */
    public boolean isHighManagerUser(){
        return false;
    }

    /**
     * 判断是分公司,还是总部
     */
    public String SubStrCompany(Long deptId){
        String result ="速品";
        if(Func.isEmpty(deptId)){
            return result;
        }
        Dept dept = getDeptById(deptId);
        if(dept==null){
            return result;
        }
        R<List<String>> rDeptNames = sysClient.getDeptNames(dept.getAncestors());
        if(Func.isNotEmpty(rDeptNames) && Func.isNotEmpty(rDeptNames.getData())){
            for(String deptName : rDeptNames.getData()){
                if(deptName.contains("福州")){
                    result = "福州";
                    return result;
                }
                if(deptName.contains("厦门")){
                    result = "厦门";
                    return result;
                }
                if(deptName.contains("泉州")){
                    result = "泉州";
                    return result;
                }
            }
        }
        return result;
    }

    /**
     * 判断是否分公司
     */
    public boolean isSubCompany(Long deptId){
        if(Func.isEmpty(deptId)){
            return false;
        }
        Dept dept = getDeptById(deptId);
        if(dept==null){
            return false;
        }
        if(dept.getDeptCategory().equals(1)){
            return true;
        }
        if(!Func.isEmpty(dept.getParentId())){
            return isSubCompany(dept.getParentId());
        }
        return false;
    }

    /**
     * 根据租户id获取部门列表
     * @param tenantId
     * @return
     */
   public List<Dept>getDeptList(String tenantId){
       List<Dept>list=sysClient.getDeptList(tenantId).getData();
        return list;
   }

    /**
     * 获取用户列表
     * @param tenantId
     * @return
     */
    public List<User> getUserList(String tenantId){
        HashMap<String,Object>map=new HashMap<String,Object>();
        map.put("tenant_id",tenantId);
        return userClient.getUserList(map).getData();
    }

    /**
     * 根据部门id,租户id 获取本部门人员list;
     * @param deptId
     * @return
     */
    public List<User>getDeptUser(String deptId,String tenantId){
        HashMap<String,Object>map=new HashMap<String,Object>();
        map.put("tenant_id",tenantId);
        List<User>users=userClient.getUserList(map).getData();
        List<User>list=new ArrayList<User>();
        //根据部门id筛选,本部门下人员
        for(User user:users){
            if(deptId.equals(user.getDeptId())){
                list.add(user);
            }
        }
        return list;
    }
}
原文地址:https://www.cnblogs.com/xianz666/p/13577892.html