feat(approval): 完善审批流程并新增部门管理功能
- 修改审批任务服务接口返回类型为Map以支持复杂数据结构 - 新增WMS部门管理模块,包括实体、业务对象、控制器和实现类 - 添加部门树形结构支持和部门负责人管理功能 - 更新审批流程逻辑,集成部门领导审批机制 - 重构审批任务查询方法以关联审批详情和申请人信息 - 添加部门ID字段到请假和外出申请相关实体中 - 优化多级审批流程,支持基于部门层级的审批链路 - 移除废弃的导入语句并整理代码结构
This commit is contained in:
@@ -2,6 +2,7 @@ package com.klp.controller;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
@@ -40,7 +41,7 @@ public class WmsApprovalTaskController extends BaseController {
|
||||
* 查询审批任务列表
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<WmsApprovalTaskVo> list(WmsApprovalTaskBo bo, PageQuery pageQuery) {
|
||||
public TableDataInfo<Map<String, Object>> list(WmsApprovalTaskBo bo, PageQuery pageQuery) {
|
||||
return iWmsApprovalTaskService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
package com.klp.controller;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Arrays;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.validation.constraints.*;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import com.klp.common.annotation.RepeatSubmit;
|
||||
import com.klp.common.annotation.Log;
|
||||
import com.klp.common.core.controller.BaseController;
|
||||
import com.klp.common.core.domain.PageQuery;
|
||||
import com.klp.common.core.domain.R;
|
||||
import com.klp.common.core.validate.AddGroup;
|
||||
import com.klp.common.core.validate.EditGroup;
|
||||
import com.klp.common.enums.BusinessType;
|
||||
import com.klp.common.utils.poi.ExcelUtil;
|
||||
import com.klp.domain.vo.WmsDeptVo;
|
||||
import com.klp.domain.bo.WmsDeptBo;
|
||||
import com.klp.service.IWmsDeptService;
|
||||
|
||||
/**
|
||||
* WMS系统部门(树形结构)
|
||||
*
|
||||
* @author klp
|
||||
* @date 2026-03-02
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/wms/dept")
|
||||
public class WmsDeptController extends BaseController {
|
||||
|
||||
private final IWmsDeptService iWmsDeptService;
|
||||
|
||||
/**
|
||||
* 查询WMS系统部门(树形结构)列表
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
public R<List<WmsDeptVo>> list(WmsDeptBo bo) {
|
||||
List<WmsDeptVo> list = iWmsDeptService.queryList(bo);
|
||||
return R.ok(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出WMS系统部门(树形结构)列表
|
||||
*/
|
||||
@Log(title = "WMS系统部门(树形结构)", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(WmsDeptBo bo, HttpServletResponse response) {
|
||||
List<WmsDeptVo> list = iWmsDeptService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "WMS系统部门(树形结构)", WmsDeptVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取WMS系统部门(树形结构)详细信息
|
||||
*
|
||||
* @param deptId 主键
|
||||
*/
|
||||
@GetMapping("/{deptId}")
|
||||
public R<WmsDeptVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long deptId) {
|
||||
return R.ok(iWmsDeptService.queryById(deptId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增WMS系统部门(树形结构)
|
||||
*/
|
||||
@Log(title = "WMS系统部门(树形结构)", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody WmsDeptBo bo) {
|
||||
return toAjax(iWmsDeptService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改WMS系统部门(树形结构)
|
||||
*/
|
||||
@Log(title = "WMS系统部门(树形结构)", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WmsDeptBo bo) {
|
||||
return toAjax(iWmsDeptService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除WMS系统部门(树形结构)
|
||||
*
|
||||
* @param deptIds 主键串
|
||||
*/
|
||||
@Log(title = "WMS系统部门(树形结构)", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{deptIds}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] deptIds) {
|
||||
return toAjax(iWmsDeptService.deleteWithValidByIds(Arrays.asList(deptIds), true));
|
||||
}
|
||||
}
|
||||
53
klp-wms/src/main/java/com/klp/domain/WmsDept.java
Normal file
53
klp-wms/src/main/java/com/klp/domain/WmsDept.java
Normal file
@@ -0,0 +1,53 @@
|
||||
package com.klp.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import com.klp.common.core.domain.TreeEntity;
|
||||
|
||||
/**
|
||||
* WMS系统部门(树形结构)对象 wms_dept
|
||||
*
|
||||
* @author klp
|
||||
* @date 2026-03-02
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("wms_dept")
|
||||
public class WmsDept extends TreeEntity<WmsDept> {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
/**
|
||||
* 部门id
|
||||
*/
|
||||
@TableId(value = "dept_id")
|
||||
private Long deptId;
|
||||
/**
|
||||
* 部门名称
|
||||
*/
|
||||
private String deptName;
|
||||
/**
|
||||
* 部门显示顺序(同级排序)
|
||||
*/
|
||||
private Long orderNum;
|
||||
/**
|
||||
* 部门负责人
|
||||
*/
|
||||
private Long leader;
|
||||
/**
|
||||
* 部门状态(0正常 1停用)
|
||||
*/
|
||||
private String status;
|
||||
/**
|
||||
* 删除标志(0=正常,1=已删除)
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer delFlag;
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
@@ -79,5 +79,8 @@ public class WmsApprovalBo extends BaseEntity {
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
//部门id
|
||||
private Long deptId;
|
||||
|
||||
|
||||
}
|
||||
|
||||
51
klp-wms/src/main/java/com/klp/domain/bo/WmsDeptBo.java
Normal file
51
klp-wms/src/main/java/com/klp/domain/bo/WmsDeptBo.java
Normal file
@@ -0,0 +1,51 @@
|
||||
package com.klp.domain.bo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import javax.validation.constraints.*;
|
||||
|
||||
import com.klp.common.core.domain.TreeEntity;
|
||||
|
||||
/**
|
||||
* WMS系统部门(树形结构)业务对象 wms_dept
|
||||
*
|
||||
* @author klp
|
||||
* @date 2026-03-02
|
||||
*/
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class WmsDeptBo extends TreeEntity<WmsDeptBo> {
|
||||
|
||||
/**
|
||||
* 部门id
|
||||
*/
|
||||
private Long deptId;
|
||||
|
||||
/**
|
||||
* 部门名称
|
||||
*/
|
||||
private String deptName;
|
||||
|
||||
/**
|
||||
* 部门显示顺序(同级排序)
|
||||
*/
|
||||
private Long orderNum;
|
||||
|
||||
/**
|
||||
* 部门负责人
|
||||
*/
|
||||
private Long leader;
|
||||
|
||||
/**
|
||||
* 部门状态(0正常 1停用)
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
|
||||
}
|
||||
@@ -96,5 +96,8 @@ public class WmsLeaveRequestBo extends BaseEntity {
|
||||
// 审批类型
|
||||
private String approvalType;
|
||||
|
||||
// 部门id
|
||||
private Long deptId;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -78,4 +78,9 @@ public class WmsOutRequestBo extends BaseEntity {
|
||||
// 审批人
|
||||
private String approverName;
|
||||
|
||||
private String approvalType;
|
||||
|
||||
// 部门id
|
||||
private Long deptId;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.klp.domain.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.klp.common.convert.ExcelDictConvert;
|
||||
@@ -15,6 +16,7 @@ import java.util.Date;
|
||||
* @date 2026-01-20
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class WmsApprovalTaskVo {
|
||||
|
||||
private Long taskId;
|
||||
|
||||
68
klp-wms/src/main/java/com/klp/domain/vo/WmsDeptVo.java
Normal file
68
klp-wms/src/main/java/com/klp/domain/vo/WmsDeptVo.java
Normal file
@@ -0,0 +1,68 @@
|
||||
package com.klp.domain.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.klp.common.annotation.ExcelDictFormat;
|
||||
import com.klp.common.convert.ExcelDictConvert;
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
/**
|
||||
* WMS系统部门(树形结构)视图对象 wms_dept
|
||||
*
|
||||
* @author klp
|
||||
* @date 2026-03-02
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class WmsDeptVo {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 部门id
|
||||
*/
|
||||
@ExcelProperty(value = "部门id")
|
||||
private Long deptId;
|
||||
|
||||
/**
|
||||
* 父部门id(0表示顶级部门)
|
||||
*/
|
||||
@ExcelProperty(value = "父部门id", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "0=表示顶级部门")
|
||||
private Long parentId;
|
||||
|
||||
/**
|
||||
* 部门名称
|
||||
*/
|
||||
@ExcelProperty(value = "部门名称")
|
||||
private String deptName;
|
||||
|
||||
/**
|
||||
* 部门显示顺序(同级排序)
|
||||
*/
|
||||
@ExcelProperty(value = "部门显示顺序", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "同=级排序")
|
||||
private Long orderNum;
|
||||
|
||||
/**
|
||||
* 部门负责人
|
||||
*/
|
||||
@ExcelProperty(value = "部门负责人")
|
||||
private Long leader;
|
||||
|
||||
/**
|
||||
* 部门状态(0正常 1停用)
|
||||
*/
|
||||
@ExcelProperty(value = "部门状态", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "0=正常,1=停用")
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
|
||||
}
|
||||
15
klp-wms/src/main/java/com/klp/mapper/WmsDeptMapper.java
Normal file
15
klp-wms/src/main/java/com/klp/mapper/WmsDeptMapper.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package com.klp.mapper;
|
||||
|
||||
import com.klp.domain.WmsDept;
|
||||
import com.klp.domain.vo.WmsDeptVo;
|
||||
import com.klp.common.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* WMS系统部门(树形结构)Mapper接口
|
||||
*
|
||||
* @author klp
|
||||
* @date 2026-03-02
|
||||
*/
|
||||
public interface WmsDeptMapper extends BaseMapperPlus<WmsDeptMapper, WmsDept, WmsDeptVo> {
|
||||
|
||||
}
|
||||
@@ -8,6 +8,7 @@ import com.klp.common.core.domain.PageQuery;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 审批任务Service接口
|
||||
@@ -19,7 +20,7 @@ public interface IWmsApprovalTaskService {
|
||||
|
||||
WmsApprovalTaskVo queryById(Long taskId);
|
||||
|
||||
TableDataInfo<WmsApprovalTaskVo> queryPageList(WmsApprovalTaskBo bo, PageQuery pageQuery);
|
||||
TableDataInfo<Map<String, Object>> queryPageList(WmsApprovalTaskBo bo, PageQuery pageQuery);
|
||||
|
||||
List<WmsApprovalTaskVo> queryList(WmsApprovalTaskBo bo);
|
||||
|
||||
|
||||
43
klp-wms/src/main/java/com/klp/service/IWmsDeptService.java
Normal file
43
klp-wms/src/main/java/com/klp/service/IWmsDeptService.java
Normal file
@@ -0,0 +1,43 @@
|
||||
package com.klp.service;
|
||||
|
||||
import com.klp.domain.WmsDept;
|
||||
import com.klp.domain.vo.WmsDeptVo;
|
||||
import com.klp.domain.bo.WmsDeptBo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* WMS系统部门(树形结构)Service接口
|
||||
*
|
||||
* @author klp
|
||||
* @date 2026-03-02
|
||||
*/
|
||||
public interface IWmsDeptService {
|
||||
|
||||
/**
|
||||
* 查询WMS系统部门(树形结构)
|
||||
*/
|
||||
WmsDeptVo queryById(Long deptId);
|
||||
|
||||
|
||||
/**
|
||||
* 查询WMS系统部门(树形结构)列表
|
||||
*/
|
||||
List<WmsDeptVo> queryList(WmsDeptBo bo);
|
||||
|
||||
/**
|
||||
* 新增WMS系统部门(树形结构)
|
||||
*/
|
||||
Boolean insertByBo(WmsDeptBo bo);
|
||||
|
||||
/**
|
||||
* 修改WMS系统部门(树形结构)
|
||||
*/
|
||||
Boolean updateByBo(WmsDeptBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除WMS系统部门(树形结构)信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
}
|
||||
@@ -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());
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,21 +1,30 @@
|
||||
package com.klp.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.klp.common.core.page.TableDataInfo;
|
||||
import com.klp.common.core.domain.PageQuery;
|
||||
import com.klp.common.utils.StringUtils;
|
||||
import com.klp.domain.WmsApprovalTask;
|
||||
import com.klp.domain.bo.WmsApprovalTaskBo;
|
||||
import com.klp.domain.vo.WmsApprovalTaskVo;
|
||||
import com.klp.domain.vo.WmsApprovalVo;
|
||||
import com.klp.domain.vo.WmsLeaveRequestVo;
|
||||
import com.klp.domain.vo.WmsOutRequestVo;
|
||||
import com.klp.mapper.WmsApprovalTaskMapper;
|
||||
import com.klp.mapper.WmsApprovalMapper;
|
||||
import com.klp.mapper.WmsLeaveRequestMapper;
|
||||
import com.klp.mapper.WmsOutRequestMapper;
|
||||
import com.klp.service.IWmsApprovalTaskService;
|
||||
import com.klp.system.service.ISysUserService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 审批任务Service业务层处理
|
||||
@@ -28,6 +37,10 @@ import java.util.List;
|
||||
public class WmsApprovalTaskServiceImpl implements IWmsApprovalTaskService {
|
||||
|
||||
private final WmsApprovalTaskMapper baseMapper;
|
||||
private final WmsApprovalMapper approvalMapper;
|
||||
private final WmsLeaveRequestMapper leaveRequestMapper;
|
||||
private final WmsOutRequestMapper outRequestMapper;
|
||||
private final ISysUserService userService;
|
||||
|
||||
@Override
|
||||
public WmsApprovalTaskVo queryById(Long taskId) {
|
||||
@@ -35,10 +48,111 @@ public class WmsApprovalTaskServiceImpl implements IWmsApprovalTaskService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public TableDataInfo<WmsApprovalTaskVo> queryPageList(WmsApprovalTaskBo bo, PageQuery pageQuery) {
|
||||
public TableDataInfo<Map<String, Object>> queryPageList(WmsApprovalTaskBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<WmsApprovalTask> lqw = buildQueryWrapper(bo);
|
||||
Page<WmsApprovalTaskVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
List<WmsApprovalTaskVo> taskList = result.getRecords();
|
||||
|
||||
if (CollectionUtil.isEmpty(taskList)) {
|
||||
return TableDataInfo.build(new ArrayList<>());
|
||||
}
|
||||
|
||||
// 收集所有approvalId,查询审批信息
|
||||
List<Long> approvalIds = taskList.stream()
|
||||
.map(WmsApprovalTaskVo::getApprovalId)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
|
||||
List<WmsApprovalVo> approvalList = approvalMapper.selectVoList(
|
||||
Wrappers.<com.klp.domain.WmsApproval>lambdaQuery()
|
||||
.in(com.klp.domain.WmsApproval::getApprovalId, approvalIds)
|
||||
);
|
||||
|
||||
Map<Long, WmsApprovalVo> approvalMap = approvalList.stream()
|
||||
.collect(Collectors.toMap(WmsApprovalVo::getApprovalId, v -> v, (a, b) -> a));
|
||||
|
||||
// 收集所有applyId,按类型分别查询
|
||||
Set<String> userNames = new HashSet<>();
|
||||
Map<String, Object> detailMap = new HashMap<>();
|
||||
|
||||
for (WmsApprovalTaskVo task : taskList) {
|
||||
WmsApprovalVo approval = approvalMap.get(task.getApprovalId());
|
||||
if (approval == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
String applyType = approval.getApplyType();
|
||||
Long applyId = approval.getApplyId();
|
||||
|
||||
if (StringUtils.isNotBlank(applyType) && applyId != null) {
|
||||
if ("leave".equalsIgnoreCase(applyType)) {
|
||||
WmsLeaveRequestVo leaveDetail = leaveRequestMapper.selectVoById(applyId);
|
||||
detailMap.put("leave_" + applyId, leaveDetail);
|
||||
if (leaveDetail != null && StringUtils.isNotBlank(leaveDetail.getCreateBy())) {
|
||||
userNames.add(leaveDetail.getCreateBy());
|
||||
}
|
||||
} else if ("out".equalsIgnoreCase(applyType)) {
|
||||
WmsOutRequestVo outDetail = outRequestMapper.selectVoById(applyId);
|
||||
detailMap.put("out_" + applyId, outDetail);
|
||||
if (outDetail != null && StringUtils.isNotBlank(outDetail.getCreateBy())) {
|
||||
userNames.add(outDetail.getCreateBy());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 批量查询昵称
|
||||
Map<String, String> nickMap = Collections.emptyMap();
|
||||
if (!userNames.isEmpty()) {
|
||||
nickMap = userService.selectNickNameMapByUserNames(new ArrayList<>(userNames));
|
||||
}
|
||||
|
||||
// 组装返回结果
|
||||
List<Map<String, Object>> resultList = new ArrayList<>();
|
||||
for (WmsApprovalTaskVo task : taskList) {
|
||||
Map<String, Object> item = new HashMap<>();
|
||||
item.put("task", task);
|
||||
|
||||
WmsApprovalVo approval = approvalMap.get(task.getApprovalId());
|
||||
if (approval != null) {
|
||||
item.put("approval", approval);
|
||||
|
||||
String applyType = approval.getApplyType();
|
||||
Long applyId = approval.getApplyId();
|
||||
|
||||
if (StringUtils.isNotBlank(applyType) && applyId != null) {
|
||||
if ("leave".equalsIgnoreCase(applyType)) {
|
||||
WmsLeaveRequestVo leaveDetail = (WmsLeaveRequestVo) detailMap.get("leave_" + applyId);
|
||||
if (leaveDetail != null) {
|
||||
if (StringUtils.isNotBlank(leaveDetail.getCreateBy())) {
|
||||
leaveDetail.setCreateByName(nickMap.getOrDefault(leaveDetail.getCreateBy(), leaveDetail.getCreateBy()));
|
||||
}
|
||||
item.put("detail", leaveDetail);
|
||||
item.put("applyType", "leave");
|
||||
}
|
||||
} else if ("out".equalsIgnoreCase(applyType)) {
|
||||
WmsOutRequestVo outDetail = (WmsOutRequestVo) detailMap.get("out_" + applyId);
|
||||
if (outDetail != null) {
|
||||
if (StringUtils.isNotBlank(outDetail.getCreateBy())) {
|
||||
outDetail.setCreateByName(nickMap.getOrDefault(outDetail.getCreateBy(), outDetail.getCreateBy()));
|
||||
}
|
||||
item.put("detail", outDetail);
|
||||
item.put("applyType", "out");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
resultList.add(item);
|
||||
}
|
||||
|
||||
Page<Map<String, Object>> resultPage = new Page<>();
|
||||
resultPage.setRecords(resultList);
|
||||
resultPage.setTotal(result.getTotal());
|
||||
resultPage.setSize(result.getSize());
|
||||
resultPage.setCurrent(result.getCurrent());
|
||||
resultPage.setPages(result.getPages());
|
||||
|
||||
return TableDataInfo.build(resultPage);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
package com.klp.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.klp.common.utils.StringUtils;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.klp.domain.bo.WmsDeptBo;
|
||||
import com.klp.domain.vo.WmsDeptVo;
|
||||
import com.klp.domain.WmsDept;
|
||||
import com.klp.mapper.WmsDeptMapper;
|
||||
import com.klp.service.IWmsDeptService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* WMS系统部门(树形结构)Service业务层处理
|
||||
*
|
||||
* @author klp
|
||||
* @date 2026-03-02
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class WmsDeptServiceImpl implements IWmsDeptService {
|
||||
|
||||
private final WmsDeptMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询WMS系统部门(树形结构)
|
||||
*/
|
||||
@Override
|
||||
public WmsDeptVo queryById(Long deptId){
|
||||
return baseMapper.selectVoById(deptId);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询WMS系统部门(树形结构)列表
|
||||
*/
|
||||
@Override
|
||||
public List<WmsDeptVo> queryList(WmsDeptBo bo) {
|
||||
LambdaQueryWrapper<WmsDept> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<WmsDept> buildQueryWrapper(WmsDeptBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<WmsDept> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(bo.getParentId() != null, WmsDept::getParentId, bo.getParentId());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getDeptName()), WmsDept::getDeptName, bo.getDeptName());
|
||||
lqw.eq(bo.getOrderNum() != null, WmsDept::getOrderNum, bo.getOrderNum());
|
||||
lqw.eq(bo.getLeader() != null, WmsDept::getLeader, bo.getLeader());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), WmsDept::getStatus, bo.getStatus());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增WMS系统部门(树形结构)
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(WmsDeptBo bo) {
|
||||
WmsDept add = BeanUtil.toBean(bo, WmsDept.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setDeptId(add.getDeptId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改WMS系统部门(树形结构)
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(WmsDeptBo bo) {
|
||||
WmsDept update = BeanUtil.toBean(bo, WmsDept.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(WmsDept entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除WMS系统部门(树形结构)
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteBatchIds(ids) > 0;
|
||||
}
|
||||
}
|
||||
@@ -130,6 +130,7 @@ public class WmsLeaveRequestServiceImpl implements IWmsLeaveRequestService {
|
||||
approval.setApprovalStatus("待审批");
|
||||
approval.setApproverName(bo.getApproverName());
|
||||
approval.setApprovalType(bo.getApprovalType());
|
||||
approval.setDeptId(bo.getDeptId());
|
||||
approvalService.insertByBo(approval);
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.klp.common.utils.StringUtils;
|
||||
import com.klp.domain.bo.WmsApprovalBo;
|
||||
import com.klp.service.IWmsApprovalService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.klp.domain.bo.WmsOutRequestBo;
|
||||
@@ -33,7 +35,7 @@ import com.klp.domain.WmsApproval;
|
||||
public class WmsOutRequestServiceImpl implements IWmsOutRequestService {
|
||||
|
||||
private final WmsOutRequestMapper baseMapper;
|
||||
private final WmsApprovalMapper approvalMapper;
|
||||
private final IWmsApprovalService approvalService;
|
||||
|
||||
/**
|
||||
* 查询员工外出申请
|
||||
@@ -86,13 +88,14 @@ public class WmsOutRequestServiceImpl implements IWmsOutRequestService {
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setOutId(add.getOutId());
|
||||
WmsApproval approval = new WmsApproval();
|
||||
WmsApprovalBo approval = new WmsApprovalBo();
|
||||
approval.setApplyType("out");
|
||||
approval.setApplyId(add.getOutId());
|
||||
approval.setApprovalStatus("待审批");
|
||||
approval.setApproverName(bo.getApproverName());
|
||||
approvalMapper.insert(approval);
|
||||
approval.setApprovalType(bo.getApprovalType());
|
||||
approval.setDeptId(bo.getDeptId());
|
||||
approvalService.insertByBo(approval);
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user