1. 程式人生 > 實用技巧 >flowable中使用到的一些方法。獲取人員部門資訊

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