Files
klp-oa/klp-wms/src/main/java/com/klp/service/impl/WmsApprovalTaskServiceImpl.java
Joshi 1207072092 feat(wms): 新增用印审批功能
- 在审批API中添加按业务ID查询审批信息的方法
- 配置用印详情页面路由,支持通过业务ID查看用印详情
- 修改待办列表,为用印类型申请隐藏同意驳回按钮
- 在待办列表数据中添加业务ID字段,完善申请类型映射
- 更新审批服务接口和实现类,添加queryByBizId方法
- 重构用印详情页面,集成审批信息加载和权限校验逻辑
- 更新领域模型中的申请类型枚举,添加用印类型支持
- 完善审批任务服务,支持用印申请详情查询和申请人姓名显示
2026-03-19 15:30:28 +08:00

243 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.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.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<>();
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));
}
}