|
@@ -34,10 +34,7 @@ import java.time.LocalDateTime;
|
|
|
import java.time.ZoneId;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.time.temporal.WeekFields;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -201,7 +198,7 @@ public class OmsOrderServiceImpl implements OmsOrderService {
|
|
|
Map<Long, List<PmsProductSkuStockRecord>> skuStockRecordMap = productSkuStockRecords.stream().collect(Collectors.groupingBy(PmsProductSkuStockRecord::getProductSkuId));
|
|
|
// 扣减库存
|
|
|
|
|
|
- List<PmsProductSkuStockRecord> updateList = new ArrayList<>();
|
|
|
+ Map<Long,PmsProductSkuStockRecord> updateMap = new HashMap<>();
|
|
|
Map<String, List<OmsOrderItem>> map = omsOrderItems.stream().collect(Collectors.groupingBy(o -> o.getOrderSn()));
|
|
|
List<OrderSkuSync> skuSyncList = new ArrayList<>();
|
|
|
List<OmsOrderItem> updateItems = new ArrayList<>();
|
|
@@ -231,21 +228,19 @@ public class OmsOrderServiceImpl implements OmsOrderService {
|
|
|
|
|
|
int stock = skuStockRecord.getInternalStock() - skuStockRecord.getInternalSaleStock();
|
|
|
if (stock > 0) {
|
|
|
- PmsProductSkuStockRecord record = new PmsProductSkuStockRecord();
|
|
|
- record.setId(skuStockRecord.getId());
|
|
|
sync.setPrice(skuStockRecord.getPrice());
|
|
|
sync.setRecordId(skuStockRecord.getId());
|
|
|
|
|
|
if (stock >= count1) {
|
|
|
- record.setInternalSaleStock(skuStockRecord.getInternalSaleStock() + count1);
|
|
|
+ skuStockRecord.setInternalSaleStock(skuStockRecord.getInternalSaleStock() + count1);
|
|
|
sync.setCount(count1);
|
|
|
count1 = 0;
|
|
|
} else {
|
|
|
count1 = count1 - stock;
|
|
|
- record.setInternalSaleStock(skuStockRecord.getInternalStock());
|
|
|
+ skuStockRecord.setInternalSaleStock(skuStockRecord.getInternalStock());
|
|
|
sync.setCount(stock);
|
|
|
}
|
|
|
- updateList.add(record);
|
|
|
+ updateMap.put(skuStockRecord.getId(),skuStockRecord);
|
|
|
skuSyncs.add(sync);
|
|
|
itemSkus.add(sync);
|
|
|
}
|
|
@@ -266,18 +261,16 @@ public class OmsOrderServiceImpl implements OmsOrderService {
|
|
|
|
|
|
int stock = skuStockRecord.getTaxStock() - skuStockRecord.getTaxSaleStock();
|
|
|
if (stock > 0) {
|
|
|
- PmsProductSkuStockRecord record = new PmsProductSkuStockRecord();
|
|
|
- record.setId(skuStockRecord.getId());
|
|
|
if (stock >= count1) {
|
|
|
- record.setTaxSaleStock(skuStockRecord.getTaxSaleStock() + count1);
|
|
|
+ skuStockRecord.setTaxSaleStock(skuStockRecord.getTaxSaleStock() + count1);
|
|
|
sync.setCount(count1);
|
|
|
count1 = 0;
|
|
|
} else {
|
|
|
count1 = count1 - stock;
|
|
|
- record.setTaxSaleStock(skuStockRecord.getTaxStock());
|
|
|
+ skuStockRecord.setTaxSaleStock(skuStockRecord.getTaxStock());
|
|
|
sync.setCount(stock);
|
|
|
}
|
|
|
- updateList.add(record);
|
|
|
+ updateMap.put(skuStockRecord.getId(),skuStockRecord);
|
|
|
skuSyncs.add(sync);
|
|
|
itemSkus.add(sync);
|
|
|
}
|
|
@@ -296,8 +289,13 @@ public class OmsOrderServiceImpl implements OmsOrderService {
|
|
|
});
|
|
|
skuSyncList.add(skuSync);
|
|
|
});
|
|
|
- for (PmsProductSkuStockRecord pmsProductSkuStockRecord : updateList) {
|
|
|
- pmsProductSkuStockRecordMapper.updateByPrimaryKeySelective(pmsProductSkuStockRecord);
|
|
|
+ for (Map.Entry<Long, PmsProductSkuStockRecord> entry : updateMap.entrySet()) {
|
|
|
+ PmsProductSkuStockRecord v = entry.getValue();
|
|
|
+ PmsProductSkuStockRecord update = new PmsProductSkuStockRecord();
|
|
|
+ update.setId(v.getId());
|
|
|
+ update.setInternalSaleStock(v.getInternalSaleStock());
|
|
|
+ update.setTaxSaleStock(v.getTaxSaleStock());
|
|
|
+ pmsProductSkuStockRecordMapper.updateByPrimaryKeySelective(update);
|
|
|
}
|
|
|
// 更新订单详情
|
|
|
for (OmsOrderItem updateItem : updateItems) {
|
|
@@ -868,7 +866,7 @@ public class OmsOrderServiceImpl implements OmsOrderService {
|
|
|
updateList.add(skuStockRecord);
|
|
|
}
|
|
|
for (PmsProductSkuStockRecord pmsProductSkuStockRecord : updateList) {
|
|
|
- pmsProductSkuStockRecordMapper.updateStock(pmsProductSkuStockRecord);
|
|
|
+ pmsProductSkuStockRecordMapper.updateStock(pmsProductSkuStockRecord,true);
|
|
|
}
|
|
|
List<Long> skuIds = skuSyncList.stream().map(OrderSkuSync.SkuSync::getSku).collect(Collectors.toList());
|
|
|
if (!CollectionUtils.isEmpty(skuIds)) {
|