liujunchi 2 years ago
parent
commit
22a66690ff

+ 15 - 10
mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java

@@ -26,6 +26,7 @@ import com.yonge.cooleshow.portal.dao.PortalOrderDao;
 import com.yonge.cooleshow.portal.dao.PortalOrderItemDao;
 import com.yonge.cooleshow.portal.dao.PortalProductDao;
 import com.yonge.cooleshow.portal.domain.*;
+import com.yonge.cooleshow.portal.dto.StockOperateModel;
 import com.yonge.cooleshow.portal.service.*;
 import org.redisson.api.RedissonClient;
 import org.slf4j.Logger;
@@ -592,17 +593,21 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
             //解除订单商品库存锁定
             if (!CollectionUtils.isEmpty(orderItemList)) {
                 portalOrderDao.releaseSkuStockLock(orderItemList);
-
+                Map<Long, List<OmsOrderItem>> collect = orderItemList
+                                                                   .stream()
+                                                                   .collect(Collectors.groupingBy(OmsOrderItem::getProductId));
                 List<ProductStock> productStockList = new ArrayList<>();
-                Map<Long, List<OmsOrderItem>> collect = orderItemList.stream()
-                                                                     .collect(Collectors.groupingBy(
-                                                                             OmsOrderItem::getProductId));
-                collect.forEach((k,v) -> {
-                    ProductStock productStock = new ProductStock();
-                    productStock.setProductId(k);
-                    productStock.setStock(v.size());
-                    productStockList.add(productStock);
-                });
+                for (Map.Entry<Long, List<OmsOrderItem>> entry : collect.entrySet()) {
+                    ProductStock stock = new ProductStock();
+                    stock.setProductId(entry.getKey());
+                    List<OmsOrderItem> value = entry.getValue();
+                    if (CollectionUtils.isEmpty(value)) {
+                        continue;
+                    }
+                    int sum = value.stream().mapToInt(OmsOrderItem::getProductQuantity).sum();
+                    stock.setStock(sum);
+                    productStockList.add(stock);
+                }
 
                 portalOrderDao.releaseProductStockLock(productStockList);
             }