瀏覽代碼

物料不足消息提示修改

yzc 1 年之前
父節點
當前提交
c3f5f270d8

+ 17 - 7
hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProductionTaskServiceImpl.java

@@ -221,10 +221,8 @@ 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));
-        Map<Long, ProductInfo> productInfoMap = productInfoService.mapKEntity(ProductInfo::getId, q -> q
-                .in(ObjectUtil.isNotEmpty(productIds), ProductInfo::getId, productIds)
-        );
         List<StockFrozen> stockFrozenList = new ArrayList<>();
+        List<Long> errProductIdList = new ArrayList();
         for (BomDetail bomDetail : bomDetailList) {
             Long productId = bomDetail.getProductId();
             //计算总数量 需要的物料数量*工单生产数量
@@ -232,8 +230,8 @@ public class ProductionTaskServiceImpl extends ServiceImpl<ProductionTaskMapper,
             //添加冻结库存
             List<Stock> stocks = productMap.get(productId);
             if (ObjectUtil.isEmpty(stocks)) {
-                ProductInfo productInfo = productInfoMap.get(productId);
-                throw new ServiceException(String.format("物料%s(%s)库存不足!", productInfo.getName(), productInfo.getSpec()));
+                //物料不存在添加到异常列表
+                errProductIdList.add(productId);
             }
             //计算库存是否充足(可用库存 - 冻结库存 - 所需的数量)是否大等于0
             BigDecimal quantity = stocks.stream().map(Stock::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
@@ -246,15 +244,27 @@ public class ProductionTaskServiceImpl extends ServiceImpl<ProductionTaskMapper,
             }
             BigDecimal subtract = quantity.subtract(stockFrozen.getFrozenQuantity()).subtract(multiply);
             if (subtract.compareTo(BigDecimal.ZERO) < 0) {
-                ProductInfo productInfo = productInfoMap.get(productId);
-                throw new ServiceException(String.format("物料%s(%s)库存不足!", productInfo.getName(), productInfo.getSpec()));
+                //物料不足添加到异常列表
+                errProductIdList.add(productId);
             }
+
             //存在库存
             BigDecimal add = stockFrozen.getFrozenQuantity().add(multiply);
             stockFrozen.setFrozenQuantity(add);
 
             stockFrozenList.add(stockFrozen);
         }
+
+        //判断库存是否充足
+        if(errProductIdList.size()>0){
+            List<String> productNames = productInfoService.listObject(ProductInfo::getName, q -> q
+                    .in(ObjectUtil.isNotEmpty(errProductIdList), ProductInfo::getId, errProductIdList)
+            );
+            String collect = productNames.stream().collect(Collectors.joining(","));
+            throw new ServiceException(String.format("以下物料库存不足 %s", collect));
+
+        }
+
         stockFrozenService.saveOrUpdateBatch(stockFrozenList);
 
     }