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中使用到的一些方法。获取人员部门信息的更多相关文章

  1. 【转载】C#中List集合使用GetRange方法获取指定索引范围内的所有值

    在C#的List集合中有时候需要获取指定索引位置范围的元素对象来组成一个新的List集合,此时就可使用到List集合的扩展方法GetRange方法,GetRange方法专门用于获取List集合指定范围 ...

  2. 【转载】C#中List集合使用Last方法获取最后一个元素

    在C#的List集合操作过程中,如果要获取List集合中的最后一个元素对象,则一般会先通过获取到list集合的个数Count属性,然后再使用索引的方式获取到该集合的最后一个位置的元素信息.其实在Lis ...

  3. 【转载】 C#中List集合使用First()方法获取第一个元素

    在C#的List集合操作过程中,如果要获取List集合中的第一个元素对象,则一般会先通过获取到list[0]这种方式来获取第一个元素.其实在List集合中提供了获取最后一个元素的First()方法,调 ...

  4. PHP中的__get()和__set()方法获取设置私有属性

    在类的封装中,获取属性可以自定义getXXX()和setXXX()方法,当一个类中有多个属性时,使用这种方式就会很麻烦.为此PHP5中预定义了__get()和__set()方法,其中__get()方法 ...

  5. 在SharePoint中无代码开发InfoPath应用: 获取当前用户信息

    很多种不同的场景下,会需要得到当前的用户信息,例如需要根据当前用户判断组,进而控制权限. 首先InfoPath提供了一个userName方法,来实现这个目的,不过这个方法的问题是只能获得不包含域名的用 ...

  6. Ecshop在模板中判断用户是否登陆,获取用户等级信息

    ecshop模板中smarty怎样判断用户等级.用户id.用户昵称用户名,请看以下方法,使用全局变量 <!-- {if $smarty.session.user_rank gt 1}--> ...

  7. Asp.net Request方法获取客户端的信息

    Response.Write("客户端计算机名:" + Request.UserHostName + "<BR />"); Response.Wri ...

  8. C# 获取word批注信息

    今天在Silverlight 应用程序中实现了 获取word文档批注信息 的功能. 在wcf服务继承接口类中编写的函数如下 /// <summary> /// 获取word批注信息 /// ...

  9. EasyUI treegrid 获取编辑状态中某字段的值 [getEditor方法获取不到editor]

    如题,在treegrid里,按照api里getEditor方法的说明, getEditoroptionsGet the specified editor, the options contains t ...

随机推荐

  1. C++/Java小白解Leetcode题,发现了知识盲区……

    一.初见LeetCode 大一时候学习C++,根据课程一直在PTA平台做题目,数据结构和算法的作业题目也是在PTA.后来发现牛客网学习资源也很丰富,孤陋寡闻,前几个月在知道LeetCode这个平台,跟 ...

  2. Linux之【安装系统后的调优和安全设置】

    关闭SElinux功能 •修改配置文件使其永远生效 第一种修改方法vi vi /etc/sysconfig/selinuc 或者 vi /etc/selinux/config修改: SELINUX=d ...

  3. 七. Vue Router详解

    1. 认识路由 1.1 路由概念 路由是什么? 路由是一个网络工程里面的术语. 路由(routing)就是通过互联的网络把信息从源地址传输到目的地址的活动 --- 维基百科 路由器提供了两种机制:路由 ...

  4. Mysql-索引分析查询性能

    explain 全文只有一个关键点,那就是explain,explain 显示了MySQL如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句.简单讲,它的作用就 ...

  5. 第6章 Python中的动态可执行方法 第6.1节 Python代码编译

    在介绍动态可执行方法前,本节先介绍一下Python代码编译有关的知识,因为部分内容和动态执行有些关联. 一.    Python解释器的功能 Python虽然是解释型语言,但Python代码也是可编译 ...

  6. Python中使用百分号占位符的字符串格式化方法中%s和%r的输出内容有何不同?

    Python中使用百分号占位符的字符串格式化方法中%s和%r表示需要显示的数据对应变量x会以str(x)还是repr(x)输出内容展示. 关于str和repr的关系请见: <Python中rep ...

  7. PyQt学习随笔:ListView控件的视图和数据模型分离案例

    Qt 中view类控件的目的是实现数据和模型分离,控件展示数据,数据保存在数据存储中,数据存储中的数据改变了,则控件中展示的数据跟随改变.当设计时只指定了一个控件和一个数据存储关联时,这种分离虽然也能 ...

  8. es6 数组新增方法

    1.Array.from(): 这个函数的作用是将类似数组的对象转化为数组,比如DOM对象 let arrayLike = {      "0":"TangSir&quo ...

  9. centos7.5以上poenssl和openssh升级

    2020年12月09日,360CERT监测发现  openssl  发布了  openssl 拒绝服务漏洞  的风险通告,该漏洞编号为  CVE-2020-1971  ,漏洞等级:高危 ,漏洞评分:7 ...

  10. AcWing 407. 稳定的牛分配

    大型补档计划 题目链接 题目看的有点晕(语文差) 总体来说就是让每头牛找个谷仓,不能超过容量,最小化每头牛在的谷仓在自己心目中排名的极差. 显然这个最优性问题不好做,但是转换为判定性问题这就是一个标准 ...