diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsAnnealPerformanceServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsAnnealPerformanceServiceImpl.java index 1fce3cd8..2a869c1c 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsAnnealPerformanceServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsAnnealPerformanceServiceImpl.java @@ -21,6 +21,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; +import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; @@ -103,6 +104,11 @@ public class WmsAnnealPerformanceServiceImpl implements IWmsAnnealPerformanceSer } } + // 用于重新计算统计信息 + Long filteredPlanCount = 0L; + Long filteredCoilCount = 0L; + BigDecimal filteredTotalWeight = BigDecimal.ZERO; + // 处理每个计划 for (WmsAnnealPerformanceDetailVo detail : details) { Long planId = detail.getPlanId(); @@ -134,9 +140,37 @@ public class WmsAnnealPerformanceServiceImpl implements IWmsAnnealPerformanceSer // 设置炉火层级 coilVo.setFurnaceLevel(planCoil.getFurnaceLevel()); + // 如果传入了enterCoilNo筛选条件,只保留匹配的钢卷 + if (bo.getEnterCoilNo() != null && !bo.getEnterCoilNo().isEmpty()) { + if (coilVo.getEnterCoilNo() == null || + !coilVo.getEnterCoilNo().contains(bo.getEnterCoilNo())) { + continue; // 跳过不匹配的钢卷 + } + } + coilVos.add(coilVo); } - detail.setCoils(coilVos); + + // 如果过滤后没有钢卷,跳过该计划 + if (!coilVos.isEmpty()) { + detail.setCoils(coilVos); + filteredPlanCount++; + filteredCoilCount += coilVos.size(); + BigDecimal planWeight = coilVos.stream() + .map(c -> c.getNetWeight() != null ? c.getNetWeight() : BigDecimal.ZERO) + .reduce(BigDecimal.ZERO, BigDecimal::add); + filteredTotalWeight = filteredTotalWeight.add(planWeight); + } + } + + // 移除没有钢卷的计划 + details.removeIf(detail -> detail.getCoils() == null || detail.getCoils().isEmpty()); + + // 如果传入了enterCoilNo筛选条件,重新计算统计信息 + if (bo.getEnterCoilNo() != null && !bo.getEnterCoilNo().isEmpty()) { + summary.setPlanCount(filteredPlanCount); + summary.setCoilCount(filteredCoilCount); + summary.setTotalWeight(filteredTotalWeight); } } } diff --git a/klp-wms/src/main/resources/mapper/WmsAnnealPerformanceMapper.xml b/klp-wms/src/main/resources/mapper/WmsAnnealPerformanceMapper.xml index 9a08eff7..cde34ddf 100644 --- a/klp-wms/src/main/resources/mapper/WmsAnnealPerformanceMapper.xml +++ b/klp-wms/src/main/resources/mapper/WmsAnnealPerformanceMapper.xml @@ -42,6 +42,10 @@ p.end_time AS endTime FROM wms_furnace_plan p LEFT JOIN wms_furnace f ON f.furnace_id = p.target_furnace_id + + INNER JOIN wms_furnace_plan_coil pc ON pc.plan_id = p.plan_id AND pc.del_flag = 0 + INNER JOIN wms_material_coil mc ON mc.coil_id = pc.coil_id AND mc.del_flag = 0 + GROUP BY p.plan_id, p.plan_no, p.target_furnace_id, f.furnace_name, p.actual_start_time, p.end_time ORDER BY p.actual_start_time DESC, p.plan_no DESC