|
@@ -261,18 +261,29 @@ public class StockCheckServiceImpl extends ServiceImpl<StockCheckMapper, StockCh
|
|
|
|
|
|
@DSTransactional
|
|
@DSTransactional
|
|
@Override
|
|
@Override
|
|
- public void submitAll() {
|
|
|
|
|
|
+ public synchronized void submitAll() {
|
|
List<StockCheckRegister> list = stockCheckRegisterService.list();
|
|
List<StockCheckRegister> list = stockCheckRegisterService.list();
|
|
Assert.notEmpty(list, "无盘点登记信息,盘点提交失败!");
|
|
Assert.notEmpty(list, "无盘点登记信息,盘点提交失败!");
|
|
Map<Long, List<StockCheckRegister>> collect = list.stream().collect(Collectors.groupingBy(StockCheckRegister::getWarehouseId));
|
|
Map<Long, List<StockCheckRegister>> collect = list.stream().collect(Collectors.groupingBy(StockCheckRegister::getWarehouseId));
|
|
for (Map.Entry<Long, List<StockCheckRegister>> entry : collect.entrySet()) {
|
|
for (Map.Entry<Long, List<StockCheckRegister>> entry : collect.entrySet()) {
|
|
|
|
+
|
|
//生成盘点明细
|
|
//生成盘点明细
|
|
List<StockCheckDetails> stockCheckDetailsList = new ArrayList<>();
|
|
List<StockCheckDetails> stockCheckDetailsList = new ArrayList<>();
|
|
- for (StockCheckRegister stockCheckRegister : entry.getValue()) {
|
|
|
|
|
|
+
|
|
|
|
+ //根据库存id分组
|
|
|
|
+ Map<Long, List<StockCheckRegister>> collect1 = entry.getValue().stream().collect(Collectors.groupingBy(StockCheckRegister::getStockId));
|
|
|
|
+ for (Map.Entry<Long, List<StockCheckRegister>> entry1 : collect1.entrySet()) {
|
|
|
|
+ List<StockCheckRegister> value = entry1.getValue();
|
|
|
|
+ Long productId = value.get(0).getProductId();
|
|
|
|
+ Long checkQuantity = value.stream().map(StockCheckRegister::getCheckQuantity).reduce(Long::sum).orElse(0L);
|
|
|
|
+
|
|
|
|
+ //获取数据库库存
|
|
|
|
+ Stock baseStock = stockService.getById(entry1.getKey());
|
|
|
|
+
|
|
StockCheckDetails stockCheckDetails = new StockCheckDetails();
|
|
StockCheckDetails stockCheckDetails = new StockCheckDetails();
|
|
- stockCheckDetails.setProductId(stockCheckRegister.getProductId());
|
|
|
|
- stockCheckDetails.setQuantity(stockCheckRegister.getQuantity());
|
|
|
|
- stockCheckDetails.setCheckQuantity(stockCheckRegister.getCheckQuantity());
|
|
|
|
|
|
+ stockCheckDetails.setProductId(productId);
|
|
|
|
+ stockCheckDetails.setQuantity(baseStock.getQuantity().longValue());
|
|
|
|
+ stockCheckDetails.setCheckQuantity(checkQuantity);
|
|
stockCheckDetailsList.add(stockCheckDetails);
|
|
stockCheckDetailsList.add(stockCheckDetails);
|
|
}
|
|
}
|
|
|
|
|