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;
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM