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;
        }
    }
  • 相关阅读:
    汇编笔记
    C++知识点复习
    flask 初步
    flask and postgre on heroku
    google zxing二维码库 初始
    flasklogin解读
    flasksqlalchemy 关系(一对多)
    flask的信号
    flask 范例学习
    github 操作纪录
  • 原文地址:https://www.cnblogs.com/xianz666/p/13577892.html
Copyright © 2011-2022 走看看