Bladeren bron

fix: 处理因数据问题导致的库存报错问题

luofeiyun 1 week geleden
bovenliggende
commit
49978ebae2

+ 34 - 10
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/api/VoyageApiImpl.java

@@ -270,15 +270,27 @@ public class VoyageApiImpl implements VoyageApi {
 
             stockDetailList.forEach(item -> {
                 String key = item.getRoomModelId() + "_" + item.getFloor();
-                item.setBookNum(item.getBookNum().subtract(totalNumMap.get(key)));
-                item.setCanSellNum(item.getCanSellNum().add(totalNumMap.get(key)));
-                item.setRealTotalNum(item.getRealTotalNum().add(realNumMap.get(key)));
-                item.setVirtualNum(item.getVirtualNum().add(virtualNumMap.get(key)));
+                BigDecimal totalNum = totalNumMap.get(key);
+                if (totalNum == null) {
+                    totalNum = BigDecimal.ZERO;
+                }
+                BigDecimal realNum = realNumMap.get(key);
+                if (realNum == null) {
+                    realNum = BigDecimal.ZERO;
+                }
+                BigDecimal virtualNum = virtualNumMap.get(key);
+                if (virtualNum == null) {
+                    virtualNum = BigDecimal.ZERO;
+                }
+                item.setBookNum(item.getBookNum().subtract(totalNum));
+                item.setCanSellNum(item.getCanSellNum().add(totalNum));
+                item.setRealTotalNum(item.getRealTotalNum().add(realNum));
+                item.setVirtualNum(item.getVirtualNum().add(virtualNum));
                 if(item.getTenantId() == null && voyageStockLogDO.getTenantId() != null) {
                     item.setTenantId(voyageStockLogDO.getTenantId());
                 }
                 if (stockType == 1) {//使用的是共享库存,才退回共享库存
-                    item.setShareNum(item.getShareNum().add(totalNumMap.get(key)));
+                    item.setShareNum(item.getShareNum().add(totalNum));
                 }
             });
             voyageStockDetailMapper.updateBatch(stockDetailList);
@@ -666,13 +678,25 @@ public class VoyageApiImpl implements VoyageApi {
 
         stockDetailList.forEach(item -> {
             String key = item.getRoomModelId() + "_" + item.getFloor();
-            item.setBookNum(item.getBookNum().subtract(totalNumMap.get(key)));
-            item.setCanSellNum(item.getCanSellNum().add(totalNumMap.get(key)));
-            item.setRealTotalNum(item.getRealTotalNum().add(realNumMap.get(key)));
-            item.setVirtualNum(item.getVirtualNum().add(virtualNumMap.get(key)));
+            BigDecimal totalNum = totalNumMap.get(key);
+            if(totalNum == null) {
+                totalNum = BigDecimal.ZERO;
+            }
+            BigDecimal realNum = realNumMap.get(key);
+            if (realNum == null) {
+                realNum = BigDecimal.ZERO;
+            }
+            BigDecimal virtualNum = virtualNumMap.get(key);
+            if (virtualNum == null) {
+                virtualNum = BigDecimal.ZERO;
+            }
+            item.setBookNum(item.getBookNum().subtract(totalNum));
+            item.setCanSellNum(item.getCanSellNum().add(totalNum));
+            item.setRealTotalNum(item.getRealTotalNum().add(realNum));
+            item.setVirtualNum(item.getVirtualNum().add(virtualNum));
             if (stockType == 1) {
                 //共享库存要还回库存详情
-                item.setShareNum(item.getShareNum().add(totalNumMap.get(key)));
+                item.setShareNum(item.getShareNum().add(totalNum));
             }
         });
         voyageStockDetailMapper.updateBatch(stockDetailList);