From fe048ff91fdd283196f83ed757d3a7214b73425f Mon Sep 17 00:00:00 2001
From: Joshi <3040996759@qq.com>
Date: Mon, 27 Apr 2026 11:31:22 +0800
Subject: [PATCH] =?UTF-8?q?feat(anneal-performance):=20=E6=B7=BB=E5=8A=A0?=
=?UTF-8?q?=E9=80=80=E7=81=AB=E6=80=A7=E8=83=BD=E6=9F=A5=E8=AF=A2=E4=B8=AD?=
=?UTF-8?q?=E7=9A=84=E9=92=A2=E5=8D=B7=E5=8F=B7=E7=AD=9B=E9=80=89=E5=8A=9F?=
=?UTF-8?q?=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 在 WmsAnnealPerformanceMapper.xml 中添加钢卷号筛选的关联查询逻辑
- 在 WmsAnnealPerformanceServiceImpl 中实现钢卷号筛选的功能
- 添加筛选后统计数据重新计算的逻辑
- 实现过滤不匹配钢卷的跳过机制
- 添加过滤后无数据计划的移除处理
- 更新汇总统计信息以反映筛选后的实际数据
---
.../impl/WmsAnnealPerformanceServiceImpl.java | 36 ++++++++++++++++++-
.../mapper/WmsAnnealPerformanceMapper.xml | 4 +++
2 files changed, 39 insertions(+), 1 deletion(-)
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