|
|
|
@ -85,9 +85,9 @@ public class StGlassCakeOutServiceImpl extends BaseServiceImpl<StGlassCakeOutMap |
|
|
|
// throw new RuntimeException("工单【" + dto.getWoCode() + "】未查到生产订单ID");
|
|
|
|
// throw new RuntimeException("工单【" + dto.getWoCode() + "】未查到生产订单ID");
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
YieldOrder faYieldOrder = baseMapper.getByYieldOrder(dto.getYoCode()); |
|
|
|
YieldOrder faYieldOrder = baseMapper.getByYoCode(dto.getCardNo()); |
|
|
|
if (faYieldOrder == null) { |
|
|
|
if (faYieldOrder == null) { |
|
|
|
throw new RuntimeException("根据生产订单ID【" + dto.getYoCode() + "】未查询到生产订单信息"); |
|
|
|
throw new RuntimeException("根据流程卡号【" + dto.getCardNo() + "】未查询到生产订单信息"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
List<YieldOrder> yieldOrderList = baseMapper.getYieldOrderList(faYieldOrder.getId(),"12003"); |
|
|
|
List<YieldOrder> yieldOrderList = baseMapper.getYieldOrderList(faYieldOrder.getId(),"12003"); |
|
|
|
@ -201,26 +201,21 @@ public class StGlassCakeOutServiceImpl extends BaseServiceImpl<StGlassCakeOutMap |
|
|
|
List<StRealtimeStock> candidateStockList = new ArrayList<>(); |
|
|
|
List<StRealtimeStock> candidateStockList = new ArrayList<>(); |
|
|
|
double totalUsable = 0.0; |
|
|
|
double totalUsable = 0.0; |
|
|
|
// 循环查询所有可用库存,累加可用量,直到凑够 or 无库存
|
|
|
|
// 循环查询所有可用库存,累加可用量,直到凑够 or 无库存
|
|
|
|
while (true) { |
|
|
|
List<StRealtimeStock> allUsableStockList = stRealtimeStockMapper.selectMaxUsableStockByCakeAttr( |
|
|
|
StRealtimeStock maxStock = stRealtimeStockMapper.selectMaxUsableStockByCakeAttr( |
|
|
|
|
|
|
|
isPrint, powderWeight, materialNo, thickness, goodsCode); |
|
|
|
isPrint, powderWeight, materialNo, thickness, goodsCode); |
|
|
|
|
|
|
|
|
|
|
|
if (maxStock == null) { |
|
|
|
for (StRealtimeStock stock : allUsableStockList) { |
|
|
|
break; // 没有更多库存了
|
|
|
|
double occupy = Optional.ofNullable(stock.getOccupyQuantity()).orElse(0D); |
|
|
|
} |
|
|
|
double usableQty = stock.getQuantity() - occupy; |
|
|
|
|
|
|
|
|
|
|
|
double occupyQty = Optional.ofNullable(maxStock.getOccupyQuantity()).orElse(0D); |
|
|
|
|
|
|
|
double usableQty = maxStock.getQuantity() - occupyQty; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (usableQty <= 0) { |
|
|
|
if (usableQty <= 0) { |
|
|
|
break; |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
candidateStockList.add(maxStock); |
|
|
|
candidateStockList.add(stock); |
|
|
|
totalUsable += usableQty; |
|
|
|
totalUsable += usableQty; |
|
|
|
|
|
|
|
|
|
|
|
if (totalUsable >= requireQty) { |
|
|
|
if (totalUsable >= requireQty) { |
|
|
|
break; // 已凑够
|
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -414,17 +409,13 @@ public class StGlassCakeOutServiceImpl extends BaseServiceImpl<StGlassCakeOutMap |
|
|
|
|
|
|
|
|
|
|
|
// ============ 第三步:无数据 → 新增一条待出库数据 ============
|
|
|
|
// ============ 第三步:无数据 → 新增一条待出库数据 ============
|
|
|
|
StGlassCakeOutDTO dto = new StGlassCakeOutDTO(); |
|
|
|
StGlassCakeOutDTO dto = new StGlassCakeOutDTO(); |
|
|
|
|
|
|
|
|
|
|
|
dto.setCardNo(cardNo); |
|
|
|
dto.setCardNo(cardNo); |
|
|
|
// WorkOrder workOrder = baseMapper.getByWoCode(dto.getCardNo());
|
|
|
|
|
|
|
|
YieldOrder yieldOrder = baseMapper.getByYoCode(dto.getCardNo()); |
|
|
|
|
|
|
|
dto.setYoCode(yieldOrder.getYoCode()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<StGlassCakeOut> stGlassCakeOutList = this.generatePreOutOrder(dto); |
|
|
|
List<StGlassCakeOut> stGlassCakeOutList = this.generatePreOutOrder(dto); |
|
|
|
if (!CollectionUtils.isEmpty(stGlassCakeOutList)) { |
|
|
|
if (!CollectionUtils.isEmpty(stGlassCakeOutList)) { |
|
|
|
for (StGlassCakeOut waitOut : stGlassCakeOutList) { |
|
|
|
for (StGlassCakeOut waitOut : stGlassCakeOutList) { |
|
|
|
// 3.1 从待出库对象中获取关联库存的唯一标识(比如商品ID/物料编码)
|
|
|
|
// 3.1 从待出库对象中获取关联库存的唯一标识
|
|
|
|
Long productId = waitOut.getId(); // 替换成你实际的关联字段
|
|
|
|
Long productId = waitOut.getId(); |
|
|
|
StRealtimeStock stock = stRealtimeStockService.getById(waitOut.getRlsId()); |
|
|
|
StRealtimeStock stock = stRealtimeStockService.getById(waitOut.getRlsId()); |
|
|
|
|
|
|
|
|
|
|
|
// 3.3 给待出库对象补充库存字段(关键:直接赋值)
|
|
|
|
// 3.3 给待出库对象补充库存字段(关键:直接赋值)
|
|
|
|
|