Răsfoiți Sursa

无理由订单完成时,入库无来源成品

fgd 1 an în urmă
părinte
comite
e42bce97a6

+ 9 - 3
sd-business/src/main/java/com/sd/business/service/inventory/impl/InventoryFinishedServiceImpl.java

@@ -346,9 +346,15 @@ public class InventoryFinishedServiceImpl extends ServiceImpl<InventoryFinishedM
         if (ObjectUtil.isEmpty(orderSkuList)) {
             return;
         }
+        // 筛选掉赠品sku
+        List<Long> skuSpecIds = orderSkuList.stream().map(OrderSku::getSkuSpecId).collect(Collectors.toList());
+        Set<Long> giftSkuSpecIds = skuSpecService.getGiftIdListByIdList(skuSpecIds);
+        List<OrderSku> list = orderSkuList.stream()
+                .filter(item -> giftSkuSpecIds.isEmpty() || !giftSkuSpecIds.contains(item.getSkuSpecId()))
+                .collect(Collectors.toList());
 
         // 添加成品仓库存
-        List<InventoryFinished> inventoryFinishedList = orderSkuList.stream().map(item -> {
+        List<InventoryFinished> inventoryFinishedList = list.stream().map(item -> {
             InventoryFinished inventoryFinished = new InventoryFinished();
             inventoryFinished.setSkuSpecId(item.getSkuSpecId());
             inventoryFinished.setQuantity(item.getQuantity());
@@ -357,11 +363,11 @@ public class InventoryFinishedServiceImpl extends ServiceImpl<InventoryFinishedM
         inOut(inventoryFinishedList, true);
 
         // 清空来源信息
-        orderSkuList.forEach(item -> {
+        list.forEach(item -> {
             item.setId(null);
             item.setOrderId(null);
         });
 
-        inventoryFinishedOrderService.productionWarehousing(orderSkuList);
+        inventoryFinishedOrderService.productionWarehousing(list);
     }
 }

+ 6 - 1
sd-business/src/main/java/com/sd/business/service/production/impl/StockPreparationServiceImpl.java

@@ -375,8 +375,13 @@ public class StockPreparationServiceImpl implements StockPreparationService {
                 statementOfAccountService.add(statement);
             }
 
+            List<OrderSku> finishedSkuList = new ArrayList<>();
+            for (Long orderId : orderIds) {
+                finishedSkuList.addAll(orderSkuMap.getOrDefault(orderId, Collections.emptyList()));
+            }
+
             // 生产入库
-            inventoryFinishedService.productionWarehousing(orderIds);
+            inventoryFinishedService.noSourceInWarehousing(finishedSkuList);
         }
 
         // 把生产工单发送到mq

+ 2 - 1
sd-wln/src/main/java/com/sd/wln/service/impl/WlnOrderServiceImpl.java

@@ -763,6 +763,7 @@ public class WlnOrderServiceImpl implements WlnOrderService {
         List<OrderSkuBom> saveOrderSkuBomList = context.getSaveOrderSkuBomList();
         List<OrderSkuProductionCost> saveOrderSkuProductionCostList = context.getSaveOrderSkuProductionCostList();
         List<OrderPackageBom> orderPackageBomList = context.getOrderPackageBomList();
+        Map<Long, List<OrderSku>> existOrderSkuMap = context.getExistOrderSkuMap();
 
         if (!saveOrderList.isEmpty()) {
             orderService.saveBatch(saveOrderList);
@@ -780,7 +781,7 @@ public class WlnOrderServiceImpl implements WlnOrderService {
                 statementOfAccountService.add(statement);
 
                 // 生产入库
-                inventoryFinishedService.productionWarehousing(Collections.singletonList(item.getId()));
+                inventoryFinishedService.noSourceInWarehousing(existOrderSkuMap.getOrDefault(item.getId(), Collections.emptyList()));
             });
         }
         if (!saveOrderSkuList.isEmpty()) {