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;
}
}
flowable中使用到的一些方法。获取人员部门信息的更多相关文章
- 【转载】C#中List集合使用GetRange方法获取指定索引范围内的所有值
在C#的List集合中有时候需要获取指定索引位置范围的元素对象来组成一个新的List集合,此时就可使用到List集合的扩展方法GetRange方法,GetRange方法专门用于获取List集合指定范围 ...
- 【转载】C#中List集合使用Last方法获取最后一个元素
在C#的List集合操作过程中,如果要获取List集合中的最后一个元素对象,则一般会先通过获取到list集合的个数Count属性,然后再使用索引的方式获取到该集合的最后一个位置的元素信息.其实在Lis ...
- 【转载】 C#中List集合使用First()方法获取第一个元素
在C#的List集合操作过程中,如果要获取List集合中的第一个元素对象,则一般会先通过获取到list[0]这种方式来获取第一个元素.其实在List集合中提供了获取最后一个元素的First()方法,调 ...
- PHP中的__get()和__set()方法获取设置私有属性
在类的封装中,获取属性可以自定义getXXX()和setXXX()方法,当一个类中有多个属性时,使用这种方式就会很麻烦.为此PHP5中预定义了__get()和__set()方法,其中__get()方法 ...
- 在SharePoint中无代码开发InfoPath应用: 获取当前用户信息
很多种不同的场景下,会需要得到当前的用户信息,例如需要根据当前用户判断组,进而控制权限. 首先InfoPath提供了一个userName方法,来实现这个目的,不过这个方法的问题是只能获得不包含域名的用 ...
- Ecshop在模板中判断用户是否登陆,获取用户等级信息
ecshop模板中smarty怎样判断用户等级.用户id.用户昵称用户名,请看以下方法,使用全局变量 <!-- {if $smarty.session.user_rank gt 1}--> ...
- Asp.net Request方法获取客户端的信息
Response.Write("客户端计算机名:" + Request.UserHostName + "<BR />"); Response.Wri ...
- C# 获取word批注信息
今天在Silverlight 应用程序中实现了 获取word文档批注信息 的功能. 在wcf服务继承接口类中编写的函数如下 /// <summary> /// 获取word批注信息 /// ...
- EasyUI treegrid 获取编辑状态中某字段的值 [getEditor方法获取不到editor]
如题,在treegrid里,按照api里getEditor方法的说明, getEditoroptionsGet the specified editor, the options contains t ...
随机推荐
- How tomcat works(深入剖析tomcat)阅读笔记1-4章
How tomcat works chapter 1 简单的web服务器 这一张的主要内容就是实现一个简单的静态资源服务器,socket编程,利用java提供的socket和serverSocket编 ...
- presto 访问kudu 多schemas配置
presto需要访问kudu数据源,但是impala可以直接支持多数据库存储,但是presto不能原生支持,按照presto的官网设置了然而并不起作用. 官方文档: 到官方github提问了,然后并没 ...
- LeetCode 026 Remove Duplicates from Sorted Array
题目描述:Remove Duplicates from Sorted Array Given a sorted array, remove the duplicates in place such t ...
- C#(三)基础篇—方法,递归,条件分支,循环,三元操作符
C# 本随笔为个人复习巩固知识用,多从书上总结与理解得来,如有错误麻烦指正 2020-12-03 1.方法 static void Main(string[] args) { float Sum(fl ...
- Jmeter测试Websocket接口
前言 websocket是什么? WebSocket 协议在2008年诞生,2011年成为国际标准.所有浏览器都已经支持了. 它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器 ...
- 从七牛云迁移图片到github
迁移理由 问题是网站的大部分图床都是用的七牛云,官网有改动,所以原测试域名都失效,所以决定进行迁移,将七牛云中的图片迁移到github仓库中. 迁移步骤 Step1:从废弃测试域名空间至可用测试域名空 ...
- 第11.14节 正则表达式转义符和Python转义符相同引发问题的解决办法
正则表达式使用反斜杠('\')来把特殊字符转义成普通字符(为了方便称为"正则表达式转义"),而反斜杠在普通的 Python 字符串里也是转义符(称为"字符串转义" ...
- PyQt(Python+Qt)学习随笔:model/view架构中类QStandardItemModel的使用方法
老猿Python博文目录 老猿Python博客地址 一.概述 QStandardItemModel是QAbstractItemModel的派生类,用于在Model/View架构中存储自定义数据的通用模 ...
- 对flask的学习
任务需求:一个登录,注册页面 任务环境:pycharm 2018 专业版,python3.7,win 10专业版 ------------------------------------------- ...
- 关于Lombok框架子类继承时EqualsAndHashCode注解的callSuper取值的思考
先看例子(原始用例来源于这篇文章): TV类 @Getter @Setter //@EqualsAndHashCode @AllArgsConstructor @NoArgsConstructor p ...