Jelajahi Sumber

fix: 添加共享库存字段和处理共享库存

luofeiyun 3 minggu lalu
induk
melakukan
5c92dc869f
13 mengubah file dengan 170 tambahan dan 107 penghapusan
  1. 9 11
      ship-module-product/ship-module-product-api/src/main/java/com/yc/ship/module/product/api/dto/ReduceStockReqDTO.java
  2. 84 77
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/api/VoyageApiImpl.java
  3. 4 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestock/vo/VoyageStockBaseVO.java
  4. 5 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/dataobject/voyagestock/VoyageStockDO.java
  5. 8 1
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/mysql/voyagestockdistribute/VoyageStockDistributeNewMapper.java
  6. 1 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyage/VoyageServiceImpl.java
  7. 1 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestock/VoyageStockService.java
  8. 7 2
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestock/VoyageStockServiceImpl.java
  9. 10 1
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdetail/VoyageStockDetailService.java
  10. 18 4
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdetail/VoyageStockDetailServiceImpl.java
  11. 8 1
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeNewService.java
  12. 11 10
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeNewServiceImpl.java
  13. 4 0
      ship-module-product/ship-module-product-biz/src/main/resources/mapper/voyagestockdistribute/VoyageStockDistributeNewMapper.xml

+ 9 - 11
ship-module-product/ship-module-product-api/src/main/java/com/yc/ship/module/product/api/dto/ReduceStockReqDTO.java

@@ -16,8 +16,8 @@ public class ReduceStockReqDTO {
     @Schema(description = "航次ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
     private Long voyageId;
 
-    @Schema(description = "分销商类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    private Integer distributorType;
+    @Schema(description = "1:分销商,2:门店", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    private Integer type;
 
     @Schema(description = "分销商ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
     private Long distributorId;
@@ -25,22 +25,20 @@ public class ReduceStockReqDTO {
     @Schema(description = "门店ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
     private Long storeId;
 
-    @Schema(description = "订单使用房间详情列表")
-    List<OrderDetailReqDTO> orderDetailList;
+    @Schema(description = "订单使用房间列表")
+    List<OrderRoomDTO> orderRoomList;
 
 
     @Data
     @Schema(description = "订单使用房间详情")
-    public static class OrderDetailReqDTO {
+    public static class OrderRoomDTO {
 
 
-        @Schema(description = "房ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-        private Long roomModelId;
+        @Schema(description = "房ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+        private Long roomId;
 
-        @Schema(description = "楼层号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
-        private Integer floor;
-
-        @Schema(description = "房间数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+        // 因为这个可能为0.5,为1则完全被使用,为0.5则使用一半
+        @Schema(description = "房间使用数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
         private BigDecimal num;
     }
 

+ 84 - 77
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/api/VoyageApiImpl.java

@@ -8,6 +8,7 @@ import com.yc.ship.module.product.dal.dataobject.voyagestockdistribute.VoyageSto
 import com.yc.ship.module.product.dal.mysql.voyagestock.VoyageStockMapper;
 import com.yc.ship.module.product.dal.mysql.voyagestockdetail.VoyageStockDetailMapper;
 import com.yc.ship.module.product.dal.mysql.voyagestockdistribute.VoyageStockDistributeMapper;
+import com.yc.ship.module.product.enums.DistributorOrStoreEnum;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -41,87 +42,93 @@ public class VoyageApiImpl implements VoyageApi{
         // 3.扣分销商类型库存
         // 4.扣航次库存,优先扣虚拟库存
 
-        Integer distributorType = reqDTO.getDistributorType();
-        Long voyageId = reqDTO.getVoyageId();
-        Long distributorId = reqDTO.getDistributorId();
-        Long storeId = reqDTO.getStoreId();
+        Integer type = reqDTO.getType();//判断是分销商还是门店下单 1:分销商,2:门店
+        Long voyageId = reqDTO.getVoyageId(); //航次ID
+        Long distributorId = reqDTO.getDistributorId(); //分销商ID
+        Long storeId = reqDTO.getStoreId(); //门店ID
+        List<ReduceStockReqDTO.OrderRoomDTO> orderRoomList = reqDTO.getOrderRoomList();//订单使用房间详情
+
+        if(type == DistributorOrStoreEnum.DISTRIBUTOR.getValue()) {//分销商下单
+            //分销商下单只扣分销商库存,默认是OTA,默认OTC只能门店下单
+
+        }
 
 
         // 1.扣门店库存
         // 2.扣分销商库存
         // 3.扣分销商类型库存
-        List<VoyageStockDistributeDO> distributeDOList = voyageStockDistributeMapper.selectListByVoyageId(voyageId);
-        List<ReduceStockReqDTO.OrderDetailReqDTO> orderDetailList = reqDTO.getOrderDetailList();
-        Map<String, ReduceStockReqDTO.OrderDetailReqDTO> map = CollectionUtils.convertMap(orderDetailList, item -> {
-            String key = distributorType + "_" + distributorId + "_" + storeId + "_" + item.getRoomModelId() + "_" + item.getFloor();
-            return key;
-        });
-        AtomicReference<BigDecimal> totalNum = new AtomicReference<>(BigDecimal.ZERO);
-        List<VoyageStockDistributeDO> updateList = new ArrayList<>();
-        distributeDOList.stream().forEach(item -> {
-            String key = item.getDistributorType() + "_" + item.getDistributorId() + "_" + item.getStoreId() + "_" + item.getRoomModelId() + "_" + item.getFloor();
-            ReduceStockReqDTO.OrderDetailReqDTO orderDetailReqDTO = map.get(key);
-            if (orderDetailReqDTO != null) {
-                item.setSurplusNum(item.getSurplusNum().subtract(orderDetailReqDTO.getNum()));
-                item.setBookNum(item.getBookNum().add(orderDetailReqDTO.getNum()));
-                updateList.add(item);
-            }
-            totalNum.updateAndGet(v -> v.add(item.getNum()));
-        });
-        BigDecimal total = totalNum.get();
-        voyageStockDistributeMapper.updateBatch(updateList);
-
-        // 4.扣航次库存,优先扣虚拟库存
-        VoyageStockDO stockDO = voyageStockMapper.selectById(voyageId);
-        //判断可售房间数是否大于等于订单的房间数
-        if(stockDO.getCanSellNum().compareTo(total) == -1) {
-            throw exception0(500,"可售房间数不足");
-        }
-        //减虚拟房间数
-        if(stockDO.getVirtualNum().compareTo(total) >=0 ) {
-            stockDO.setVirtualNum(stockDO.getVirtualNum().subtract(totalNum.get()));
-        }else {
-            stockDO.setVirtualNum(BigDecimal.ZERO);
-            // 加超卖房间数
-            stockDO.setOversoldNum(stockDO.getOversoldNum().add(total.subtract(stockDO.getVirtualNum())));
-        }
-        //减可售房间数
-        stockDO.setCanSellNum(stockDO.getCanSellNum().subtract(total));
-        //加预定房间数
-        stockDO.setBookNum(stockDO.getBookNum().add(total));
-        voyageStockMapper.updateById(stockDO);
-
-        // 5.扣库存详情
-        Map<String, ReduceStockReqDTO.OrderDetailReqDTO> detailMap = CollectionUtils.convertMap(orderDetailList, item -> {
-            String key = item.getRoomModelId() + "_" + item.getFloor();
-            return key;
-        });
-        List<VoyageStockDetailDO> stockDetailList = voyageStockDetailMapper.selectListByVoyageId(voyageId);
-        List<VoyageStockDetailDO> updateDetailList = new ArrayList<>();
-        stockDetailList.stream().forEach(item -> {
-            String key = item.getRoomModelId() + "_" + item.getFloor();
-            ReduceStockReqDTO.OrderDetailReqDTO orderDetailReqDTO = detailMap.get(key);
-            BigDecimal num = orderDetailReqDTO.getNum();
-            if (orderDetailReqDTO != null) {
-                //判断可售房间数是否大于等于订单的房间数
-                if(item.getCanSellNum().compareTo(num) < 0) {
-                    throw exception0(500,"房型楼层可售房间数不足");
-                }
-                //减虚拟房间数
-                if(item.getVirtualNum().compareTo(num) >= 0) {
-                    item.setVirtualNum(item.getVirtualNum().subtract(num));
-                }else {
-                    item.setVirtualNum(BigDecimal.ZERO);
-                    // 加超卖房间数
-                    item.setOversoldNum(item.getOversoldNum().add(num.subtract(item.getVirtualNum())));
-                }
-                //减可售房间数
-                item.setCanSellNum(item.getCanSellNum().subtract(num));
-                //加预定房间数
-                item.setBookNum(item.getBookNum().add(num));
-                updateDetailList.add(item);
-            }
-        });
-        voyageStockDetailMapper.updateBatch(updateDetailList);
+//        List<VoyageStockDistributeDO> distributeDOList = voyageStockDistributeMapper.selectListByVoyageId(voyageId);
+//        List<ReduceStockReqDTO.OrderDetailReqDTO> orderDetailList = reqDTO.getOrderDetailList();
+//        Map<String, ReduceStockReqDTO.OrderDetailReqDTO> map = CollectionUtils.convertMap(orderDetailList, item -> {
+//            String key = distributorType + "_" + distributorId + "_" + storeId + "_" + item.getRoomModelId() + "_" + item.getFloor();
+//            return key;
+//        });
+//        AtomicReference<BigDecimal> totalNum = new AtomicReference<>(BigDecimal.ZERO);
+//        List<VoyageStockDistributeDO> updateList = new ArrayList<>();
+//        distributeDOList.stream().forEach(item -> {
+//            String key = item.getDistributorType() + "_" + item.getDistributorId() + "_" + item.getStoreId() + "_" + item.getRoomModelId() + "_" + item.getFloor();
+//            ReduceStockReqDTO.OrderDetailReqDTO orderDetailReqDTO = map.get(key);
+//            if (orderDetailReqDTO != null) {
+//                item.setSurplusNum(item.getSurplusNum().subtract(orderDetailReqDTO.getNum()));
+//                item.setBookNum(item.getBookNum().add(orderDetailReqDTO.getNum()));
+//                updateList.add(item);
+//            }
+//            totalNum.updateAndGet(v -> v.add(item.getNum()));
+//        });
+//        BigDecimal total = totalNum.get();
+//        voyageStockDistributeMapper.updateBatch(updateList);
+//
+//        // 4.扣航次库存,优先扣虚拟库存
+//        VoyageStockDO stockDO = voyageStockMapper.selectById(voyageId);
+//        //判断可售房间数是否大于等于订单的房间数
+//        if(stockDO.getCanSellNum().compareTo(total) == -1) {
+//            throw exception0(500,"可售房间数不足");
+//        }
+//        //减虚拟房间数
+//        if(stockDO.getVirtualNum().compareTo(total) >=0 ) {
+//            stockDO.setVirtualNum(stockDO.getVirtualNum().subtract(totalNum.get()));
+//        }else {
+//            stockDO.setVirtualNum(BigDecimal.ZERO);
+//            // 加超卖房间数
+//            stockDO.setOversoldNum(stockDO.getOversoldNum().add(total.subtract(stockDO.getVirtualNum())));
+//        }
+//        //减可售房间数
+//        stockDO.setCanSellNum(stockDO.getCanSellNum().subtract(total));
+//        //加预定房间数
+//        stockDO.setBookNum(stockDO.getBookNum().add(total));
+//        voyageStockMapper.updateById(stockDO);
+//
+//        // 5.扣库存详情
+//        Map<String, ReduceStockReqDTO.OrderDetailReqDTO> detailMap = CollectionUtils.convertMap(orderDetailList, item -> {
+//            String key = item.getRoomModelId() + "_" + item.getFloor();
+//            return key;
+//        });
+//        List<VoyageStockDetailDO> stockDetailList = voyageStockDetailMapper.selectListByVoyageId(voyageId);
+//        List<VoyageStockDetailDO> updateDetailList = new ArrayList<>();
+//        stockDetailList.stream().forEach(item -> {
+//            String key = item.getRoomModelId() + "_" + item.getFloor();
+//            ReduceStockReqDTO.OrderDetailReqDTO orderDetailReqDTO = detailMap.get(key);
+//            BigDecimal num = orderDetailReqDTO.getNum();
+//            if (orderDetailReqDTO != null) {
+//                //判断可售房间数是否大于等于订单的房间数
+//                if(item.getCanSellNum().compareTo(num) < 0) {
+//                    throw exception0(500,"房型楼层可售房间数不足");
+//                }
+//                //减虚拟房间数
+//                if(item.getVirtualNum().compareTo(num) >= 0) {
+//                    item.setVirtualNum(item.getVirtualNum().subtract(num));
+//                }else {
+//                    item.setVirtualNum(BigDecimal.ZERO);
+//                    // 加超卖房间数
+//                    item.setOversoldNum(item.getOversoldNum().add(num.subtract(item.getVirtualNum())));
+//                }
+//                //减可售房间数
+//                item.setCanSellNum(item.getCanSellNum().subtract(num));
+//                //加预定房间数
+//                item.setBookNum(item.getBookNum().add(num));
+//                updateDetailList.add(item);
+//            }
+//        });
+//        voyageStockDetailMapper.updateBatch(updateDetailList);
     }
 }

+ 4 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestock/vo/VoyageStockBaseVO.java

@@ -66,4 +66,8 @@ public class VoyageStockBaseVO {
     @Schema(description = "实房间数")
     @ExcelProperty("实房间数")
     private BigDecimal realTotalNum;
+
+    @Schema(description = "分享房间数")
+    @ExcelProperty("分享房间数")
+    private BigDecimal shareNum;
 }

+ 5 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/dataobject/voyagestock/VoyageStockDO.java

@@ -88,4 +88,9 @@ public class VoyageStockDO extends TenantBaseDO {
      */
     private BigDecimal realTotalNum;
 
+    /**
+     * 共享库存
+     */
+    private BigDecimal shareNum;
+
 }

+ 8 - 1
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/mysql/voyagestockdistribute/VoyageStockDistributeNewMapper.java

@@ -1,7 +1,6 @@
 package com.yc.ship.module.product.dal.mysql.voyagestockdistribute;
 
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yc.ship.framework.mybatis.core.mapper.BaseMapperX;
 import com.yc.ship.framework.mybatis.core.query.LambdaQueryWrapperX;
@@ -12,6 +11,7 @@ import com.yc.ship.module.product.dal.dataobject.voyagestockdistribute.VoyageSto
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -38,4 +38,11 @@ public interface VoyageStockDistributeNewMapper extends BaseMapperX<VoyageStockD
                 .eqIfPresent(VoyageStockDistributeNewDO::getDistributorId, reqVO.getDistributorId())
                 .eq(VoyageStockDistributeNewDO::getType, reqVO.getType()));
     }
+
+    /**
+     * 获取航次已分配给分销商的库存总数
+     * @param voyageId
+     * @return
+     */
+    BigDecimal selectTotalDistributeNum(Long voyageId);
 }

+ 1 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyage/VoyageServiceImpl.java

@@ -108,6 +108,7 @@ public class VoyageServiceImpl implements VoyageService {
             int intSum = list.stream().mapToInt(RoomModelFloorNumDTO::getNum).sum();
             BigDecimal sum = BigDecimal.valueOf(intSum);
             voyageStockDO.setTotalNum(sum);
+            voyageStockDO.setShareNum(sum);
             voyageStockDO.setRealTotalNum(sum);
             voyageStockDO.setNotShelfNum(sum);
             voyageStockDO.setShelfedNum(BigDecimal.ZERO);

+ 1 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestock/VoyageStockService.java

@@ -49,4 +49,5 @@ public interface VoyageStockService {
      * @return 航次库存分页
      */
     PageResult<VoyageStockDO> getVoyageStockPage(VoyageStockPageReqVO pageReqVO);
+
 }

+ 7 - 2
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestock/VoyageStockServiceImpl.java

@@ -2,6 +2,8 @@ package com.yc.ship.module.product.service.voyagestock;
 
 import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
+
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
 import com.yc.ship.module.product.controller.admin.voyagestock.vo.*;
@@ -11,6 +13,7 @@ import com.yc.ship.framework.common.util.object.BeanUtils;
 
 import com.yc.ship.module.product.dal.mysql.voyagestock.VoyageStockMapper;
 
+
 /**
  * 航次库存 Service 实现类
  *
@@ -23,15 +26,17 @@ public class VoyageStockServiceImpl implements VoyageStockService {
     @Resource
     private VoyageStockMapper voyageStockMapper;
 
+
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public Long createVoyageStock(VoyageStockSaveReqVO createReqVO) {
         // 插入
         VoyageStockDO voyageStock = BeanUtils.toBean(createReqVO, VoyageStockDO.class);
         voyageStockMapper.insert(voyageStock);
+        Long voyageId = voyageStock.getVoyageId();
         // 返回
-        return voyageStock.getVoyageId();
+        return voyageId;
     }
-
     @Override
     public void updateVoyageStock(VoyageStockSaveReqVO updateReqVO) {
         // 更新

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

@@ -2,10 +2,10 @@ package com.yc.ship.module.product.service.voyagestockdetail;
 
 import javax.validation.*;
 
-import com.alibaba.fastjson.JSONObject;
 import com.yc.ship.module.product.controller.admin.voyagestockdetail.vo.VoyageStockDetailSaveReqVO;
 import com.yc.ship.module.product.dal.dataobject.voyagestockdetail.VoyageStockDetailDO;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -46,4 +46,13 @@ public interface VoyageStockDetailService {
     VoyageStockDetailDO getVoyageStock(Long id);
 
     List<VoyageStockDetailDO> getListByVoyageId(Long voyageId);
+
+
+    /**
+     * 处理共享库存
+     *
+     * @param voyageId 航次ID
+     * @param distributeNum 已分配给分销商的库存
+     */
+    void handleShareNum(Long voyageId,  BigDecimal distributeNum);
 }

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

@@ -1,13 +1,11 @@
 package com.yc.ship.module.product.service.voyagestockdetail;
 
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
 import com.yc.ship.module.product.controller.admin.voyagestockdetail.vo.VoyageStockDetailSaveReqVO;
 import com.yc.ship.module.product.dal.dataobject.voyagestock.VoyageStockDO;
 import com.yc.ship.module.product.dal.dataobject.voyagestockdetail.VoyageStockDetailDO;
 import com.yc.ship.module.product.dal.mysql.voyagestock.VoyageStockMapper;
+import com.yc.ship.module.product.dal.mysql.voyagestockdistribute.VoyageStockDistributeNewMapper;
 import com.yc.ship.module.product.enums.ProductStockStaticsName;
-import com.yc.ship.module.product.service.voyagestock.VoyageStockService;
 import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 
@@ -18,9 +16,9 @@ import com.yc.ship.framework.common.util.object.BeanUtils;
 
 import com.yc.ship.module.product.dal.mysql.voyagestockdetail.VoyageStockDetailMapper;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.stream.Stream;
 
 /**
  * 航次库存 Service 实现类
@@ -37,6 +35,9 @@ public class VoyageStockDetailServiceImpl implements VoyageStockDetailService {
     @Resource
     private VoyageStockMapper voyageStockMapper;
 
+    @Resource
+    private VoyageStockDistributeNewMapper voyageStockDistributeNewMapper;
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Boolean createVoyageStock(List<VoyageStockDetailSaveReqVO> createReqVO) {
@@ -51,6 +52,8 @@ public class VoyageStockDetailServiceImpl implements VoyageStockDetailService {
             if(ProductStockStaticsName.TOTAL.equals(item.getRoomModelName())) {
                 VoyageStockDO stockDO = BeanUtils.toBean(item, VoyageStockDO.class);
                 voyageStockMapper.updateById(stockDO);
+                BigDecimal distributeNum = voyageStockDistributeNewMapper.selectTotalDistributeNum(voyageId);
+                handleShareNum(voyageId, distributeNum);
             }else {
                 insertList.add(item);
             }
@@ -58,6 +61,17 @@ public class VoyageStockDetailServiceImpl implements VoyageStockDetailService {
         return voyageStockDetailMapper.insertBatch(insertList);
     }
 
+    /**
+     * 处理共享库存
+     * @param voyageId
+     * @param distributeNum 已分配给分销商
+     */
+    @Override
+    public void handleShareNum(Long voyageId,  BigDecimal distributeNum) {
+        VoyageStockDO stockDO = voyageStockMapper.selectById(voyageId);
+        stockDO.setShareNum(stockDO.getTotalNum().subtract(distributeNum));
+        voyageStockMapper.updateById(stockDO);
+    }
     @Override
     public void updateVoyageStock(VoyageStockDetailSaveReqVO updateReqVO) {
         // 更新

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

@@ -1,10 +1,10 @@
 package com.yc.ship.module.product.service.voyagestockdistribute;
 
 import com.yc.ship.framework.common.pojo.PageResult;
-import com.yc.ship.module.product.controller.admin.voyagestockdistribute.vo.QueryCanSelectRoomListReqVO;
 import com.yc.ship.module.product.controller.admin.voyagestockdistributeNew.vo.*;
 import com.yc.ship.module.resource.api.room.dto.RoomRespDTO;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -55,4 +55,11 @@ public interface VoyageStockDistributeNewService {
      * @return
      */
     List<RoomRespDTO> getDistributorRoomList(Long voyageId, Long shipId, Long distributorId);
+
+    /**
+     * 获取分销商库存数量
+     * @param voyageId
+     * @return
+     */
+    BigDecimal getDistributeNum(Long voyageId);
 }

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

@@ -1,21 +1,16 @@
 package com.yc.ship.module.product.service.voyagestockdistribute;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yc.ship.framework.common.pojo.PageResult;
 import com.yc.ship.framework.common.util.collection.CollectionUtils;
 import com.yc.ship.framework.common.util.object.BeanUtils;
 import com.yc.ship.framework.mybatis.core.util.MyBatisUtils;
-import com.yc.ship.module.product.controller.admin.voyagestockdistribute.vo.QueryCanSelectRoomListReqVO;
-import com.yc.ship.module.product.controller.admin.voyagestockdistribute.vo.VoyageStockDistributeRespVO;
 import com.yc.ship.module.product.controller.admin.voyagestockdistributeNew.vo.*;
-import com.yc.ship.module.product.dal.dataobject.voyage.VoyageDO;
-import com.yc.ship.module.product.dal.dataobject.voyagestockdistribute.VoyageStockDistributeDO;
 import com.yc.ship.module.product.dal.dataobject.voyagestockdistribute.VoyageStockDistributeNewDO;
 import com.yc.ship.module.product.dal.dataobject.voyagestockdistribute.VoyageStockDistributeRoomDO;
 import com.yc.ship.module.product.dal.mysql.voyagestockdistribute.VoyageStockDistributeNewMapper;
 import com.yc.ship.module.product.enums.DistributorOrStoreEnum;
-import com.yc.ship.module.product.service.voyage.VoyageService;
+import com.yc.ship.module.product.service.voyagestockdetail.VoyageStockDetailService;
 import com.yc.ship.module.resource.api.room.RoomApi;
 import com.yc.ship.module.resource.api.room.dto.RoomRespDTO;
 import com.yc.ship.module.resource.dal.dataobject.roommodel.ResourceRoomModelDO;
@@ -42,9 +37,6 @@ import java.util.stream.Collectors;
 public class VoyageStockDistributeNewServiceImpl implements VoyageStockDistributeNewService {
 
 
-    @Resource
-    private VoyageService voyageService;
-
     @Resource
     private VoyageStockDistributeNewMapper voyageStockDistributeNewMapper;
 
@@ -58,6 +50,9 @@ public class VoyageStockDistributeNewServiceImpl implements VoyageStockDistribut
     @Resource
     private ResourceRoomModelService resourceRoomModelService;
 
+    @Resource
+    private VoyageStockDetailService voyageStockDetailService;
+
 
 
     @Transactional(rollbackFor = Exception.class)
@@ -111,6 +106,8 @@ public class VoyageStockDistributeNewServiceImpl implements VoyageStockDistribut
                 voyageStockDistributeNewMapper.insertBatch(insertList);
             }
         }
+        BigDecimal distributeNum = getDistributeNum(voyageId);
+        voyageStockDetailService.handleShareNum(voyageId, distributeNum);
 
     }
 
@@ -144,7 +141,6 @@ public class VoyageStockDistributeNewServiceImpl implements VoyageStockDistribut
     @Override
     public List<RoomRespDTO> getCanSelectRoomList(QueryCanSelectRoomListNewReqVO reqVO) {
         //获取当前分销商选择的房型和楼层对象的房间列表
-        reqVO.setType(DistributorOrStoreEnum.DISTRIBUTOR.getValue());//TODO: 此处暂时默认为分销商
         Integer type = reqVO.getType();
         List<VoyageStockDistributeRoomDO> roomList;
         if(type == DistributorOrStoreEnum.DISTRIBUTOR.getValue()) {
@@ -224,4 +220,9 @@ public class VoyageStockDistributeNewServiceImpl implements VoyageStockDistribut
         });
         return roomList;
     }
+
+    @Override
+    public BigDecimal getDistributeNum(Long voyageId) {
+        return voyageStockDistributeNewMapper.selectTotalDistributeNum(voyageId);
+    }
 }

+ 4 - 0
ship-module-product/ship-module-product-biz/src/main/resources/mapper/voyagestockdistribute/VoyageStockDistributeNewMapper.xml

@@ -36,4 +36,8 @@
         GROUP BY
             voyage_id
     </select>
+    <select id="selectTotalDistributeNum" resultType="java.math.BigDecimal">
+        select sum(num) from product_voyage_stock_distribute_new
+        where deleted = 0 and voyage_id = #{voyageId} and type = 1
+    </select>
 </mapper>