Jelajahi Sumber

库存不足提示优化

lhm 3 tahun lalu
induk
melakukan
7128505f80

+ 9 - 2
kmall-admin/src/main/java/com/kmall/admin/service/impl/GoodsServiceImpl.java

@@ -1573,7 +1573,10 @@ public class GoodsServiceImpl implements GoodsService {
         String wareStockNumberKey = storeId + sku + prodBarcode;
         String warehouseStockMapKey = Constants.WAREHOUSE_STOCK_MAP_KEY + "_" + storeId;
         String redisCacheWareQuantity = JedisUtil.hget(warehouseStockMapKey, wareStockNumberKey);
+        // 保税仓或缓存中的保税仓库存
         Integer wareQuantity = 0;
+        // 保税仓库存
+        Integer realWareQuantity = 0;
         Integer exitRegionNumber = goods.getExitRegionNumber();
         String stockNum = goods.getStockNum();
         Integer sellVolume = Objects.isNull(goods.getSellVolume()) ? 1 : goods.getSellVolume();
@@ -1639,15 +1642,19 @@ public class GoodsServiceImpl implements GoodsService {
             WareQueryStockResponseDTO.WareQueryStockResponseItemDTO itemDTO = items.get(0);
             // 仓库可用库存
             wareQuantity = itemDTO.getQuantity();
+            realWareQuantity = wareQuantity;
             JedisUtil.hset(warehouseStockMapKey, wareStockNumberKey, String.valueOf(wareQuantity));
         } else {
             wareQuantity = Integer.parseInt(redisCacheWareQuantity);
+            // 如果是缓存中有该商品保税仓的库存可用数缓存,因为这个可用数已经是经过计算的,所以这里需要加上购买数
+            // 避免下面提示的是计算过后的库存可用数,以致于出现误解
+            realWareQuantity = wareQuantity + goods.getSellVolume();
         }
         // 保税仓库存 + 展销店库存 - 出区数 >= 购买数
         if (!((wareQuantity + Integer.parseInt(stockNum) - exitRegionNumber) > sellVolume)) {
             // 库存不足
-            log.error("商品条码:【{}】,sku:【{}】,门店库存:【{}】,保税仓库存:【{}】,出区数:【{}】,该商品仓库库存不足!", prodBarcode, sku, stockNum, wareQuantity, exitRegionNumber);
-            throw new ServiceException(String.format("商品条码:【%s】,sku:【%s】,门店库存:【%s】,保税仓库存:【%s】,出区数:【%s】,该商品仓库库存不足!", prodBarcode, sku, stockNum, wareQuantity, exitRegionNumber));
+            log.error("商品条码:【{}】,sku:【{}】,门店库存:【{}】,保税仓库存:【{}】,出区数:【{}】,该商品仓库库存不足!", prodBarcode, sku, stockNum, realWareQuantity, exitRegionNumber);
+            throw new ServiceException(String.format("商品条码:【%s】,sku:【%s】,门店库存:【%s】,保税仓库存:【%s】,出区数:【%s】,该商品仓库库存不足!", prodBarcode, sku, stockNum, realWareQuantity, exitRegionNumber));
         } else {
             JedisUtil.hset(warehouseStockMapKey, wareStockNumberKey, String.valueOf(wareQuantity - sellVolume));
         }