Просмотр исходного кода

fix: 修改给多个分销商分配库存时库存会出错的问题

luofeiyun 2 недель назад
Родитель
Сommit
54dee80764

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

@@ -82,6 +82,7 @@ public class VoyageApiImpl implements VoyageApi {
     @Override
     @Override
     public void preReduceStock(ReduceStockReqDTO reqDTO) {
     public void preReduceStock(ReduceStockReqDTO reqDTO) {
         //TODO: 当前阶段不考虑门店库存
         //TODO: 当前阶段不考虑门店库存
+        log.info("开始初定订单扣库存:订单ID:"+reqDTO.getOrderId()+"old订单ID:"+reqDTO.getOldOrderId());
 
 
         Long voyageId = reqDTO.getVoyageId();
         Long voyageId = reqDTO.getVoyageId();
         //现在给整个航次的库存加锁
         //现在给整个航次的库存加锁

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

@@ -37,6 +37,7 @@ import java.util.Collections;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 
 
 /**
 /**
  * 航次库存 Service 实现类
  * 航次库存 Service 实现类
@@ -110,8 +111,8 @@ public class VoyageStockDetailServiceImpl implements VoyageStockDetailService {
         stockDO.setShareNum(stockDO.getCanSellNum().subtract(distributeNum));
         stockDO.setShareNum(stockDO.getCanSellNum().subtract(distributeNum));
         voyageStockMapper.updateById(stockDO);
         voyageStockMapper.updateById(stockDO);
         if(stockDistributeNewList != null && !stockDistributeNewList.isEmpty()) {
         if(stockDistributeNewList != null && !stockDistributeNewList.isEmpty()) {
-            Map<String, BigDecimal> numMap = CollectionUtils.convertMap(stockDistributeNewList, item -> item.getRoomModelId() + "_" + item.getFloor(), item -> item.getNum());
-            Map<String, BigDecimal> totalNumMap = CollectionUtils.convertMap(stockDistributeNewList, item -> item.getRoomModelId() + "_" + item.getFloor(), item -> item.getTotalNum());
+            Map<String, BigDecimal> numMap = stockDistributeNewList.stream().collect(Collectors.groupingBy(item -> item.getRoomModelId() + "_" + item.getFloor(), Collectors.mapping(VoyageStockDistributeNewDO::getNum, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add))));
+            Map<String, BigDecimal> totalNumMap = stockDistributeNewList.stream().collect(Collectors.groupingBy(item -> item.getRoomModelId() + "_" + item.getFloor(), Collectors.mapping(VoyageStockDistributeNewDO::getTotalNum, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add))));
             List<VoyageStockDetailDO> list = voyageStockDetailMapper.selectListByVoyageId(voyageId);
             List<VoyageStockDetailDO> list = voyageStockDetailMapper.selectListByVoyageId(voyageId);
             list.stream().forEach(item -> {
             list.stream().forEach(item -> {
                 BigDecimal num = numMap.get(item.getRoomModelId() + "_" + item.getFloor());
                 BigDecimal num = numMap.get(item.getRoomModelId() + "_" + item.getFloor());

+ 2 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/pay/impl/TradeOrderPayServiceImpl.java

@@ -322,6 +322,8 @@ public class TradeOrderPayServiceImpl implements TradeOrderPayService {
                 reqDTO.setOrderRoomList(orderRoomUseDTOList);
                 reqDTO.setOrderRoomList(orderRoomUseDTOList);
                 if(Objects.equals(orderStatus, TradeOrderStatusEnum.YD.getStatus())) {
                 if(Objects.equals(orderStatus, TradeOrderStatusEnum.YD.getStatus())) {
                     voyageApi.preCancelReduceStock(reqDTO);
                     voyageApi.preCancelReduceStock(reqDTO);
+                }else {
+                    voyageApi.cancelReduceStock(reqDTO);
                 }
                 }
 
 
                 //添加订单日志
                 //添加订单日志