feat(wms): 添加退火性能查询中的双重库区筛选功能
- 在 WmsAnnealPerformanceBo 中新增 coilWarehouseId 字段用于钢卷本身库区筛选 - 更新数据库查询映射,支持出炉时逻辑库区和钢卷本身库区的分别筛选 - 修改服务实现逻辑,区分出炉时逻辑库区和钢卷本身库区的数据处理 - 优化查询条件判断,支持多种筛选条件组合的统计信息重新计算
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user