✨ Introducing new features. org component

This commit is contained in:
lbw committed 2023-11-29 09:31:13 +08:00
1 parent 93f02b9d8b
commit e0fd01d74b
5 files changed
+6 -217

No files matched your search

@@ -1,44 +0,0 @@
package com.pig4cloud.pigx.flow.task.controller;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.flow.task.service.IOrgService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* @author : willian fu
* @date : 2022/6/27
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/org")
public class OrgController {
private final IOrgService orgService;
/**
* 查询组织架构树
* @param deptId 部门id
* @param showLeave 是否显示离职员工
* @return 组织架构树数据
*/
@GetMapping("tree")
public R getOrgTreeData(@RequestParam(defaultValue = "0") Long deptId, String type,
@RequestParam(defaultValue = "false") Boolean showLeave) {
return orgService.getOrgTreeData(deptId, type, showLeave);
}
/**
* 模糊搜索用户
* @param userName 用户名/拼音/首字母
* @return 匹配到的用户
*/
@GetMapping("tree/user/search")
public R getOrgTreeUser(@RequestParam String userName) {
return orgService.getOrgTreeUser(userName.trim());
}
}
@@ -1,27 +0,0 @@
package com.pig4cloud.pigx.flow.task.service;
import com.pig4cloud.pigx.common.core.util.R;
/**
* @author : willian fu
* @version : 1.0
*/
public interface IOrgService {
/**
* 查询组织架构树
* @param deptId 部门id
* @param type 只查询部门架构
* @param showLeave 是否显示离职员工
* @return 组织架构树数据
*/
R getOrgTreeData(Long deptId, String type, Boolean showLeave);
/**
* 模糊搜索用户
* @param userName 用户名/拼音/首字母
* @return 匹配到的用户
*/
R getOrgTreeUser(String userName);
}
@@ -1,139 +0,0 @@
package com.pig4cloud.pigx.flow.task.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.StrUtil;
import com.pig4cloud.pigx.admin.api.entity.SysDept;
import com.pig4cloud.pigx.admin.api.entity.SysRole;
import com.pig4cloud.pigx.admin.api.entity.SysUser;
import com.pig4cloud.pigx.admin.api.feign.RemoteDeptService;
import com.pig4cloud.pigx.admin.api.feign.RemoteRoleService;
import com.pig4cloud.pigx.admin.api.feign.RemoteUserService;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.core.util.RetOps;
import com.pig4cloud.pigx.flow.task.constant.NodeUserTypeEnum;
import com.pig4cloud.pigx.flow.task.service.IOrgService;
import com.pig4cloud.pigx.flow.task.utils.DataUtil;
import com.pig4cloud.pigx.flow.task.vo.OrgTreeVo;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class OrgServiceImpl implements IOrgService {
private final RemoteUserService remoteUserService;
private final RemoteRoleService remoteRoleService;
private final RemoteDeptService remoteDeptService;
/**
* 查询组织架构树
* @param deptId 部门id
* @param type 只查询部门架构
* @param showLeave 是否显示离职员工
* @return 组织架构树数据
*/
@Override
public R getOrgTreeData(Long deptId, String type, Boolean showLeave) {
List<OrgTreeVo> orgs = new LinkedList<>();
if (StrUtil.equals(type, NodeUserTypeEnum.ROLE.getKey())) {
// 角色
List<SysRole> roleList = remoteRoleService.getAllRole().getData();
for (SysRole role : roleList) {
OrgTreeVo orgTreeVo = new OrgTreeVo();
orgTreeVo.setId(role.getRoleId());
orgTreeVo.setName(role.getRoleName());
orgTreeVo.setType(NodeUserTypeEnum.ROLE.getKey());
orgTreeVo.setSelected(false);
orgs.add(orgTreeVo);
}
Dict dict = Dict.create()
.set("roleList", orgs)
.set("childDepartments", orgs)
.set("employees", new ArrayList<>());
return R.ok(dict);
}
Dict dict = Dict.create()
.set("titleDepartments", new ArrayList<>())
.set("roleList", new ArrayList<>())
.set("employees", new ArrayList<>());
List<SysDept> deptList = remoteDeptService.getAllDept().getData();
// 查询所有部门及员工
{
List deptVoList = new ArrayList();
for (SysDept dept : deptList) {
OrgTreeVo orgTreeVo = new OrgTreeVo();
orgTreeVo.setId(dept.getDeptId());
orgTreeVo.setName(dept.getName());
orgTreeVo.setType(NodeUserTypeEnum.DEPT.getKey());
orgTreeVo.setSelected(false);
deptVoList.add(orgTreeVo);
}
dict.set("childDepartments", deptVoList);
}
if (!StrUtil.equals(type, NodeUserTypeEnum.DEPT.getKey())) {
List userVoList = new ArrayList();
List<SysUser> userList = remoteUserService.getUserIdListByDeptIdList(CollUtil.toList(deptId)).getData();
for (SysUser user : userList) {
OrgTreeVo orgTreeVo = new OrgTreeVo();
orgTreeVo.setId(user.getUserId());
orgTreeVo.setName(user.getUsername());
orgTreeVo.setType(NodeUserTypeEnum.USER.getKey());
orgTreeVo.setSelected(false);
orgTreeVo.setAvatar(user.getAvatar());
userVoList.add(orgTreeVo);
}
dict.set("employees", userVoList);
}
if (deptId > 0) {
List<SysDept> allDept = remoteDeptService.getAllDept().getData();
List<SysDept> depts = DataUtil.selectParentByDept(deptId, allDept);
dict.set("titleDepartments", CollUtil.reverse(depts));
}
return R.ok(dict);
}
/**
* 模糊搜索用户
* @param userName 用户名/拼音/首字母
* @return 匹配到的用户
*/
@Override
public R getOrgTreeUser(String userName) {
return R.ok(RetOps.of(remoteUserService.getUserListByUserName(userName))
.getData()
.orElseGet(ArrayList::new)
.stream()
.map(user -> {
OrgTreeVo orgTreeVo = new OrgTreeVo();
orgTreeVo.setId(user.getUserId());
orgTreeVo.setName(user.getUsername());
orgTreeVo.setType(NodeUserTypeEnum.USER.getKey());
orgTreeVo.setSelected(false);
orgTreeVo.setAvatar(user.getAvatar());
return orgTreeVo;
})
.collect(Collectors.toList()));
}
}
@@ -8,6 +8,7 @@ import com.pig4cloud.pigx.admin.api.entity.SysDept;
import com.pig4cloud.pigx.admin.api.entity.SysUser;
import com.pig4cloud.pigx.admin.api.feign.RemoteDeptService;
import com.pig4cloud.pigx.admin.api.feign.RemoteUserService;
import com.pig4cloud.pigx.admin.api.utils.DataUtil;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.flow.task.constant.NodeStatusEnum;
import com.pig4cloud.pigx.flow.task.dto.*;
@@ -16,7 +17,6 @@ import com.pig4cloud.pigx.flow.task.entity.ProcessCopy;
import com.pig4cloud.pigx.flow.task.entity.ProcessGroup;
import com.pig4cloud.pigx.flow.task.entity.ProcessInstanceRecord;
import com.pig4cloud.pigx.flow.task.service.*;
import com.pig4cloud.pigx.flow.task.utils.DataUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -112,7 +112,7 @@ public class RemoteServiceImpl implements IRemoteService {
Long parentId = checkParentDto.getParentId();
List<Long> deptIdList = checkParentDto.getDeptIdList();
// 查询子级包括自己
List<SysDept> allDept = deptService.getAllDept().getData();
List<SysDept> allDept = deptService.getAllDept(null).getData();
List<SysDept> childrenDeptList = DataUtil.selectChildrenByDept(parentId, allDept);
List<Long> childrenDeptIdList = childrenDeptList.stream().map(SysDept::getDeptId).collect(Collectors.toList());
@@ -148,14 +148,11 @@ public class RemoteServiceImpl implements IRemoteService {
Long childId = checkChildDto.getChildId();
List<Long> deptIdList = checkChildDto.getDeptIdList();
// 查询父级包括自己
List<SysDept> allDept = deptService.getAllDept().getData();
List<SysDept> allDept = deptService.getAllDept(null).getData();
List<SysDept> parentDeptList = DataUtil.selectParentByDept(childId, allDept);
List<Long> parentDeptIdList = parentDeptList.stream().map(SysDept::getDeptId).collect(Collectors.toList());
parentDeptIdList.remove(childId);
List<Long> remainIdList = CollUtil.removeAny(deptIdList, ArrayUtil.toArray(parentDeptIdList, Long.class));
return R.ok(remainIdList.isEmpty());
}
@@ -25,6 +25,7 @@ import com.pig4cloud.pigx.common.core.util.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@@ -37,10 +38,11 @@ public interface RemoteDeptService {
/**
* 获取所有部门接口
* @param parentDeptId 父部门ID
* @return R 返回结果对象,包含所有部门信息列表
*/
@GetMapping("/dept/list")
R<List<SysDept>> getAllDept();
R<List<SysDept>> getAllDept(@RequestParam("parentDeptId") Long parentDeptId);
/**
* 通过部门ID获取负责人列表