From 05447c21effe30f0ddff11331109032c048cd652 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Mon, 2 Mar 2026 14:41:43 +0800 Subject: [PATCH] =?UTF-8?q?feat(approval):=20=E5=AE=8C=E5=96=84=E5=AE=A1?= =?UTF-8?q?=E6=89=B9=E6=B5=81=E7=A8=8B=E5=B9=B6=E6=96=B0=E5=A2=9E=E9=83=A8?= =?UTF-8?q?=E9=97=A8=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改审批任务服务接口返回类型为Map以支持复杂数据结构 - 新增WMS部门管理模块,包括实体、业务对象、控制器和实现类 - 添加部门树形结构支持和部门负责人管理功能 - 更新审批流程逻辑,集成部门领导审批机制 - 重构审批任务查询方法以关联审批详情和申请人信息 - 添加部门ID字段到请假和外出申请相关实体中 - 优化多级审批流程,支持基于部门层级的审批链路 - 移除废弃的导入语句并整理代码结构 --- .../controller/WmsApprovalTaskController.java | 3 +- .../com/klp/controller/WmsDeptController.java | 99 ++++++++++++++ .../src/main/java/com/klp/domain/WmsDept.java | 53 ++++++++ .../java/com/klp/domain/bo/WmsApprovalBo.java | 3 + .../java/com/klp/domain/bo/WmsDeptBo.java | 51 ++++++++ .../com/klp/domain/bo/WmsLeaveRequestBo.java | 3 + .../com/klp/domain/bo/WmsOutRequestBo.java | 5 + .../com/klp/domain/vo/WmsApprovalTaskVo.java | 2 + .../java/com/klp/domain/vo/WmsDeptVo.java | 68 ++++++++++ .../java/com/klp/mapper/WmsDeptMapper.java | 15 +++ .../klp/service/IWmsApprovalTaskService.java | 3 +- .../java/com/klp/service/IWmsDeptService.java | 43 ++++++ .../service/impl/WmsApprovalServiceImpl.java | 74 +++++------ .../impl/WmsApprovalTaskServiceImpl.java | 122 +++++++++++++++++- .../klp/service/impl/WmsDeptServiceImpl.java | 101 +++++++++++++++ .../impl/WmsLeaveRequestServiceImpl.java | 1 + .../impl/WmsOutRequestServiceImpl.java | 11 +- .../resources/mapper/klp/WmsDeptMapper.xml | 23 ++++ 18 files changed, 628 insertions(+), 52 deletions(-) create mode 100644 klp-wms/src/main/java/com/klp/controller/WmsDeptController.java create mode 100644 klp-wms/src/main/java/com/klp/domain/WmsDept.java create mode 100644 klp-wms/src/main/java/com/klp/domain/bo/WmsDeptBo.java create mode 100644 klp-wms/src/main/java/com/klp/domain/vo/WmsDeptVo.java create mode 100644 klp-wms/src/main/java/com/klp/mapper/WmsDeptMapper.java create mode 100644 klp-wms/src/main/java/com/klp/service/IWmsDeptService.java create mode 100644 klp-wms/src/main/java/com/klp/service/impl/WmsDeptServiceImpl.java create mode 100644 klp-wms/src/main/resources/mapper/klp/WmsDeptMapper.xml diff --git a/klp-wms/src/main/java/com/klp/controller/WmsApprovalTaskController.java b/klp-wms/src/main/java/com/klp/controller/WmsApprovalTaskController.java index 3b6fcc90..113e98d5 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsApprovalTaskController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsApprovalTaskController.java @@ -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 list(WmsApprovalTaskBo bo, PageQuery pageQuery) { + public TableDataInfo> list(WmsApprovalTaskBo bo, PageQuery pageQuery) { return iWmsApprovalTaskService.queryPageList(bo, pageQuery); } diff --git a/klp-wms/src/main/java/com/klp/controller/WmsDeptController.java b/klp-wms/src/main/java/com/klp/controller/WmsDeptController.java new file mode 100644 index 00000000..841ebd54 --- /dev/null +++ b/klp-wms/src/main/java/com/klp/controller/WmsDeptController.java @@ -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(WmsDeptBo bo) { + List 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 list = iWmsDeptService.queryList(bo); + ExcelUtil.exportExcel(list, "WMS系统部门(树形结构)", WmsDeptVo.class, response); + } + + /** + * 获取WMS系统部门(树形结构)详细信息 + * + * @param deptId 主键 + */ + @GetMapping("/{deptId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long deptId) { + return R.ok(iWmsDeptService.queryById(deptId)); + } + + /** + * 新增WMS系统部门(树形结构) + */ + @Log(title = "WMS系统部门(树形结构)", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody WmsDeptBo bo) { + return toAjax(iWmsDeptService.insertByBo(bo)); + } + + /** + * 修改WMS系统部门(树形结构) + */ + @Log(title = "WMS系统部门(树形结构)", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R 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 remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] deptIds) { + return toAjax(iWmsDeptService.deleteWithValidByIds(Arrays.asList(deptIds), true)); + } +} diff --git a/klp-wms/src/main/java/com/klp/domain/WmsDept.java b/klp-wms/src/main/java/com/klp/domain/WmsDept.java new file mode 100644 index 00000000..c670deda --- /dev/null +++ b/klp-wms/src/main/java/com/klp/domain/WmsDept.java @@ -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 { + + 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; + +} diff --git a/klp-wms/src/main/java/com/klp/domain/bo/WmsApprovalBo.java b/klp-wms/src/main/java/com/klp/domain/bo/WmsApprovalBo.java index c5c8d130..39767216 100644 --- a/klp-wms/src/main/java/com/klp/domain/bo/WmsApprovalBo.java +++ b/klp-wms/src/main/java/com/klp/domain/bo/WmsApprovalBo.java @@ -79,5 +79,8 @@ public class WmsApprovalBo extends BaseEntity { */ private String remark; + //部门id + private Long deptId; + } diff --git a/klp-wms/src/main/java/com/klp/domain/bo/WmsDeptBo.java b/klp-wms/src/main/java/com/klp/domain/bo/WmsDeptBo.java new file mode 100644 index 00000000..f52bd6f1 --- /dev/null +++ b/klp-wms/src/main/java/com/klp/domain/bo/WmsDeptBo.java @@ -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 { + + /** + * 部门id + */ + private Long deptId; + + /** + * 部门名称 + */ + private String deptName; + + /** + * 部门显示顺序(同级排序) + */ + private Long orderNum; + + /** + * 部门负责人 + */ + private Long leader; + + /** + * 部门状态(0正常 1停用) + */ + private String status; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/klp-wms/src/main/java/com/klp/domain/bo/WmsLeaveRequestBo.java b/klp-wms/src/main/java/com/klp/domain/bo/WmsLeaveRequestBo.java index d848a93f..c0685bcd 100644 --- a/klp-wms/src/main/java/com/klp/domain/bo/WmsLeaveRequestBo.java +++ b/klp-wms/src/main/java/com/klp/domain/bo/WmsLeaveRequestBo.java @@ -96,5 +96,8 @@ public class WmsLeaveRequestBo extends BaseEntity { // 审批类型 private String approvalType; + // 部门id + private Long deptId; + } diff --git a/klp-wms/src/main/java/com/klp/domain/bo/WmsOutRequestBo.java b/klp-wms/src/main/java/com/klp/domain/bo/WmsOutRequestBo.java index 95c769f3..b6d5c8e8 100644 --- a/klp-wms/src/main/java/com/klp/domain/bo/WmsOutRequestBo.java +++ b/klp-wms/src/main/java/com/klp/domain/bo/WmsOutRequestBo.java @@ -78,4 +78,9 @@ public class WmsOutRequestBo extends BaseEntity { // 审批人 private String approverName; + private String approvalType; + + // 部门id + private Long deptId; + } diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsApprovalTaskVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsApprovalTaskVo.java index 0ce42b54..8ad0f441 100644 --- a/klp-wms/src/main/java/com/klp/domain/vo/WmsApprovalTaskVo.java +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsApprovalTaskVo.java @@ -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; diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsDeptVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsDeptVo.java new file mode 100644 index 00000000..edb70e59 --- /dev/null +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsDeptVo.java @@ -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; + + +} diff --git a/klp-wms/src/main/java/com/klp/mapper/WmsDeptMapper.java b/klp-wms/src/main/java/com/klp/mapper/WmsDeptMapper.java new file mode 100644 index 00000000..bd7677d1 --- /dev/null +++ b/klp-wms/src/main/java/com/klp/mapper/WmsDeptMapper.java @@ -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 { + +} diff --git a/klp-wms/src/main/java/com/klp/service/IWmsApprovalTaskService.java b/klp-wms/src/main/java/com/klp/service/IWmsApprovalTaskService.java index 7c864f7a..fb9b19c7 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsApprovalTaskService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsApprovalTaskService.java @@ -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 queryPageList(WmsApprovalTaskBo bo, PageQuery pageQuery); + TableDataInfo> queryPageList(WmsApprovalTaskBo bo, PageQuery pageQuery); List queryList(WmsApprovalTaskBo bo); diff --git a/klp-wms/src/main/java/com/klp/service/IWmsDeptService.java b/klp-wms/src/main/java/com/klp/service/IWmsDeptService.java new file mode 100644 index 00000000..9313f2f0 --- /dev/null +++ b/klp-wms/src/main/java/com/klp/service/IWmsDeptService.java @@ -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 queryList(WmsDeptBo bo); + + /** + * 新增WMS系统部门(树形结构) + */ + Boolean insertByBo(WmsDeptBo bo); + + /** + * 修改WMS系统部门(树形结构) + */ + Boolean updateByBo(WmsDeptBo bo); + + /** + * 校验并批量删除WMS系统部门(树形结构)信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsApprovalServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsApprovalServiceImpl.java index 95008a11..558bb5e3 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsApprovalServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsApprovalServiceImpl.java @@ -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 leaderUserIds = getDeptLeaders(leaveRequest.getApplicantDeptName()); + List 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().eq(WmsApproval::getApprovalId, approvalId)); - List currentUser = userMapper.selectList(new LambdaQueryWrapper().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 getDeptLeaders(String applicantDeptName) { + private List getDeptLeaders(Long deptId) { List leaderUserIds = new ArrayList<>(); - if (StringUtils.isBlank(applicantDeptName)) { - return leaderUserIds; - } - - // 根据部门名称查询部门信息 - SysDept dept = deptMapper.selectOne(new LambdaQueryWrapper() - .eq(SysDept::getDeptName, applicantDeptName)); - - if (dept == null) { + if (deptId == null) { return leaderUserIds; } // 获取部门的所有祖先部门ID(包括自己) List 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 ancestorDepts = deptMapper.selectList(new LambdaQueryWrapper() - .in(SysDept::getDeptId, ancestorDeptIds)); + List ancestorDepts = wmsDeptMapper.selectList(new LambdaQueryWrapper() + .in(WmsDept::getDeptId, ancestorDeptIds)); if (CollectionUtil.isNotEmpty(ancestorDepts)) { // 提取所有leader字段的内容 - List 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 leaders = userMapper.selectList(new LambdaQueryWrapper() - .in(SysUser::getNickName, leaderNames)); - - if (CollectionUtil.isNotEmpty(leaders)) { - leaderUserIds = leaders.stream() - .map(SysUser::getUserId) - .distinct() - .collect(Collectors.toList()); - } - } +// // 根据leader名称查询对应的用户ID +// if (!leaderNames.isEmpty()) { +// List leaders = userMapper.selectList(new LambdaQueryWrapper() +// .in(SysUser::getNickName, leaderNames)); +// +// if (CollectionUtil.isNotEmpty(leaders)) { +// leaderUserIds = leaders.stream() +// .map(SysUser::getUserId) +// .distinct() +// .collect(Collectors.toList()); +// } +// } } } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsApprovalTaskServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsApprovalTaskServiceImpl.java index 7a35d419..35a99fa7 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsApprovalTaskServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsApprovalTaskServiceImpl.java @@ -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 queryPageList(WmsApprovalTaskBo bo, PageQuery pageQuery) { + public TableDataInfo> queryPageList(WmsApprovalTaskBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); - return TableDataInfo.build(result); + List taskList = result.getRecords(); + + if (CollectionUtil.isEmpty(taskList)) { + return TableDataInfo.build(new ArrayList<>()); + } + + // 收集所有approvalId,查询审批信息 + List approvalIds = taskList.stream() + .map(WmsApprovalTaskVo::getApprovalId) + .distinct() + .collect(Collectors.toList()); + + List approvalList = approvalMapper.selectVoList( + Wrappers.lambdaQuery() + .in(com.klp.domain.WmsApproval::getApprovalId, approvalIds) + ); + + Map approvalMap = approvalList.stream() + .collect(Collectors.toMap(WmsApprovalVo::getApprovalId, v -> v, (a, b) -> a)); + + // 收集所有applyId,按类型分别查询 + Set userNames = new HashSet<>(); + Map 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 nickMap = Collections.emptyMap(); + if (!userNames.isEmpty()) { + nickMap = userService.selectNickNameMapByUserNames(new ArrayList<>(userNames)); + } + + // 组装返回结果 + List> resultList = new ArrayList<>(); + for (WmsApprovalTaskVo task : taskList) { + Map 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> 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 diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsDeptServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsDeptServiceImpl.java new file mode 100644 index 00000000..f9e015cc --- /dev/null +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsDeptServiceImpl.java @@ -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 queryList(WmsDeptBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(WmsDeptBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper 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 ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsLeaveRequestServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsLeaveRequestServiceImpl.java index a26b2af4..8064f080 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsLeaveRequestServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsLeaveRequestServiceImpl.java @@ -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); } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsOutRequestServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsOutRequestServiceImpl.java index 0b0fd1f0..b33c732e 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsOutRequestServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsOutRequestServiceImpl.java @@ -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; } diff --git a/klp-wms/src/main/resources/mapper/klp/WmsDeptMapper.xml b/klp-wms/src/main/resources/mapper/klp/WmsDeptMapper.xml new file mode 100644 index 00000000..3adbc4b0 --- /dev/null +++ b/klp-wms/src/main/resources/mapper/klp/WmsDeptMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + +