ソースを参照

fix: 处理库存问题

luofeiyun 2 週間 前
コミット
1e7ce51d9e

+ 12 - 3
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/api/VoyageApiImpl.java

@@ -28,11 +28,11 @@ import com.yc.ship.module.product.framework.lock.ProductRedisKeyConstants;
 import com.yc.ship.module.product.service.voyagestockdistribute.VoyageStockDistributeNewService;
 import com.yc.ship.module.product.utils.ProductRedisUtils;
 import com.yc.ship.module.resource.api.room.RoomApi;
-import com.yc.ship.module.trade.enums.TradeOrderStatusEnum;
 import lombok.extern.slf4j.Slf4j;
 import org.redisson.api.RLock;
 import org.redisson.api.RedissonClient;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
@@ -82,6 +82,7 @@ public class VoyageApiImpl implements VoyageApi {
     private VoyageStockDetailLogMapper voyageStockDetailLogMapper;
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void preReduceStock(ReduceStockReqDTO reqDTO) {
         //TODO: 当前阶段不考虑门店库存
         log.info("开始初定订单扣库存:订单ID:"+reqDTO.getOrderId()+"old订单ID:"+reqDTO.getOldOrderId());
@@ -121,6 +122,7 @@ public class VoyageApiImpl implements VoyageApi {
         }
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void preCancelReduceStock(ReduceStockReqDTO reqDTO) {
         //TODO: 当前阶段不考虑门店库存
@@ -147,6 +149,7 @@ public class VoyageApiImpl implements VoyageApi {
         }
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void reduceStock(ReduceStockReqDTO reqDTO) {
         //TODO: 当前阶段不考虑门店库存
@@ -176,6 +179,7 @@ public class VoyageApiImpl implements VoyageApi {
         }
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void cancelReduceStock(ReduceStockReqDTO reqDTO) {
         //TODO: 当前阶段不考虑门店库存
@@ -220,7 +224,9 @@ public class VoyageApiImpl implements VoyageApi {
             VoyageStockDO stockDO = voyageStockMapper.selectById(voyageId);
             //还航次总库存
             BigDecimal totalNum = voyageStockLogDO.getVirtualNum().add(voyageStockLogDO.getRealNum());
-            stockDO.setShareNum(stockDO.getShareNum().add(voyageStockLogDO.getShareNum())); //退回共享库存
+            if(voyageStockLogDO.getStockType() != null && voyageStockLogDO.getStockType() == 1) {
+                stockDO.setShareNum(stockDO.getShareNum().add(voyageStockLogDO.getShareNum())); //退回共享库存
+            }
             stockDO.setVirtualNum(stockDO.getVirtualNum().add(voyageStockLogDO.getVirtualNum())); //退回虚拟库存
             stockDO.setRealTotalNum(stockDO.getRealTotalNum().add(voyageStockLogDO.getRealNum())); //退回真实库存
             stockDO.setCanSellNum(stockDO.getCanSellNum().add(totalNum)); //退回可售库存
@@ -596,7 +602,9 @@ public class VoyageApiImpl implements VoyageApi {
             //还航次总库存
             BigDecimal totalNum = voyageStockLogDO.getVirtualNum().add(voyageStockLogDO.getRealNum());
             //退回共享库存
-            stockDO.setShareNum(stockDO.getShareNum().add(voyageStockLogDO.getShareNum()));
+            if(voyageStockLogDO.getStockType() != null && voyageStockLogDO.getStockType() == 1) {
+                stockDO.setShareNum(stockDO.getShareNum().add(voyageStockLogDO.getShareNum()));
+            }
             //退回虚拟库存
             stockDO.setVirtualNum(stockDO.getVirtualNum().add(voyageStockLogDO.getVirtualNum()));
             //退回真实库存
@@ -684,6 +692,7 @@ public class VoyageApiImpl implements VoyageApi {
      * 初定扣分销商库存
      *
      */
+    @Transactional(rollbackFor = Exception.class)
     private void preReduceStockDistributor(ReduceStockReqDTO reqDTO) {
         log.info("进入初定扣库存操作-orderId:"+reqDTO.getOrderId());
         //航次库存操作日志

+ 2 - 1
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeNewServiceImpl.java

@@ -117,7 +117,8 @@ public class VoyageStockDistributeNewServiceImpl implements VoyageStockDistribut
                 map.keySet().stream().forEach(key -> {
                     if(existList.contains(key)) { //存在,做修改
                         VoyageStockDistributeNewDO voyageStockDistributeNewDO = existMap.get(key);
-                        voyageStockDistributeNewDO.setTotalNum(voyageStockDistributeNewDO.getNum().add(voyageStockDistributeNewDO.getBookNum()));
+                        VoyageStockDistributeNewDO voyageStockDistributeNewDOBak = BeanUtils.toBean(existMap.get(key), VoyageStockDistributeNewDO.class);
+                        voyageStockDistributeNewDO.setTotalNum(voyageStockDistributeNewDOBak.getNum());
                         voyageStockDistributeNewDO.setNum(map.get(key));
                         voyageStockDistributeNewDO.setRoomModelNum(mapVO.get(key).getRoomModelNum());
                         updateList.add(voyageStockDistributeNewDO);