Files
klp-oa/klp-wms/src/main/java/com/klp/service/impl/WmsCoilQualityRejudgeServiceImpl.java
Joshi 4bea8bdb17 feat(wms): 添加钢卷列表附带质量改判记录功能
- 在 IWmsCoilQualityRejudgeService 中新增 queryCoilListWithRejudge 方法
- 实现批量查询钢卷并附带最新质量改判记录的功能
- 添加 WmsMaterialCoilRejudgeVo 和 WmsMaterialCoilBo 数据传输对象
- 在 WmsCoilQualityRejudgeController 中新增 coilListWithRejudge 接口
- 实现服务层逻辑,通过 wmsMaterialCoilService 查询钢卷列表
- 批量查询每个钢卷的最新改判记录并组装返回结果
2026-07-03 17:30:33 +08:00

164 lines
5.8 KiB
Java

package com.klp.service.impl;
import cn.hutool.core.bean.BeanUtil;
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 lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.klp.domain.bo.WmsCoilQualityRejudgeBo;
import com.klp.domain.bo.WmsMaterialCoilBo;
import com.klp.domain.vo.WmsCoilQualityRejudgeVo;
import com.klp.domain.vo.WmsMaterialCoilRejudgeVo;
import com.klp.domain.vo.WmsMaterialCoilVo;
import com.klp.domain.WmsCoilQualityRejudge;
import com.klp.mapper.WmsCoilQualityRejudgeMapper;
import com.klp.service.IWmsCoilQualityRejudgeService;
import com.klp.service.IWmsMaterialCoilService;
import java.util.*;
import java.util.stream.Collectors;
/**
* 钢卷质量改判记录Service业务层处理
*
* @author klp
* @date 2026-04-20
*/
@RequiredArgsConstructor
@Service
public class WmsCoilQualityRejudgeServiceImpl implements IWmsCoilQualityRejudgeService {
private final WmsCoilQualityRejudgeMapper baseMapper;
private final IWmsMaterialCoilService wmsMaterialCoilService;
/**
* 查询钢卷质量改判记录
*/
@Override
public WmsCoilQualityRejudgeVo queryById(Long rejudgeId){
return baseMapper.selectVoById(rejudgeId);
}
/**
* 查询钢卷质量改判记录列表
*/
@Override
public TableDataInfo<WmsCoilQualityRejudgeVo> queryPageList(WmsCoilQualityRejudgeBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<WmsCoilQualityRejudge> lqw = buildQueryWrapper(bo);
Page<WmsCoilQualityRejudgeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询钢卷质量改判记录列表
*/
@Override
public List<WmsCoilQualityRejudgeVo> queryList(WmsCoilQualityRejudgeBo bo) {
LambdaQueryWrapper<WmsCoilQualityRejudge> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<WmsCoilQualityRejudge> buildQueryWrapper(WmsCoilQualityRejudgeBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<WmsCoilQualityRejudge> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getCoilId() != null, WmsCoilQualityRejudge::getCoilId, bo.getCoilId());
lqw.eq(StringUtils.isNotBlank(bo.getBeforeQuality()), WmsCoilQualityRejudge::getBeforeQuality, bo.getBeforeQuality());
lqw.eq(StringUtils.isNotBlank(bo.getAfterQuality()), WmsCoilQualityRejudge::getAfterQuality, bo.getAfterQuality());
lqw.eq(StringUtils.isNotBlank(bo.getRejudgeReason()), WmsCoilQualityRejudge::getRejudgeReason, bo.getRejudgeReason());
return lqw;
}
/**
* 新增钢卷质量改判记录
*/
@Override
public Boolean insertByBo(WmsCoilQualityRejudgeBo bo) {
WmsCoilQualityRejudge add = BeanUtil.toBean(bo, WmsCoilQualityRejudge.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setRejudgeId(add.getRejudgeId());
}
return flag;
}
/**
* 修改钢卷质量改判记录
*/
@Override
public Boolean updateByBo(WmsCoilQualityRejudgeBo bo) {
WmsCoilQualityRejudge update = BeanUtil.toBean(bo, WmsCoilQualityRejudge.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(WmsCoilQualityRejudge entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 查询钢卷列表并附带质量改判记录
*/
@Override
public List<WmsMaterialCoilRejudgeVo> queryCoilListWithRejudge(WmsMaterialCoilBo bo) {
List<WmsMaterialCoilVo> coils = wmsMaterialCoilService.queryList(bo);
if (coils == null || coils.isEmpty()) {
return Collections.emptyList();
}
// 收集所有钢卷ID
List<Long> coilIds = coils.stream()
.map(WmsMaterialCoilVo::getCoilId)
.filter(Objects::nonNull)
.collect(Collectors.toList());
if (coilIds.isEmpty()) {
return coils.stream().map(vo -> {
WmsMaterialCoilRejudgeVo rvo = new WmsMaterialCoilRejudgeVo();
BeanUtil.copyProperties(vo, rvo);
return rvo;
}).collect(Collectors.toList());
}
// 批量查询每个钢卷的最新一条改判记录
List<WmsCoilQualityRejudgeVo> latestRejudges = baseMapper.selectLatestByCoilIds(coilIds);
Map<Long, WmsCoilQualityRejudgeVo> rejudgeMap = new HashMap<>();
if (latestRejudges != null && !latestRejudges.isEmpty()) {
latestRejudges.forEach(r -> {
if (r.getCoilId() != null) {
rejudgeMap.put(r.getCoilId(), r);
}
});
}
// 组装返回结果
return coils.stream().map(vo -> {
WmsMaterialCoilRejudgeVo rvo = new WmsMaterialCoilRejudgeVo();
BeanUtil.copyProperties(vo, rvo);
if (vo.getCoilId() != null && rejudgeMap.containsKey(vo.getCoilId())) {
rvo.setRejudgeInfo(rejudgeMap.get(vo.getCoilId()));
}
return rvo;
}).collect(Collectors.toList());
}
/**
* 批量删除钢卷质量改判记录
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
}
}