feat(wms): 添加钢卷物料改判记录查询功能

- 在IWmsMaterialCoilService中新增queryPageListWithRejudge方法
- 实现批量查询钢卷最新改判记录的Mapper方法
- 添加SQL映射查询每个钢卷的最新一条改判记录
- 创建WmsMaterialCoilRejudgeVo视图对象包含改判信息
- 实现控制器listWithRejudge接口供前端调用
- 在服务实现中批量关联钢卷与其最新改判记录
This commit is contained in:
2026-05-08 16:58:47 +08:00
parent 2260058c63
commit d248b0e585
6 changed files with 122 additions and 0 deletions

View File

@@ -44,6 +44,12 @@ public interface IWmsMaterialCoilService {
*/
TableDataInfo<WmsMaterialCoilVo> queryPageListWithOrderRel(WmsMaterialCoilBo bo, PageQuery pageQuery);
/**
* 查询钢卷物料表列表(包含改判记录信息)
* 每个钢卷会携带其关联的改判记录列表通过wms_coil_quality_rejudge表
*/
TableDataInfo<WmsMaterialCoilRejudgeVo> queryPageListWithRejudge(WmsMaterialCoilBo bo, PageQuery pageQuery);
/**
* 查询钢卷物料表列表
*/

View File

@@ -384,6 +384,53 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
return TableDataInfo.build(result);
}
@Override
public TableDataInfo<WmsMaterialCoilRejudgeVo> queryPageListWithRejudge(WmsMaterialCoilBo bo, PageQuery pageQuery) {
Page<WmsMaterialCoilVo> result = queryMaterialCoilPage(bo, pageQuery);
List<WmsMaterialCoilVo> records = result.getRecords();
if (records == null || records.isEmpty()) {
Page<WmsMaterialCoilRejudgeVo> rejudgePage = new Page<>();
rejudgePage.setTotal(result.getTotal());
rejudgePage.setCurrent(result.getCurrent());
rejudgePage.setSize(result.getSize());
return TableDataInfo.build(rejudgePage);
}
// 填充通用字段(昵称等)
fillPageCommonFields(records);
// 批量查询每个钢卷的最新一条改判记录
List<com.klp.domain.vo.WmsCoilQualityRejudgeVo> latestRejudges =
wmsCoilQualityRejudgeMapper.selectLatestByCoilIds(
records.stream().map(WmsMaterialCoilVo::getCoilId).filter(Objects::nonNull).collect(Collectors.toList()));
Map<Long, com.klp.domain.vo.WmsCoilQualityRejudgeVo> rejudgeMap = new HashMap<>();
if (latestRejudges != null && !latestRejudges.isEmpty()) {
latestRejudges.forEach(r -> {
if (r.getCoilId() != null) {
rejudgeMap.put(r.getCoilId(), r);
}
});
}
// 转换为新VO并回填最新改判记录
List<WmsMaterialCoilRejudgeVo> rejudgeRecords = records.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());
Page<WmsMaterialCoilRejudgeVo> rejudgePage = new Page<>();
rejudgePage.setRecords(rejudgeRecords);
rejudgePage.setTotal(result.getTotal());
rejudgePage.setCurrent(result.getCurrent());
rejudgePage.setSize(result.getSize());
return TableDataInfo.build(rejudgePage);
}
/**
* 批量填充钢卷列表的订单关联信息(一次查询中间表+订单避免N+1
*/