Преглед на файлове

修正无库存数据时,无法入库bug

yzc преди 2 години
родител
ревизия
881b6d296e
променени са 1 файла, в които са добавени 26 реда и са изтрити 4 реда
  1. 26 4
      hx-service/victoriatourist/src/main/java/com/fjhx/service/stock/impl/StockServiceImpl.java

+ 26 - 4
hx-service/victoriatourist/src/main/java/com/fjhx/service/stock/impl/StockServiceImpl.java

@@ -144,9 +144,11 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
         return page;
     }
 
-    /**次品转良品*/
+    /**
+     * 次品转良品
+     */
     @Override
-    public void defectiveToQualified(Stock stock){
+    public void defectiveToQualified(Stock stock) {
         Assert.notEmpty(stock.getId(), "库存id不能为空");
         Assert.notEmpty(stock.getQuantity(), "要转换的数量不能为空");
         Stock stock1 = getById(stock.getId());
@@ -215,8 +217,26 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
             }
         }
 
+
         // 遍历库存
-        for (Stock oldStock : list) {
+        List<Stock> stockList = new ArrayList<>();
+
+        Map<Long, Stock> stockMap = list.stream().collect(Collectors.groupingBy(Stock::getGoodsId,
+                Collectors.collectingAndThen(Collectors.toList(), value -> value.get(0))));
+        for (Map.Entry<String, Stock> entry : map.entrySet()) {
+            Stock value = entry.getValue();
+            Stock oldStock = stockMap.get(value.getGoodsId());
+            if (oldStock == null) {
+                oldStock = new Stock();
+                oldStock.setWarehouseId(value.getWarehouseId());
+                oldStock.setGoodsId(value.getGoodsId());
+                oldStock.setQuantity(BigDecimal.ZERO);
+                oldStock.setFrozenQuantity(BigDecimal.ZERO);
+                oldStock.setDefectiveQuantity(BigDecimal.ZERO);
+            }
+
+
+//        for (Stock oldStock : list) {
             Stock newStock = map.get(oldStock.getGoodsId().toString() + oldStock.getWarehouseId().toString());
 
             // 入库逻辑
@@ -245,8 +265,10 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
                     oldStock.setQuantity(subtract);
                 }
             }
+
+            stockList.add(oldStock);
         }
-        saveOrUpdateBatch(list);
+        saveOrUpdateBatch(stockList);
     }
 
 }