diff --git a/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java b/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java index cb99dd40..e956902e 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsMaterialCoilController.java @@ -78,6 +78,16 @@ public class WmsMaterialCoilController extends BaseController { return iWmsMaterialCoilService.queryPageListWithOrderRel(bo, pageQuery); } + /** + * 查询钢卷物料表列表(包含改判记录信息) + * 前端调用此接口时,每个钢卷会携带其关联的改判记录列表(通过wms_coil_quality_rejudge表) + * 注意:此接口比普通list多一次查询,仅在需要查看改判记录时使用 + */ + @GetMapping("/listWithRejudge") + public TableDataInfo listWithRejudge(WmsMaterialCoilBo bo, PageQuery pageQuery) { + return iWmsMaterialCoilService.queryPageListWithRejudge(bo, pageQuery); + } + /** * 统计筛选条件下的全量汇总数据 * 独立的统计接口,使用与分页列表相同的查询条件 diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilRejudgeVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilRejudgeVo.java new file mode 100644 index 00000000..066f4766 --- /dev/null +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilRejudgeVo.java @@ -0,0 +1,23 @@ +package com.klp.domain.vo; + +import lombok.Data; +import lombok.EqualsAndHashCode; + + +/** + * 钢卷物料表视图对象(包含改判记录信息) wms_material_coil + * + * @author Joshi + * @date 2026-05-08 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class WmsMaterialCoilRejudgeVo extends WmsMaterialCoilVo { + + private static final long serialVersionUID = 1L; + + /** + * 最新改判记录(通过wms_coil_quality_rejudge表) + */ + private WmsCoilQualityRejudgeVo rejudgeInfo; +} diff --git a/klp-wms/src/main/java/com/klp/mapper/WmsCoilQualityRejudgeMapper.java b/klp-wms/src/main/java/com/klp/mapper/WmsCoilQualityRejudgeMapper.java index 2abd3bad..d7c376a6 100644 --- a/klp-wms/src/main/java/com/klp/mapper/WmsCoilQualityRejudgeMapper.java +++ b/klp-wms/src/main/java/com/klp/mapper/WmsCoilQualityRejudgeMapper.java @@ -24,4 +24,13 @@ public interface WmsCoilQualityRejudgeMapper extends BaseMapperPlus> selectMapsBySql(@Param("sql") String sql); + + /** + * 批量根据钢卷ID列表查询每个钢卷的最新一条改判记录 + * + * @param coilIds 钢卷ID列表 + * @return 最新改判记录列表 + */ + List selectLatestByCoilIds(@Param("coilIds") List coilIds); + } diff --git a/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java b/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java index 6e7aacde..06c107fa 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsMaterialCoilService.java @@ -44,6 +44,12 @@ public interface IWmsMaterialCoilService { */ TableDataInfo queryPageListWithOrderRel(WmsMaterialCoilBo bo, PageQuery pageQuery); + /** + * 查询钢卷物料表列表(包含改判记录信息) + * 每个钢卷会携带其关联的改判记录列表(通过wms_coil_quality_rejudge表) + */ + TableDataInfo queryPageListWithRejudge(WmsMaterialCoilBo bo, PageQuery pageQuery); + /** * 查询钢卷物料表列表 */ diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java index 758bfbc0..221fddf4 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java @@ -384,6 +384,53 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { return TableDataInfo.build(result); } + @Override + public TableDataInfo queryPageListWithRejudge(WmsMaterialCoilBo bo, PageQuery pageQuery) { + Page result = queryMaterialCoilPage(bo, pageQuery); + List records = result.getRecords(); + if (records == null || records.isEmpty()) { + Page rejudgePage = new Page<>(); + rejudgePage.setTotal(result.getTotal()); + rejudgePage.setCurrent(result.getCurrent()); + rejudgePage.setSize(result.getSize()); + return TableDataInfo.build(rejudgePage); + } + + // 填充通用字段(昵称等) + fillPageCommonFields(records); + + // 批量查询每个钢卷的最新一条改判记录 + List latestRejudges = + wmsCoilQualityRejudgeMapper.selectLatestByCoilIds( + records.stream().map(WmsMaterialCoilVo::getCoilId).filter(Objects::nonNull).collect(Collectors.toList())); + + Map rejudgeMap = new HashMap<>(); + if (latestRejudges != null && !latestRejudges.isEmpty()) { + latestRejudges.forEach(r -> { + if (r.getCoilId() != null) { + rejudgeMap.put(r.getCoilId(), r); + } + }); + } + + // 转换为新VO并回填最新改判记录 + List 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 rejudgePage = new Page<>(); + rejudgePage.setRecords(rejudgeRecords); + rejudgePage.setTotal(result.getTotal()); + rejudgePage.setCurrent(result.getCurrent()); + rejudgePage.setSize(result.getSize()); + return TableDataInfo.build(rejudgePage); + } + /** * 批量填充钢卷列表的订单关联信息(一次查询中间表+订单,避免N+1) */ diff --git a/klp-wms/src/main/resources/mapper/klp/WmsCoilQualityRejudgeMapper.xml b/klp-wms/src/main/resources/mapper/klp/WmsCoilQualityRejudgeMapper.xml index 73e3a317..b4fd7208 100644 --- a/klp-wms/src/main/resources/mapper/klp/WmsCoilQualityRejudgeMapper.xml +++ b/klp-wms/src/main/resources/mapper/klp/WmsCoilQualityRejudgeMapper.xml @@ -23,4 +23,31 @@ ${sql} + + +