diff --git a/klp-wms/src/main/java/com/klp/domain/bo/WmsAnnealPerformanceBo.java b/klp-wms/src/main/java/com/klp/domain/bo/WmsAnnealPerformanceBo.java index f2e94362d..b57d97a30 100644 --- a/klp-wms/src/main/java/com/klp/domain/bo/WmsAnnealPerformanceBo.java +++ b/klp-wms/src/main/java/com/klp/domain/bo/WmsAnnealPerformanceBo.java @@ -35,6 +35,9 @@ public class WmsAnnealPerformanceBo { // 当前钢卷号 private String currentCoilNo; - // 逻辑库区id + // 逻辑库区id(出炉时的逻辑库区,对应wms_furnace_plan_coil.logic_warehouse_id) private Long warehouseId; + + // 钢卷所在库区id(钢卷本身的逻辑库区,对应wms_material_coil.warehouse_id) + private Long coilWarehouseId; } 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 e1fcaa204..59917f106 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 @@ -118,7 +118,16 @@ public class WmsAnnealPerformanceServiceImpl implements IWmsAnnealPerformanceSer continue; } - // 为每个钢卷设置逻辑库区ID、层级和钢卷信息 + // 设置出炉时的逻辑库区到detail级别(取第一个非空的logicWarehouseId) + for (WmsFurnacePlanCoil planCoil : planCoils) { + if (planCoil.getLogicWarehouseId() != null) { + detail.setLogicWarehouseId(planCoil.getLogicWarehouseId()); + detail.setLogicWarehouseName(logicWarehouseNameMap.get(planCoil.getLogicWarehouseId())); + break; + } + } + + // 为每个钢卷设置炉火层级和钢卷信息(不覆盖钢卷本身的逻辑库区) List coilVos = new ArrayList<>(); for (WmsFurnacePlanCoil planCoil : planCoils) { Long coilId = planCoil.getCoilId(); @@ -132,11 +141,8 @@ public class WmsAnnealPerformanceServiceImpl implements IWmsAnnealPerformanceSer coilVo.setCoilId(coilId); } - // 设置逻辑库区ID和层级(每个钢卷可能不同) - if (planCoil.getLogicWarehouseId() != null) { - coilVo.setWarehouseId(planCoil.getLogicWarehouseId()); - coilVo.setWarehouseName(logicWarehouseNameMap.get(planCoil.getLogicWarehouseId())); - } + // 保持钢卷本身的warehouseId/warehouseName不变,不覆盖 + // 设置炉火层级 coilVo.setFurnaceLevel(planCoil.getFurnaceLevel()); @@ -153,9 +159,10 @@ public class WmsAnnealPerformanceServiceImpl implements IWmsAnnealPerformanceSer continue; // 跳过不匹配的钢卷 } } - if (bo.getWarehouseId() != null) { + // 钢卷本身的逻辑库区筛选(coilVo.warehouseId保持不变) + if (bo.getCoilWarehouseId() != null) { if (coilVo.getWarehouseId() == null || - !coilVo.getWarehouseId().equals(bo.getWarehouseId())) { + !coilVo.getWarehouseId().equals(bo.getCoilWarehouseId())) { continue; // 跳过不匹配的钢卷 } } @@ -178,8 +185,11 @@ public class WmsAnnealPerformanceServiceImpl implements IWmsAnnealPerformanceSer // 移除没有钢卷的计划 details.removeIf(detail -> detail.getCoils() == null || detail.getCoils().isEmpty()); - // 如果传入了enterCoilNo筛选条件,重新计算统计信息 - if (bo.getEnterCoilNo() != null && !bo.getEnterCoilNo().isEmpty()) { + // 如果传入了筛选条件,重新计算统计信息 + if ((bo.getEnterCoilNo() != null && !bo.getEnterCoilNo().isEmpty()) + || (bo.getCurrentCoilNo() != null && !bo.getCurrentCoilNo().isEmpty()) + || bo.getWarehouseId() != null + || bo.getCoilWarehouseId() != null) { 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 fea6bdbf7..7f9831ef7 100644 --- a/klp-wms/src/main/resources/mapper/WmsAnnealPerformanceMapper.xml +++ b/klp-wms/src/main/resources/mapper/WmsAnnealPerformanceMapper.xml @@ -20,12 +20,17 @@ AND mc.enter_coil_no LIKE CONCAT('%', #{enterCoilNo}, '%') - + AND mc.current_coil_no LIKE CONCAT('%', #{currentCoilNo}, '%') + - AND mc.warehouse_id = #{warehouseId} + AND pc.logic_warehouse_id = #{warehouseId} + + + + AND mc.warehouse_id = #{coilWarehouseId} @@ -49,7 +54,7 @@ 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