zoukankan      html  css  js  c++  java
  • 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;
        }
    }
  • 相关阅读:
    动态传参
    函数的介绍
    文件的操作
    send email with formatted table
    minimize and close window with customed winform
    python algorithm
    something important about docker
    book list
    which language is suitable for what to do
    Find Duplicate Items in list fast
  • 原文地址:https://www.cnblogs.com/xianz666/p/13577892.html
Copyright © 2011-2022 走看看