yzc 1 anno fa
parent
commit
48bcff2b17

+ 10 - 12
hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProductionTaskServiceImpl.java

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