diff --git a/klp-wms/src/main/java/com/klp/controller/WmsApprovalController.java b/klp-wms/src/main/java/com/klp/controller/WmsApprovalController.java index 463d50b6..54174cf0 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsApprovalController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsApprovalController.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 WmsApprovalController extends BaseController { * 查询通用审批(支持请假/外出等申请的审批)列表 */ @GetMapping("/list") - public TableDataInfo list(WmsApprovalBo bo, PageQuery pageQuery) { + public TableDataInfo> list(WmsApprovalBo bo, PageQuery pageQuery) { return iWmsApprovalService.queryPageList(bo, pageQuery); } @@ -60,7 +61,7 @@ public class WmsApprovalController extends BaseController { * @param approvalId 主键 */ @GetMapping("/{approvalId}") - public R getInfo(@NotNull(message = "主键不能为空") + public R> getInfo(@NotNull(message = "主键不能为空") @PathVariable Long approvalId) { return R.ok(iWmsApprovalService.queryById(approvalId)); } diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsLeaveRequestVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsLeaveRequestVo.java index 6ec48a63..b84bfbc4 100644 --- a/klp-wms/src/main/java/com/klp/domain/vo/WmsLeaveRequestVo.java +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsLeaveRequestVo.java @@ -93,5 +93,7 @@ public class WmsLeaveRequestVo extends BaseEntity { @ExcelProperty(value = "备注") private String remark; + private String createByName; + } diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsOutRequestVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsOutRequestVo.java index 7e9897c2..af5b8618 100644 --- a/klp-wms/src/main/java/com/klp/domain/vo/WmsOutRequestVo.java +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsOutRequestVo.java @@ -7,6 +7,7 @@ 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 com.klp.common.core.domain.BaseEntity; import lombok.Data; @@ -18,7 +19,7 @@ import lombok.Data; */ @Data @ExcelIgnoreUnannotated -public class WmsOutRequestVo { +public class WmsOutRequestVo extends BaseEntity { private static final long serialVersionUID = 1L; @@ -91,5 +92,7 @@ public class WmsOutRequestVo { @ExcelProperty(value = "备注") private String remark; + private String createByName; + } diff --git a/klp-wms/src/main/java/com/klp/service/IWmsApprovalService.java b/klp-wms/src/main/java/com/klp/service/IWmsApprovalService.java index 25ea18c6..0cb3f694 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsApprovalService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsApprovalService.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接口 @@ -20,12 +21,12 @@ public interface IWmsApprovalService { /** * 查询通用审批(支持请假/外出等申请的审批) */ - WmsApprovalVo queryById(Long approvalId); + Map queryById(Long approvalId); /** * 查询通用审批(支持请假/外出等申请的审批)列表 */ - TableDataInfo queryPageList(WmsApprovalBo bo, PageQuery pageQuery); + TableDataInfo> queryPageList(WmsApprovalBo bo, PageQuery pageQuery); /** * 查询通用审批(支持请假/外出等申请的审批)列表 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 9d09d2eb..05723a9b 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 @@ -1,12 +1,15 @@ package com.klp.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; import com.klp.common.core.page.TableDataInfo; import com.klp.common.core.domain.PageQuery; 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.core.service.UserService; import com.klp.common.utils.StringUtils; +import com.klp.system.service.ISysUserService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import com.klp.domain.bo.WmsApprovalBo; @@ -15,9 +18,13 @@ import com.klp.domain.WmsApproval; import com.klp.mapper.WmsApprovalMapper; import com.klp.service.IWmsApprovalService; -import java.util.List; -import java.util.Map; -import java.util.Collection; +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; /** * 通用审批(支持请假/外出等申请的审批)Service业务层处理 @@ -30,25 +37,137 @@ import java.util.Collection; public class WmsApprovalServiceImpl implements IWmsApprovalService { private final WmsApprovalMapper baseMapper; + private final WmsLeaveRequestMapper leaveRequestMapper; + private final WmsOutRequestMapper outRequestMapper; + private final ISysUserService userService; /** * 查询通用审批(支持请假/外出等申请的审批) */ @Override - public WmsApprovalVo queryById(Long approvalId){ - return baseMapper.selectVoById(approvalId); + public Map queryById(Long approvalId){ + Map result = new HashMap<>(); + WmsApprovalVo approval = baseMapper.selectVoById(approvalId); + if (approval == null) { + return result; + } + result.put("approval", approval); + String type = approval.getApplyType(); + Long applyId = approval.getApplyId(); + if (StringUtils.isNotBlank(type) && applyId != null) { + if ("leave".equalsIgnoreCase(type)) { + WmsLeaveRequestVo detail = leaveRequestMapper.selectVoById(applyId); + // 详情接口也可以补充昵称转换(可选) + if (detail != null && StringUtils.isNotBlank(detail.getCreateBy())) { + Map nickMap = userService.selectNickNameMapByUserNames(Collections.singletonList(detail.getCreateBy())); + detail.setCreateByName(nickMap.getOrDefault(detail.getCreateBy(), detail.getCreateBy())); + } + result.put("detail", detail); + result.put("applyType", "leave"); + } else if ("out".equalsIgnoreCase(type)) { + WmsOutRequestVo outDetail = outRequestMapper.selectVoById(applyId); + // 详情接口也可以补充昵称转换(可选) + if (outDetail != null && StringUtils.isNotBlank(outDetail.getCreateBy())) { + Map nickMap = userService.selectNickNameMapByUserNames(Collections.singletonList(outDetail.getCreateBy())); + outDetail.setCreateByName(nickMap.getOrDefault(outDetail.getCreateBy(), outDetail.getCreateBy())); + } + result.put("detail", outDetail); + result.put("applyType", "out"); + } + } + return result; } /** - * 查询通用审批(支持请假/外出等申请的审批)列表 + * 查询通用审批列表(含请假/外出详情+创建人昵称转换) */ @Override - public TableDataInfo queryPageList(WmsApprovalBo bo, PageQuery pageQuery) { + public TableDataInfo> queryPageList(WmsApprovalBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); - Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); - return TableDataInfo.build(result); + // 1. 查询审批列表分页数据 + Page approvalPage = baseMapper.selectVoPage(pageQuery.build(), lqw); + List approvalList = approvalPage.getRecords(); + + if (CollectionUtil.isEmpty(approvalList)) { + return null; + } + + // 2. 处理审批列表,拼接请假/外出详情,并收集所有需要转换的创建人账号 + List> resultList = new ArrayList<>(); + Set userNames = new HashSet<>(); // 存储所有需要查询昵称的账号 + + for (WmsApprovalVo approval : approvalList) { + Map item = new HashMap<>(); + item.put("approval", approval); // 审批基础信息 + + String applyType = approval.getApplyType(); + Long applyId = approval.getApplyId(); + Object detail = null; + + // 3. 查询请假/外出详情,并收集创建人账号 + if (StringUtils.isNotBlank(applyType) && applyId != null) { + if ("leave".equalsIgnoreCase(applyType)) { + WmsLeaveRequestVo leaveDetail = leaveRequestMapper.selectVoById(applyId); + detail = leaveDetail; + // 收集请假申请的创建人账号 + if (leaveDetail != null && StringUtils.isNotBlank(leaveDetail.getCreateBy())) { + userNames.add(leaveDetail.getCreateBy()); + } + item.put("applyType", "leave"); + } else if ("out".equalsIgnoreCase(applyType)) { + WmsOutRequestVo outDetail = outRequestMapper.selectVoById(applyId); + detail = outDetail; + // 收集外出申请的创建人账号 + if (outDetail != null && StringUtils.isNotBlank(outDetail.getCreateBy())) { + userNames.add(outDetail.getCreateBy()); + } + item.put("applyType", "out"); + } + item.put("detail", detail); + } + resultList.add(item); + } + + // 4. 批量查询昵称映射 + Map nickMap = Collections.emptyMap(); + if (!userNames.isEmpty()) { + nickMap = userService.selectNickNameMapByUserNames(new ArrayList<>(userNames)); + } + + // 5. 遍历填充请假/外出申请的创建人昵称 + for (Map item : resultList) { + Object detail = item.get("detail"); + if (detail == null || nickMap.isEmpty()) { + continue; + } + + // 区分请假/外出类型,填充创建人昵称 + if ("leave".equals(item.get("applyType"))) { + WmsLeaveRequestVo leaveDetail = (WmsLeaveRequestVo) detail; + if (StringUtils.isNotBlank(leaveDetail.getCreateBy())) { + // 填充创建人昵称 + leaveDetail.setCreateByName(nickMap.getOrDefault(leaveDetail.getCreateBy(), leaveDetail.getCreateBy())); + } + } else if ("out".equals(item.get("applyType"))) { + WmsOutRequestVo outDetail = (WmsOutRequestVo) detail; + if (StringUtils.isNotBlank(outDetail.getCreateBy())) { + outDetail.setCreateByName(nickMap.getOrDefault(outDetail.getCreateBy(), outDetail.getCreateBy())); + } + } + } + + // 6. 构建分页返回结果 + Page> resultPage = new Page<>(); + resultPage.setRecords(resultList); + resultPage.setTotal(approvalPage.getTotal()); + resultPage.setSize(approvalPage.getSize()); + resultPage.setCurrent(approvalPage.getCurrent()); + resultPage.setPages(approvalPage.getPages()); + + return TableDataInfo.build(resultPage); } + /** * 查询通用审批(支持请假/外出等申请的审批)列表 */ @@ -111,4 +230,5 @@ public class WmsApprovalServiceImpl implements IWmsApprovalService { } 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 768832f8..aab63833 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 @@ -18,6 +18,8 @@ import com.klp.service.IWmsLeaveRequestService; import java.util.*; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.klp.mapper.WmsApprovalMapper; +import com.klp.domain.WmsApproval; /** * 员工请假申请Service业务层处理 @@ -30,6 +32,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; public class WmsLeaveRequestServiceImpl implements IWmsLeaveRequestService { private final WmsLeaveRequestMapper baseMapper; + private final WmsApprovalMapper approvalMapper; /** * 查询员工请假申请 @@ -120,7 +123,13 @@ public class WmsLeaveRequestServiceImpl implements IWmsLeaveRequestService { boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setLeaveId(add.getLeaveId()); + WmsApproval approval = new WmsApproval(); + approval.setApplyType("leave"); + approval.setApplyId(add.getLeaveId()); + approval.setApprovalStatus("待审批"); + approvalMapper.insert(approval); } + return flag; } 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 2bef0763..9245f7a3 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 @@ -19,6 +19,9 @@ import java.util.List; import java.util.Map; import java.util.Collection; +import com.klp.mapper.WmsApprovalMapper; +import com.klp.domain.WmsApproval; + /** * 员工外出申请Service业务层处理 * @@ -30,6 +33,7 @@ import java.util.Collection; public class WmsOutRequestServiceImpl implements IWmsOutRequestService { private final WmsOutRequestMapper baseMapper; + private final WmsApprovalMapper approvalMapper; /** * 查询员工外出申请 @@ -83,6 +87,11 @@ public class WmsOutRequestServiceImpl implements IWmsOutRequestService { boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setOutId(add.getOutId()); + WmsApproval approval = new WmsApproval(); + approval.setApplyType("out"); + approval.setApplyId(add.getOutId()); + approval.setApprovalStatus("待审批"); + approvalMapper.insert(approval); } return flag; }