feat(wms): 添加退火性能查询中的双重库区筛选功能

- 在 WmsAnnealPerformanceBo 中新增 coilWarehouseId 字段用于钢卷本身库区筛选
- 更新数据库查询映射,支持出炉时逻辑库区和钢卷本身库区的分别筛选
- 修改服务实现逻辑,区分出炉时逻辑库区和钢卷本身库区的数据处理
- 优化查询条件判断,支持多种筛选条件组合的统计信息重新计算
This commit is contained in:
2026-07-10 15:39:55 +08:00
parent d0b3c7e766
commit 8ee5ab0a8d
3 changed files with 32 additions and 14 deletions

View File

@@ -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;
}

View File

@@ -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<WmsMaterialCoilVo> 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);