diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StRealtimeStockMapper.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StRealtimeStockMapper.java index 0cfce5f3e..8298cef82 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StRealtimeStockMapper.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StRealtimeStockMapper.java @@ -101,7 +101,7 @@ public interface StRealtimeStockMapper extends BaseMapper { void insertStockLock(StRealtimeStockLock lock); - StRealtimeStock selectMaxUsableStockByCakeAttr(String isPrint, BigDecimal powderWeight, String materialNo, BigDecimal thickness, String goodsCode); + List selectMaxUsableStockByCakeAttr(String isPrint, BigDecimal powderWeight, String materialNo, BigDecimal thickness, String goodsCode); List findStorehouseByGoodsCode(String goodsCode); @@ -109,6 +109,6 @@ public interface StRealtimeStockMapper extends BaseMapper { // Object[] queryByShIdAndSlId(String goodsCode, Double quantity, Long shId, Long slId); - StRealtimeStock selectMaxUsableStockByMoldAttr(String goodsCode); + List selectMaxUsableStockByMoldAttr(String goodsCode); } diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StRealtimeStockMapper.xml b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StRealtimeStockMapper.xml index 67ba2bda8..e2c462ff8 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StRealtimeStockMapper.xml +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StRealtimeStockMapper.xml @@ -605,15 +605,13 @@ diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGlassCakeOutServiceImpl.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGlassCakeOutServiceImpl.java index 4c4aaa096..0431d8023 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGlassCakeOutServiceImpl.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGlassCakeOutServiceImpl.java @@ -85,9 +85,9 @@ public class StGlassCakeOutServiceImpl extends BaseServiceImpl yieldOrderList = baseMapper.getYieldOrderList(faYieldOrder.getId(),"12003"); @@ -201,26 +201,21 @@ public class StGlassCakeOutServiceImpl extends BaseServiceImpl candidateStockList = new ArrayList<>(); double totalUsable = 0.0; // 循环查询所有可用库存,累加可用量,直到凑够 or 无库存 - while (true) { - StRealtimeStock maxStock = stRealtimeStockMapper.selectMaxUsableStockByCakeAttr( - isPrint, powderWeight, materialNo, thickness, goodsCode); - - if (maxStock == null) { - break; // 没有更多库存了 - } - - double occupyQty = Optional.ofNullable(maxStock.getOccupyQuantity()).orElse(0D); - double usableQty = maxStock.getQuantity() - occupyQty; + List allUsableStockList = stRealtimeStockMapper.selectMaxUsableStockByCakeAttr( + isPrint, powderWeight, materialNo, thickness, goodsCode); + for (StRealtimeStock stock : allUsableStockList) { + double occupy = Optional.ofNullable(stock.getOccupyQuantity()).orElse(0D); + double usableQty = stock.getQuantity() - occupy; if (usableQty <= 0) { - break; + continue; } - candidateStockList.add(maxStock); + candidateStockList.add(stock); totalUsable += usableQty; if (totalUsable >= requireQty) { - break; // 已凑够 + break; } } @@ -414,17 +409,13 @@ public class StGlassCakeOutServiceImpl extends BaseServiceImpl stGlassCakeOutList = this.generatePreOutOrder(dto); if (!CollectionUtils.isEmpty(stGlassCakeOutList)) { for (StGlassCakeOut waitOut : stGlassCakeOutList) { - // 3.1 从待出库对象中获取关联库存的唯一标识(比如商品ID/物料编码) - Long productId = waitOut.getId(); // 替换成你实际的关联字段 + // 3.1 从待出库对象中获取关联库存的唯一标识 + Long productId = waitOut.getId(); StRealtimeStock stock = stRealtimeStockService.getById(waitOut.getRlsId()); // 3.3 给待出库对象补充库存字段(关键:直接赋值) diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGraphiteMoldOutServiceImpl.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGraphiteMoldOutServiceImpl.java index 988a70ca2..a50855f7b 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGraphiteMoldOutServiceImpl.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGraphiteMoldOutServiceImpl.java @@ -72,21 +72,16 @@ public class StGraphiteMoldOutServiceImpl extends BaseServiceImpl candidateStockList = new ArrayList<>(); double totalUsable = 0.0; - while (true) { - StRealtimeStock maxStock = stRealtimeStockMapper.selectMaxUsableStockByMoldAttr(goodsCode); - - if (maxStock == null) { - break; - } - - double occupyQty = Optional.ofNullable(maxStock.getOccupyQuantity()).orElse(0D); - double usableQty = maxStock.getQuantity() - occupyQty; + List allUsableStockList = stRealtimeStockMapper.selectMaxUsableStockByMoldAttr(goodsCode); + for (StRealtimeStock stock : allUsableStockList) { + double occupy = Optional.ofNullable(stock.getOccupyQuantity()).orElse(0D); + double usableQty = stock.getQuantity() - occupy; if (usableQty <= 0) { - break; + continue; } - candidateStockList.add(maxStock); + candidateStockList.add(stock); totalUsable += usableQty; if (totalUsable >= requireQty) { @@ -94,9 +89,9 @@ public class StGraphiteMoldOutServiceImpl extends BaseServiceImpl