Files
klp-oa/klp-wms/src/main/java/com/klp/service/impl/WmsApprovalTaskServiceImpl.java
Joshi bbe451cb23 feat(wms): 添加已删除数据查询功能
- 在WmsApprovalMapper中新增selectVoListWithDeleted方法用于查询未删除和已删除的审批数据
- 在WmsApprovalTaskMapper中新增selectVoListWithDeleted方法用于查询未删除和已删除的审批任务数据
- 更新WmsApprovalServiceImpl中审批任务查询逻辑,使用新的方法获取包含已删除数据的任务
- 更新WmsApprovalTaskServiceImpl中审批信息查询逻辑,使用新的方法获取包含已删除数据的审批
- 在XML映射文件中添加对应的SQL查询语句,支持按del_flag条件查询数据
2026-04-29 13:07:48 +08:00

241 lines
10 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.core.service.UserService;
import com.klp.common.utils.StringUtils;
import com.klp.domain.WmsApproval;
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.domain.vo.WmsSealReqVo;
import com.klp.mapper.WmsSealReqMapper;
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.*;
import java.util.stream.Collectors;
/**
* 审批任务Service业务层处理
*
* @author klp
* @date 2026-01-20
*/
@RequiredArgsConstructor
@Service
public class WmsApprovalTaskServiceImpl implements IWmsApprovalTaskService {
private final WmsApprovalTaskMapper baseMapper;
private final WmsApprovalMapper approvalMapper;
private final WmsLeaveRequestMapper leaveRequestMapper;
private final WmsOutRequestMapper outRequestMapper;
private final WmsSealReqMapper sealRequestMapper;
private final UserService userService;
private final ISysUserService sysUserService;
@Override
public WmsApprovalTaskVo queryById(Long taskId) {
return baseMapper.selectVoById(taskId);
}
@Override
public TableDataInfo<Map<String, Object>> queryPageList(WmsApprovalTaskBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<WmsApprovalTask> lqw = buildQueryWrapper(bo);
Page<WmsApprovalTaskVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
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.selectVoListWithDeleted(approvalIds);
Map<Long, WmsApprovalVo> approvalMap = approvalList.stream()
.collect(Collectors.toMap(WmsApprovalVo::getApprovalId, v -> v, (a, b) -> a));
// 收集所有applyId按类型分别查询
Set<String> userNames = new HashSet<>();
Set<Long> empIds = 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());
}
} else if ("seal".equalsIgnoreCase(applyType)) {
WmsSealReqVo sealDetail = sealRequestMapper.selectVoById(applyId);
detailMap.put("seal_" + applyId, sealDetail);
if (sealDetail != null && sealDetail.getEmpId() != null) {
empIds.add(sealDetail.getEmpId());
}
}
}
}
// 批量查询昵称
Map<String, String> nickMap = Collections.emptyMap();
if (!userNames.isEmpty()) {
nickMap = sysUserService.selectNickNameMapByUserNames(new ArrayList<>(userNames));
}
// 批量查询empId对应的昵称用于用印申请
Map<Long, String> empNickMap = new HashMap<>();
if (!empIds.isEmpty()) {
for (Long empId : empIds) {
String nickName = userService.selectNickNameById(empId);
if (StringUtils.isNotBlank(nickName)) {
empNickMap.put(empId, nickName);
}
}
}
// 组装返回结果
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");
}
} else if ("seal".equalsIgnoreCase(applyType)) {
WmsSealReqVo sealDetail = (WmsSealReqVo) detailMap.get("seal_" + applyId);
if (sealDetail != null) {
if (sealDetail.getEmpId() != null) {
sealDetail.setApplicantName(empNickMap.getOrDefault(sealDetail.getEmpId(), String.valueOf(sealDetail.getEmpId())));
}
item.put("detail", sealDetail);
item.put("applyType", "seal");
}
}
}
}
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
public List<WmsApprovalTaskVo> queryList(WmsApprovalTaskBo bo) {
LambdaQueryWrapper<WmsApprovalTask> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<WmsApprovalTask> buildQueryWrapper(WmsApprovalTaskBo bo) {
LambdaQueryWrapper<WmsApprovalTask> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getApprovalId() != null, WmsApprovalTask::getApprovalId, bo.getApprovalId());
lqw.eq(bo.getApproverId() != null, WmsApprovalTask::getApproverId, bo.getApproverId());
lqw.eq(bo.getApproverName() != null, WmsApprovalTask::getApproverName, bo.getApproverName());
lqw.eq(bo.getTaskStatus() != null, WmsApprovalTask::getTaskStatus, bo.getTaskStatus());
lqw.orderByDesc(WmsApprovalTask::getCreateTime);
return lqw;
}
@Override
public Boolean insertByBo(WmsApprovalTaskBo bo) {
WmsApprovalTask add = BeanUtil.toBean(bo, WmsApprovalTask.class);
validEntityBeforeSave(add);
return baseMapper.insert(add) > 0;
}
private void validEntityBeforeSave(WmsApprovalTask entity) {
}
@Override
public Boolean updateByBo(WmsApprovalTaskBo bo) {
WmsApprovalTask update = BeanUtil.toBean(bo, WmsApprovalTask.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if (isValid) {
}
return baseMapper.deleteBatchIds(ids) > 0;
}
@Override
public List<WmsApprovalTaskVo> queryByApprovalId(Long approvalId) {
return baseMapper.selectVoList(Wrappers.<WmsApprovalTask>lambdaQuery()
.eq(WmsApprovalTask::getApprovalId, approvalId)
.orderByAsc(WmsApprovalTask::getCreateTime));
}
@Override
public Integer deleteByApprovalId(Long approvalId) {
return baseMapper.delete(Wrappers.<WmsApprovalTask>lambdaQuery()
.eq(WmsApprovalTask::getApprovalId, approvalId));
}
}