|
@@ -222,7 +222,6 @@ public class ProductionTaskServiceImpl extends ServiceImpl<ProductionTaskMapper,
|
|
|
//根据BOM明细冻结库存
|
|
|
List<Long> productIds = bomDetailList.stream().map(BomDetail::getProductId).collect(Collectors.toList());
|
|
|
Map<Long, List<Stock>> productMap = stockService.mapKGroup(Stock::getProductId, q -> q.in(Stock::getProductId, productIds));
|
|
|
- List<StockFrozen> stockFrozenList = new ArrayList<>();
|
|
|
List<Long> errProductIdList = new ArrayList();
|
|
|
for (BomDetail bomDetail : bomDetailList) {
|
|
|
Long productId = bomDetail.getProductId();
|
|
@@ -233,16 +232,16 @@ public class ProductionTaskServiceImpl extends ServiceImpl<ProductionTaskMapper,
|
|
|
if (ObjectUtil.isEmpty(stocks)) {
|
|
|
//物料不存在添加到异常列表
|
|
|
errProductIdList.add(productId);
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
//计算库存是否充足(可用库存 - 冻结库存 - 所需的数量)是否大等于0
|
|
|
BigDecimal quantity = stocks.stream().map(Stock::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
|
|
- Map<Long, StockFrozen> stockFrozenMap = stockFrozenService.mapKEntity(StockFrozen::getProductId, q -> q.in(StockFrozen::getProductId, productIds));
|
|
|
- StockFrozen stockFrozen = stockFrozenMap.get(bomDetail.getProductId());
|
|
|
+ StockFrozen stockFrozen = stockFrozenService.getOne(q -> q.eq(StockFrozen::getProductId, bomDetail.getProductId()));
|
|
|
if (ObjectUtil.isEmpty(stockFrozen)) {
|
|
|
stockFrozen = new StockFrozen();
|
|
|
stockFrozen.setProductId(bomDetail.getProductId());
|
|
|
stockFrozen.setFrozenQuantity(BigDecimal.ZERO);
|
|
|
+ stockFrozenService.save(stockFrozen);
|
|
|
}
|
|
|
BigDecimal subtract = quantity.subtract(stockFrozen.getFrozenQuantity()).subtract(multiply);
|
|
|
if (subtract.compareTo(BigDecimal.ZERO) < 0) {
|
|
@@ -250,16 +249,17 @@ public class ProductionTaskServiceImpl extends ServiceImpl<ProductionTaskMapper,
|
|
|
errProductIdList.add(productId);
|
|
|
}
|
|
|
|
|
|
- //存在库存
|
|
|
- BigDecimal add = stockFrozen.getFrozenQuantity().add(multiply);
|
|
|
- stockFrozen.setFrozenQuantity(add);
|
|
|
-
|
|
|
- stockFrozenList.add(stockFrozen);
|
|
|
+ //更新冻结库存
|
|
|
+ Long stockFrozenId = stockFrozen.getId();
|
|
|
+ stockFrozenService.update(q -> q
|
|
|
+ .eq(StockFrozen::getId, stockFrozenId)
|
|
|
+ .setSql("frozen_quantity = frozen_quantity" + multiply)
|
|
|
+ );
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//判断库存是否充足
|
|
|
- if(errProductIdList.size()>0){
|
|
|
+ if (errProductIdList.size() > 0) {
|
|
|
List<String> productNames = productInfoService.listObject(ProductInfo::getName, q -> q
|
|
|
.in(ObjectUtil.isNotEmpty(errProductIdList), ProductInfo::getId, errProductIdList)
|
|
|
);
|
|
@@ -267,8 +267,6 @@ public class ProductionTaskServiceImpl extends ServiceImpl<ProductionTaskMapper,
|
|
|
throw new ServiceException(String.format("以下物料库存不足 %s", collect));
|
|
|
}
|
|
|
|
|
|
- stockFrozenService.saveOrUpdateBatch(stockFrozenList);
|
|
|
-
|
|
|
}
|
|
|
|
|
|
@Override
|