Files
klp-oa/klp-wms/src/main/java/com/klp/service/impl/WmsDeliveryPlanServiceImpl.java
Joshi 569dc4c3c9 feat(wms): 新增根据coil_id查询钢卷信息接口
- 在IWmsDeliveryPlanService中新增getCoilInfoByIds方法定义
- 在WmsDeliveryPlanController中添加/coils GET接口用于查询钢卷信息
- 在WmsDeliveryPlanServiceImpl中实现根据逗号分隔的coil_id字符串查询钢卷信息逻辑
- 引入WmsMaterialCoil实体类和WmsMaterialCoilMapper数据访问层组件
- 使用Stream API处理coil_id字符串分割、过滤及类型转换操作
- 返回封装后的WmsMaterialCoilVo对象列表供前端使用
2025-12-08 11:43:15 +08:00

195 lines
6.5 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 com.klp.common.core.domain.entity.SysUser;
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.utils.StringUtils;
import com.klp.domain.WmsMaterialCoil;
import com.klp.domain.vo.*;
import com.klp.mapper.WmsMaterialCoilMapper;
import com.klp.system.service.ISysUserService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.klp.domain.bo.WmsDeliveryPlanBo;
import com.klp.domain.WmsDeliveryPlan;
import com.klp.mapper.WmsDeliveryPlanMapper;
import com.klp.service.IWmsDeliveryPlanService;
import java.util.*;
import java.util.stream.Collectors;
/**
* 发货计划Service业务层处理
*
* @author klp
* @date 2025-11-25
*/
@RequiredArgsConstructor
@Service
public class WmsDeliveryPlanServiceImpl implements IWmsDeliveryPlanService {
private final WmsDeliveryPlanMapper baseMapper;
private final ISysUserService userService;
private final WmsMaterialCoilMapper coilMapper;
/**
* 查询发货计划
*/
@Override
public WmsDeliveryPlanVo queryById(Long planId){
return baseMapper.selectVoById(planId);
}
/**
* 查询发货计划列表
*/
@Override
public TableDataInfo<WmsDeliveryPlanVo> queryPageList(WmsDeliveryPlanBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<WmsDeliveryPlan> lqw = buildQueryWrapper(bo);
Page<WmsDeliveryPlanVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
List<WmsDeliveryPlanVo> records = result.getRecords();
Set<String> userNames = records.stream()
.flatMap(v -> java.util.stream.Stream.of(v.getCreateBy(), v.getUpdateBy()))
.filter(StringUtils::isNotBlank)
.collect(Collectors.toSet());
if (!userNames.isEmpty()) {
Map<String, String> nickMap = userService.selectNickNameMapByUserNames(records.stream()
.flatMap(v -> java.util.stream.Stream.of(v.getCreateBy(), v.getUpdateBy()))
.filter(StringUtils::isNotBlank)
.distinct()
.collect(Collectors.toList()));
records.forEach(item -> {
if (StringUtils.isNotBlank(item.getCreateBy())) {
item.setCreateByName(nickMap.getOrDefault(item.getCreateBy(), item.getCreateBy()));
}
if (StringUtils.isNotBlank(item.getUpdateBy())) {
item.setUpdateByName(nickMap.getOrDefault(item.getUpdateBy(), item.getUpdateBy()));
}
});
}
return TableDataInfo.build(result);
}
/**
* 查询发货计划列表
*/
@Override
public List<WmsDeliveryPlanVo> queryList(WmsDeliveryPlanBo bo) {
LambdaQueryWrapper<WmsDeliveryPlan> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<WmsDeliveryPlan> buildQueryWrapper(WmsDeliveryPlanBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<WmsDeliveryPlan> lqw = Wrappers.lambdaQuery();
lqw.like(StringUtils.isNotBlank(bo.getPlanName()), WmsDeliveryPlan::getPlanName, bo.getPlanName());
lqw.eq(bo.getPlanDate() != null, WmsDeliveryPlan::getPlanDate, bo.getPlanDate());
lqw.eq(bo.getPlanType() != null, WmsDeliveryPlan::getPlanType, bo.getPlanType());
return lqw;
}
/**
* 新增发货计划
*/
@Override
public Boolean insertByBo(WmsDeliveryPlanBo bo) {
WmsDeliveryPlan add = BeanUtil.toBean(bo, WmsDeliveryPlan.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setPlanId(add.getPlanId());
}
return flag;
}
/**
* 修改发货计划
*/
@Override
public Boolean updateByBo(WmsDeliveryPlanBo bo) {
WmsDeliveryPlan update = BeanUtil.toBean(bo, WmsDeliveryPlan.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(WmsDeliveryPlan entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 批量删除发货计划
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
/**
* 获取发货计划统计信息
*
* @param planId 计划ID可选
* @return 统计信息列表
*/
public List<WmsDeliveryPlanStatisticsVo> getDeliveryPlanStatistics(Long planId) {
return baseMapper.selectDeliveryPlanStatistics(planId);
}
/**
* 获取发货报表统计信息
*
* @param startTime 开始时间
* @param endTime 结束时间
* @return 报表统计信息(包含汇总和按类型统计)
*/
public WmsDeliveryReportResultVo getDeliveryReport(Date startTime, Date endTime) {
WmsDeliveryReportResultVo result = new WmsDeliveryReportResultVo();
// 获取汇总数据
WmsDeliveryReportSummaryVo summary = baseMapper.selectDeliveryReportSummary(startTime, endTime);
result.setSummary(summary);
// 获取按钢卷类型分类的数据
List<WmsDeliveryReportByTypeVo> details = baseMapper.selectDeliveryReportByType(startTime, endTime);
result.setDetails(details);
return result;
}
/**
* 根据逗号分隔的coil_id字符串查询对应的钢卷信息
*
* @param coilIds 逗号分隔的coil_id字符串
* @return 钢卷信息列表
*/
@Override
public List<WmsMaterialCoilVo> getCoilInfoByIds(String coilIds) {
if (StringUtils.isBlank(coilIds)) {
return Collections.emptyList();
}
// 将逗号分隔的字符串转换为ID列表
List<Long> idList = Arrays.stream(coilIds.split(","))
.map(String::trim)
.filter(s -> !s.isEmpty())
.map(Long::valueOf)
.collect(Collectors.toList());
// 查询对应的钢卷信息
return coilMapper.selectVoBatchIds(idList);
}
}