Procházet zdrojové kódy

fix: 库存操作时跳过内舱房和合计

luofeiyun před 2 týdny
rodič
revize
c5073915dd

+ 25 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/api/VoyageApiImpl.java

@@ -22,6 +22,7 @@ import com.yc.ship.module.product.dal.mysql.voyagestockdetail.VoyageStockDetailL
 import com.yc.ship.module.product.dal.mysql.voyagestockdetail.VoyageStockDetailMapper;
 import com.yc.ship.module.product.dal.mysql.voyagestockdistribute.VoyageStockDistributeNewMapper;
 import com.yc.ship.module.product.enums.DistributorOrStoreEnum;
+import com.yc.ship.module.product.enums.ProductStockStaticsName;
 import com.yc.ship.module.product.enums.VoyageStockLogTypeEnum;
 import com.yc.ship.module.product.enums.YesOrNoEnum;
 import com.yc.ship.module.product.framework.lock.ProductRedisKeyConstants;
@@ -321,6 +322,9 @@ public class VoyageApiImpl implements VoyageApi {
             Map<String, BigDecimal> totalNumMap = CollectionUtils.convertMap(detailLogList, item -> item.getRoomModelId() + "_" + item.getFloor(), item -> item.getRealNum().add(item.getVirtualNum()));
 
             stockDetailList.forEach(item -> {
+                if(Objects.equals(item.getRoomModelName(), "合计") || Objects.equals(item.getRoomModelName(), "内舱房")) {
+                    return;
+                }
                 String key = item.getRoomModelId() + "_" + item.getFloor();
 
                 BigDecimal totalNum = totalNumMap.get(key);
@@ -475,6 +479,9 @@ public class VoyageApiImpl implements VoyageApi {
             // 判断库存是否充足
 
             stockDetailList.forEach(item -> {
+                if(Objects.equals(item.getRoomModelName(), "合计") || Objects.equals(item.getRoomModelName(), "内舱房")) {
+                    return;
+                }
                 BigDecimal detailShareNum = item.getShareNum();
                 BigDecimal useNum = roomModelFloorNumMap.get(item.getRoomModelId() + "_" + item.getFloor());
                 if (useNum == null) {
@@ -494,6 +501,9 @@ public class VoyageApiImpl implements VoyageApi {
             //使用的虚拟库存
             List<BigDecimal> useVirtualNum = new ArrayList<>();
             stockDetailList.forEach(item -> {
+                if(Objects.equals(item.getRoomModelName(), "合计") || Objects.equals(item.getRoomModelName(), "内舱房")) {
+                    return;
+                }
                 BigDecimal useNum = roomModelFloorNumMap.get(item.getRoomModelId() + "_" + item.getFloor());
                 if (useNum == null) {
                     useNum = BigDecimal.ZERO;
@@ -635,6 +645,9 @@ public class VoyageApiImpl implements VoyageApi {
             //使用的虚拟库存
             List<BigDecimal> useVirtualNum = new ArrayList<>();
             stockDetailList.forEach(item -> {
+                if(Objects.equals(item.getRoomModelName(), "合计") || Objects.equals(item.getRoomModelName(), "内舱房")) {
+                    return;
+                }
                 BigDecimal useNum = roomModelFloorNumMap.get(item.getRoomModelId() + "_" + item.getFloor());
                 if (useNum == null) {
                     useNum = BigDecimal.ZERO;
@@ -828,6 +841,9 @@ public class VoyageApiImpl implements VoyageApi {
         Map<String, BigDecimal> totalNumMap = CollectionUtils.convertMap(detailLogList, item -> item.getRoomModelId() + "_" + item.getFloor(), item -> item.getRealNum().add(item.getVirtualNum()));
         log.info("进入初定还库存详情操作,退还前库存详情-stockDetailList:{}", JSONArray.toJSONString(stockDetailList));
         stockDetailList.forEach(item -> {
+            if(Objects.equals(item.getRoomModelName(), "合计") || Objects.equals(item.getRoomModelName(), "内舱房")) {
+                return;
+            }
             String key = item.getRoomModelId() + "_" + item.getFloor();
             BigDecimal totalNum = MapUtils.getBigDecimal(totalNumMap, key);
             BigDecimal realNum = MapUtils.getBigDecimal(realNumMap, key);
@@ -974,6 +990,9 @@ public class VoyageApiImpl implements VoyageApi {
             //使用的虚拟库存
             List<BigDecimal> useVirtualNum = new ArrayList<>();
             stockDetailList.forEach(item -> {
+                if(Objects.equals(item.getRoomModelName(), "合计") || Objects.equals(item.getRoomModelName(), "内舱房")) {
+                    return;
+                }
                 //这个地方使用共享库存,不使用可销售数
 //                BigDecimal canSellNum = item.getCanSellNum();
                 BigDecimal detailShareNum = item.getShareNum();
@@ -989,6 +1008,9 @@ public class VoyageApiImpl implements VoyageApi {
             });
             // 库存充足,扣库存详情
             stockDetailList.forEach(item -> {
+                if(Objects.equals(item.getRoomModelName(), "合计") || Objects.equals(item.getRoomModelName(), "内舱房")) {
+                    return;
+                }
                 BigDecimal useNum = roomModelFloorNumMap.get(item.getRoomModelId() + "_" + item.getFloor());
                 if (useNum == null) {
                     useNum = BigDecimal.ZERO;
@@ -1123,6 +1145,9 @@ public class VoyageApiImpl implements VoyageApi {
             //使用的虚拟库存
             List<BigDecimal> useVirtualNum = new ArrayList<>();
             stockDetailList.forEach(item -> {
+                if(Objects.equals(item.getRoomModelName(), "合计") || Objects.equals(item.getRoomModelName(), "内舱房")) {
+                    return;
+                }
                 BigDecimal useNum = roomModelFloorNumMap.get(item.getRoomModelId() + "_" + item.getFloor());
                 if (useNum == null) {
                     useNum = BigDecimal.ZERO;

+ 1 - 1
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdetail/VoyageStockDetailServiceImpl.java

@@ -95,7 +95,7 @@ public class VoyageStockDetailServiceImpl implements VoyageStockDetailService {
             Boolean aBoolean = voyageStockDetailMapper.insertBatch(insertList);
             // 设置缓存
             if(aBoolean) {
-                productRedisUtils.set(ProductRedisKeyConstants.STOCK_DETAIL_REDIS_KEY_PREFIX + voyageId, list);
+                productRedisUtils.set(ProductRedisKeyConstants.STOCK_DETAIL_REDIS_KEY_PREFIX + voyageId, insertList);
             }
             return aBoolean;
         }finally {