feat(approval): 完善审批流程并新增部门管理功能
- 修改审批任务服务接口返回类型为Map以支持复杂数据结构 - 新增WMS部门管理模块,包括实体、业务对象、控制器和实现类 - 添加部门树形结构支持和部门负责人管理功能 - 更新审批流程逻辑,集成部门领导审批机制 - 重构审批任务查询方法以关联审批详情和申请人信息 - 添加部门ID字段到请假和外出申请相关实体中 - 优化多级审批流程,支持基于部门层级的审批链路 - 移除废弃的导入语句并整理代码结构
This commit is contained in:
@@ -14,6 +14,8 @@ import com.klp.common.core.service.UserService;
|
||||
import com.klp.common.helper.LoginHelper;
|
||||
import com.klp.common.utils.StringUtils;
|
||||
import com.klp.domain.WmsApprovalTask;
|
||||
import com.klp.domain.WmsDept;
|
||||
import com.klp.mapper.*;
|
||||
import com.klp.system.mapper.SysDeptMapper;
|
||||
import com.klp.system.mapper.SysUserMapper;
|
||||
import com.klp.system.service.ISysUserService;
|
||||
@@ -25,8 +27,6 @@ import com.klp.domain.vo.WmsApprovalVo;
|
||||
import com.klp.domain.WmsApproval;
|
||||
import com.klp.domain.bo.WmsApprovalTaskBo;
|
||||
import com.klp.domain.vo.WmsApprovalTaskVo;
|
||||
import com.klp.mapper.WmsApprovalMapper;
|
||||
import com.klp.mapper.WmsApprovalTaskMapper;
|
||||
import com.klp.service.IWmsApprovalService;
|
||||
import com.klp.service.IWmsApprovalTaskService;
|
||||
|
||||
@@ -34,8 +34,6 @@ import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.klp.mapper.WmsLeaveRequestMapper;
|
||||
import com.klp.mapper.WmsOutRequestMapper;
|
||||
import com.klp.domain.vo.WmsLeaveRequestVo;
|
||||
import com.klp.domain.vo.WmsOutRequestVo;
|
||||
import com.klp.domain.WmsLeaveRequest;
|
||||
@@ -55,7 +53,7 @@ public class WmsApprovalServiceImpl implements IWmsApprovalService {
|
||||
private final WmsLeaveRequestMapper leaveRequestMapper;
|
||||
private final WmsOutRequestMapper outRequestMapper;
|
||||
private final ISysUserService userService;
|
||||
private final SysDeptMapper deptMapper;
|
||||
private final WmsDeptMapper wmsDeptMapper;
|
||||
private final SysUserMapper userMapper;
|
||||
|
||||
/**
|
||||
@@ -262,13 +260,13 @@ public class WmsApprovalServiceImpl implements IWmsApprovalService {
|
||||
bo.setApprovalId(add.getApprovalId());
|
||||
|
||||
if ("leave".equals(add.getApplyType()) && add.getApplyId() != null) {
|
||||
createApprovalTasks(add.getApprovalId(), add.getApplyId(), add.getApplyType(),add.getApprovalType());
|
||||
createApprovalTasks(add.getApprovalId(), add.getApplyId(), add.getApplyType(), add.getApprovalType(), bo.getDeptId());
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
private void createApprovalTasks(Long approvalId, Long applyId, String applyType, String approvalType) {
|
||||
private void createApprovalTasks(Long approvalId, Long applyId, String applyType, String approvalType, Long deptId) {
|
||||
if (!"leave".equals(applyType)) {
|
||||
return;
|
||||
}
|
||||
@@ -285,7 +283,7 @@ public class WmsApprovalServiceImpl implements IWmsApprovalService {
|
||||
updateApproval.setApprovalType(approvalType);
|
||||
|
||||
if (isMultiLevel) {
|
||||
List<Long> leaderUserIds = getDeptLeaders(leaveRequest.getApplicantDeptName());
|
||||
List<Long> leaderUserIds = getDeptLeaders(deptId);
|
||||
updateApproval.setRequiredApprovers(leaderUserIds.size());
|
||||
|
||||
for (Long leaderUserId : leaderUserIds) {
|
||||
@@ -302,13 +300,13 @@ public class WmsApprovalServiceImpl implements IWmsApprovalService {
|
||||
} else {
|
||||
updateApproval.setRequiredApprovers(1);
|
||||
// 根据applicantId查询审批人name和id
|
||||
WmsApproval approval = baseMapper.selectOne(new LambdaQueryWrapper<WmsApproval>().eq(WmsApproval::getApprovalId, approvalId));
|
||||
List<SysUser> currentUser = userMapper.selectList(new LambdaQueryWrapper<SysUser>().eq(SysUser::getNickName, approval.getApproverName()));
|
||||
if (currentUser != null) {
|
||||
WmsDept dept = wmsDeptMapper.selectById(deptId);
|
||||
SysUser leader = userMapper.selectById(dept.getLeader());
|
||||
if (leader != null) {
|
||||
WmsApprovalTaskBo taskBo = new WmsApprovalTaskBo();
|
||||
taskBo.setApprovalId(approvalId);
|
||||
taskBo.setApproverId(currentUser.get(0).getUserId());
|
||||
taskBo.setApproverName(approval.getApproverName());
|
||||
taskBo.setApproverId(dept.getLeader());
|
||||
taskBo.setApproverName(leader.getNickName());
|
||||
taskBo.setTaskStatus("pending");
|
||||
approvalTaskMapper.insert(BeanUtil.toBean(taskBo, WmsApprovalTask.class));
|
||||
}
|
||||
@@ -317,28 +315,20 @@ public class WmsApprovalServiceImpl implements IWmsApprovalService {
|
||||
baseMapper.updateById(updateApproval);
|
||||
}
|
||||
|
||||
private List<Long> getDeptLeaders(String applicantDeptName) {
|
||||
private List<Long> getDeptLeaders(Long deptId) {
|
||||
List<Long> leaderUserIds = new ArrayList<>();
|
||||
|
||||
if (StringUtils.isBlank(applicantDeptName)) {
|
||||
return leaderUserIds;
|
||||
}
|
||||
|
||||
// 根据部门名称查询部门信息
|
||||
SysDept dept = deptMapper.selectOne(new LambdaQueryWrapper<SysDept>()
|
||||
.eq(SysDept::getDeptName, applicantDeptName));
|
||||
|
||||
if (dept == null) {
|
||||
if (deptId == null) {
|
||||
return leaderUserIds;
|
||||
}
|
||||
|
||||
// 获取部门的所有祖先部门ID(包括自己)
|
||||
List<Long> ancestorDeptIds = new ArrayList<>();
|
||||
Long currentDeptId = dept.getDeptId();
|
||||
Long currentDeptId = deptId;
|
||||
|
||||
while (currentDeptId != null) {
|
||||
ancestorDeptIds.add(currentDeptId);
|
||||
SysDept currentDept = deptMapper.selectById(currentDeptId);
|
||||
WmsDept currentDept = wmsDeptMapper.selectById(currentDeptId);
|
||||
if (currentDept != null) {
|
||||
currentDeptId = currentDept.getParentId();
|
||||
} else {
|
||||
@@ -348,29 +338,29 @@ public class WmsApprovalServiceImpl implements IWmsApprovalService {
|
||||
|
||||
// 查询每个祖先部门的leader字段内容
|
||||
if (!ancestorDeptIds.isEmpty()) {
|
||||
List<SysDept> ancestorDepts = deptMapper.selectList(new LambdaQueryWrapper<SysDept>()
|
||||
.in(SysDept::getDeptId, ancestorDeptIds));
|
||||
List<WmsDept> ancestorDepts = wmsDeptMapper.selectList(new LambdaQueryWrapper<WmsDept>()
|
||||
.in(WmsDept::getDeptId, ancestorDeptIds));
|
||||
|
||||
if (CollectionUtil.isNotEmpty(ancestorDepts)) {
|
||||
// 提取所有leader字段的内容
|
||||
List<String> leaderNames = ancestorDepts.stream()
|
||||
.map(SysDept::getLeader)
|
||||
.filter(StringUtils::isNotBlank)
|
||||
leaderUserIds = ancestorDepts.stream()
|
||||
.map(WmsDept::getLeader)
|
||||
.filter(Objects::nonNull)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 根据leader名称查询对应的用户ID
|
||||
if (!leaderNames.isEmpty()) {
|
||||
List<SysUser> leaders = userMapper.selectList(new LambdaQueryWrapper<SysUser>()
|
||||
.in(SysUser::getNickName, leaderNames));
|
||||
|
||||
if (CollectionUtil.isNotEmpty(leaders)) {
|
||||
leaderUserIds = leaders.stream()
|
||||
.map(SysUser::getUserId)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
// // 根据leader名称查询对应的用户ID
|
||||
// if (!leaderNames.isEmpty()) {
|
||||
// List<SysUser> leaders = userMapper.selectList(new LambdaQueryWrapper<SysUser>()
|
||||
// .in(SysUser::getNickName, leaderNames));
|
||||
//
|
||||
// if (CollectionUtil.isNotEmpty(leaders)) {
|
||||
// leaderUserIds = leaders.stream()
|
||||
// .map(SysUser::getUserId)
|
||||
// .distinct()
|
||||
// .collect(Collectors.toList());
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user