Parcourir la source

feat: 添加分配库存接口

luofeiyun il y a 1 mois
Parent
commit
e601cf3f3e
13 fichiers modifiés avec 313 ajouts et 92 suppressions
  1. 4 8
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/pricetemplate/vo/PriceSpuRespVO.java
  2. 12 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdetail/VoyageStockDetailController.java
  3. 3 2
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistribute/VoyageStockDistributeController.java
  4. 5 2
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistribute/vo/VoyageStockDistributeSaveReqVO.java
  5. 11 2
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/dataobject/voyagestockdistribute/VoyageStockDistributeDO.java
  6. 84 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/dataobject/voyagestockdistribute/VoyageStockDistributeLogDO.java
  7. 14 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/mysql/voyagestockdistribute/VoyageStockDistributeLogMapper.java
  8. 13 3
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/pricespu/PriceSpuServiceImpl.java
  9. 2 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyage/VoyageServiceImpl.java
  10. 11 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeLogService.java
  11. 16 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeLogServiceImpl.java
  12. 1 1
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeService.java
  13. 137 74
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeServiceImpl.java

+ 4 - 8
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/pricetemplate/vo/PriceSpuRespVO.java

@@ -14,10 +14,6 @@ import com.alibaba.excel.annotation.*;
 @ExcelIgnoreUnannotated
 public class PriceSpuRespVO {
 
-    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "2725")
-    @ExcelProperty("ID")
-    private Long id;
-
     @Schema(description = "价格模板ID或者船票价格ID", example = "7825")
     @ExcelProperty("价格模板ID或者船票价格ID")
     private Long objectId;
@@ -28,19 +24,19 @@ public class PriceSpuRespVO {
 
     @Schema(description = "附加产品名称", example = "")
     @ExcelProperty("附加产品名称")
-    private String spuName;
+    private String productName;
 
     @Schema(description = "附加产品价格")
     @ExcelProperty("附加产品价格")
-    private BigDecimal price;
+    private BigDecimal salePrice;
 
     @Schema(description = "附加产品分组")
     @ExcelProperty("附加产品分组")
-    private String spuCategoryName;
+    private String categoryName;
 
     @Schema(description = "是否必选")
     @ExcelProperty("是否必选")
-    private Integer required;
+    private Integer needChoose;
 
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
     @ExcelProperty("创建时间")

+ 12 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdetail/VoyageStockDetailController.java

@@ -160,4 +160,16 @@ public class VoyageStockDetailController {
         return success(BeanUtils.toBean(list, VoyageStockDetailRespNewVO.class));
     }
 
+    @GetMapping("/getByVoyageIdMap")
+    @Operation(summary = "获得航次库存")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    public CommonResult<Map<String, Integer>> getVoyageStockByVoyageIdMap(@RequestParam("voyageId") Long voyageId) {
+        List<VoyageStockDetailDO> list = voyageStockDetailService.getListByVoyageId(voyageId);
+        Map<String, Integer> map = new HashMap<>();
+        list.stream().forEach(detail -> {
+            map.put(detail.getRoomModelId()+"_"+detail.getFloor(),detail.getShelfedNum());
+        });
+        return success(map);
+    }
+
 }

+ 3 - 2
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistribute/VoyageStockDistributeController.java

@@ -46,8 +46,9 @@ public class VoyageStockDistributeController {
     @PostMapping("/create")
     @Operation(summary = "创建航次库存分配")
     @PreAuthorize("@ss.hasPermission('product:voyage-stock-distribute:create')")
-    public CommonResult<Long> createVoyageStockDistribute(@Valid @RequestBody VoyageStockDistributeSaveReqVO createReqVO) {
-        return success(voyageStockDistributeService.createVoyageStockDistribute(createReqVO));
+    public CommonResult<Boolean> createVoyageStockDistribute(@Valid @RequestBody List<VoyageStockDistributeSaveReqVO> createReqVO) {
+        voyageStockDistributeService.createVoyageStockDistribute(createReqVO);
+        return success(true);
     }
 
     @PutMapping("/update")

+ 5 - 2
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistribute/vo/VoyageStockDistributeSaveReqVO.java

@@ -9,8 +9,8 @@ import javax.validation.constraints.*;
 @Data
 public class VoyageStockDistributeSaveReqVO {
 
-    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "13019")
-    private Long id;
+    @Schema(description = "分销商类型", example = "1")
+    private Integer distributorType;
 
     @Schema(description = "分销商ID", example = "2991")
     private Long distributorId;
@@ -33,4 +33,7 @@ public class VoyageStockDistributeSaveReqVO {
     @Schema(description = "分配房间数")
     private Integer num;
 
+    @Schema(description = "房型分配房间数")
+    private Integer roomModelNum;
+
 }

+ 11 - 2
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/dataobject/voyagestockdistribute/VoyageStockDistributeDO.java

@@ -84,8 +84,17 @@ public class VoyageStockDistributeDO extends TenantBaseDO {
     private Integer num;
 
     /**
-     * 航次已上架房间数
+     * 剩余房间数
      */
-    private Integer shelfedNum;
+    private Integer surplusNum;
 
+    /**
+     * 预订房间数
+     */
+    private Integer bookNum;
+
+    /**
+     * 房型房间数
+     */
+    private Integer roomModelNum;
 }

+ 84 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/dataobject/voyagestockdistribute/VoyageStockDistributeLogDO.java

@@ -0,0 +1,84 @@
+package com.yc.ship.module.product.dal.dataobject.voyagestockdistribute;
+
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.yc.ship.framework.tenant.core.db.TenantBaseDO;
+import lombok.*;
+
+/**
+ * 航次库存分配记录 DO
+ *
+ * @author 管理员
+ */
+@TableName("product_voyage_stock_distribute_log")
+@KeySequence("product_voyage_stock_distribute_log_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class VoyageStockDistributeLogDO extends TenantBaseDO {
+
+    /**
+     * ID
+     */
+    @TableId
+    private Long id;
+    /**
+     * 分销商类型
+     */
+    private Integer distributorType;
+
+    /**
+     * 分销商类型名称
+     */
+    @TableField(exist = false)
+    private String distributorTypeName;
+    /**
+     * 分销商ID
+     */
+    private Long distributorId;
+
+    /**
+     * 分销商名称
+     */
+    @TableField(exist = false)
+    private String distributorName;
+    /**
+     * 门店ID
+     */
+    private Long storeId;
+    /**
+     * 门店名称
+     */
+    @TableField(exist = false)
+    private String storeName;
+    /**
+     * 游轮ID
+     */
+    private Long shipId;
+    /**
+     * 航次ID
+     */
+    private Long voyageId;
+    /**
+     * 房型ID
+     */
+    private Long roomModelId;
+    /**
+     * 房型名称
+     */
+    @TableField(exist = false)
+    private String roomModelName;
+    /**
+     * 楼层号
+     */
+    private Integer floor;
+    /**
+     * 分配房间数
+     */
+    private Integer num;
+}

+ 14 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/mysql/voyagestockdistribute/VoyageStockDistributeLogMapper.java

@@ -0,0 +1,14 @@
+package com.yc.ship.module.product.dal.mysql.voyagestockdistribute;
+
+import com.yc.ship.framework.mybatis.core.mapper.BaseMapperX;
+import com.yc.ship.module.product.dal.dataobject.voyagestockdistribute.VoyageStockDistributeLogDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 航次库存分配记录 Mapper
+ *
+ * @author 管理员
+ */
+@Mapper
+public interface VoyageStockDistributeLogMapper extends BaseMapperX<VoyageStockDistributeLogDO> {
+}

+ 13 - 3
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/pricespu/PriceSpuServiceImpl.java

@@ -50,9 +50,19 @@ public class PriceSpuServiceImpl implements PriceSpuService {
         List<CategoryDO> categoryList = categoryService.getListByIds(categoryIds);
         Map<Long, CategoryDO> categoryMap = CollectionUtils.convertMap(categoryList, CategoryDO::getId);
         respVOList.stream().forEach(item -> {
-           item.setPrice(spuMap.get(item.getSpuId()).getSalePrice());
-           item.setSpuName(spuMap.get(item.getSpuId()).getProductName());
-           item.setSpuCategoryName(categoryMap.get(spuMap.get(item.getSpuId()).getCategoryId()).getCateName());
+            if(spuMap.get(item.getSpuId()) != null) {
+                item.setSalePrice(spuMap.get(item.getSpuId()).getSalePrice());
+                item.setProductName(spuMap.get(item.getSpuId()).getProductName());
+                if(categoryMap.get(spuMap.get(item.getSpuId()).getCategoryId()) != null) {
+                    item.setCategoryName(categoryMap.get(spuMap.get(item.getSpuId()).getCategoryId()).getCateName());
+                }else {
+                    item.setCategoryName("已下线/已删除");
+                }
+            }else {
+                item.setSalePrice(null);
+                item.setProductName("已下线/已删除");
+                item.setCategoryName("已下线/已删除");
+            }
         });
         return respVOList;
     }

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

@@ -106,6 +106,7 @@ public class VoyageServiceImpl implements VoyageService {
             voyageStockDO.setVirtualNum(0);
             voyageStockDO.setOversoldNum(0);
             voyageStockDO.setSurplusNum(sum);
+            voyageStockDO.setVoyageId(voyageId);
             voyageStockMapper.insert(voyageStockDO);
             //添加库存详情
             List<VoyageStockDetailDO> stockDetailDOS = new ArrayList<>();
@@ -154,6 +155,7 @@ public class VoyageServiceImpl implements VoyageService {
             voyageStockDO.setVirtualNum(0);
             voyageStockDO.setOversoldNum(0);
             voyageStockDO.setSurplusNum(sum);
+            voyageStockDO.setVoyageId(item.getId());
             voyageStockDOList.add(voyageStockDO);
             list.stream().forEach(roomModelFloorNumDTO -> {
                 VoyageStockDetailDO stockDetailDO = new VoyageStockDetailDO();

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

@@ -0,0 +1,11 @@
+package com.yc.ship.module.product.service.voyagestockdistribute;
+
+/**
+ * 航次库存分配记录 Service 接口
+ *
+ * @author 管理员
+ */
+public interface VoyageStockDistributeLogService {
+
+
+}

+ 16 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeLogServiceImpl.java

@@ -0,0 +1,16 @@
+package com.yc.ship.module.product.service.voyagestockdistribute;
+
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+/**
+ * 航次库存分配 Service 实现类
+ *
+ * @author 管理员
+ */
+@Service
+@Validated
+public class VoyageStockDistributeLogServiceImpl implements VoyageStockDistributeLogService {
+
+
+}

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

@@ -20,7 +20,7 @@ public interface VoyageStockDistributeService {
      * @param createReqVO 创建信息
      * @return 编号
      */
-    Long createVoyageStockDistribute(@Valid VoyageStockDistributeSaveReqVO createReqVO);
+    void createVoyageStockDistribute(@Valid List<VoyageStockDistributeSaveReqVO> createReqVO);
 
     /**
      * 更新航次库存分配

+ 137 - 74
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeServiceImpl.java

@@ -9,6 +9,8 @@ import com.yc.ship.module.otc.api.store.dto.StoreInfoRespDTO;
 import com.yc.ship.module.otc.api.store.dto.StoreRespDTO;
 import com.yc.ship.module.product.dal.dataobject.voyage.VoyageDO;
 import com.yc.ship.module.product.dal.dataobject.voyagestockdetail.VoyageStockDetailDO;
+import com.yc.ship.module.product.dal.dataobject.voyagestockdistribute.VoyageStockDistributeLogDO;
+import com.yc.ship.module.product.dal.mysql.voyagestockdistribute.VoyageStockDistributeLogMapper;
 import com.yc.ship.module.product.service.distributorDiscount.DistributorDiscountService;
 import com.yc.ship.module.product.service.voyage.VoyageService;
 import com.yc.ship.module.product.service.voyagestockdetail.VoyageStockDetailService;
@@ -18,6 +20,8 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
+import java.util.stream.Collectors;
+
 import com.yc.ship.module.product.controller.admin.voyagestockdistribute.vo.*;
 import com.yc.ship.module.product.dal.dataobject.voyagestockdistribute.VoyageStockDistributeDO;
 import com.yc.ship.framework.common.pojo.PageResult;
@@ -41,6 +45,9 @@ public class VoyageStockDistributeServiceImpl implements VoyageStockDistributeSe
     @Resource
     private VoyageStockDistributeMapper voyageStockDistributeMapper;
 
+    @Resource
+    private VoyageStockDistributeLogMapper voyageStockDistributeLogMapper;
+
     @Resource
     private VoyageStockDetailService voyageStockDetailService;
 
@@ -53,13 +60,72 @@ public class VoyageStockDistributeServiceImpl implements VoyageStockDistributeSe
     @Resource
     private StoreApi storeApi;
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
-    public Long createVoyageStockDistribute(VoyageStockDistributeSaveReqVO createReqVO) {
-        // 插入
-        VoyageStockDistributeDO voyageStockDistribute = BeanUtils.toBean(createReqVO, VoyageStockDistributeDO.class);
-        voyageStockDistributeMapper.insert(voyageStockDistribute);
-        // 返回
-        return voyageStockDistribute.getId();
+    public void createVoyageStockDistribute(List<VoyageStockDistributeSaveReqVO> createReqVO) {
+        // 插入库存设置日志表
+        List<VoyageStockDistributeLogDO> logList = BeanUtils.toBean(createReqVO, VoyageStockDistributeLogDO.class);
+        voyageStockDistributeLogMapper.insertBatch(logList);
+        Long voyageId = logList.get(0).getVoyageId();
+
+        //修改或插入库存表
+        List<VoyageStockDistributeDO> list = voyageStockDistributeMapper.selectListByVoyageId(voyageId);
+        if(CollectionUtils.isAnyEmpty(list)) {//为空则新增
+            list = BeanUtils.toBean(createReqVO, VoyageStockDistributeDO.class);
+            list.stream().forEach(item -> {
+                item.setBookNum(0);
+                item.setSurplusNum(item.getNum());
+                item.setRoomModelNum(item.getNum());
+            });
+            voyageStockDistributeMapper.insertBatch(list);
+        }else { //不为空则修改库存
+            Map<String, Integer> roomNumMap = CollectionUtils.convertMap(createReqVO, item -> {
+                //key为航次ID_分销商类型_分销商ID_门店ID_房型ID_楼层号作为唯一
+                return item.getVoyageId() + "_" + item.getDistributorType()
+                        + "_" + item.getDistributorId() + "_" + item.getStoreId()
+                        + "_" + item.getRoomModelId() + "_" + item.getFloor();
+            }, item -> item.getNum());
+            Map<String, Integer> roomModelNumMap = CollectionUtils.convertMap(createReqVO, item -> {
+                //key为航次ID_分销商类型_分销商ID_门店ID_房型ID_楼层号作为唯一
+                return item.getVoyageId() + "_" + item.getDistributorType()
+                        + "_" + item.getDistributorId() + "_" + item.getStoreId()
+                        + "_" + item.getRoomModelId() + "_" + item.getFloor();
+            }, item -> item.getRoomModelNum());
+
+
+            list.stream().forEach(item -> {
+                String key = item.getVoyageId() + "_" + item.getDistributorType()
+                        + "_" + item.getDistributorId() + "_" + item.getStoreId()
+                        + "_" + item.getRoomModelId() + "_" + item.getFloor();
+                item.setNum(item.getNum()+roomNumMap.get(key));
+                item.setSurplusNum(item.getSurplusNum()+roomNumMap.get(key));
+                item.setRoomModelNum(item.getRoomModelNum()+roomModelNumMap.get(key));
+            });
+            voyageStockDistributeMapper.updateBatch(list);
+
+            //找出多了的分销商或者门店
+            List<String> keys = CollectionUtils.convertList(list, item -> {
+                return item.getDistributorId() + "_" + item.getDistributorType()
+                        + "_" + item.getDistributorId() + "_" + item.getStoreId()
+                        + "_" + item.getRoomModelId() + "_" + item.getFloor();
+            });
+            List<VoyageStockDistributeSaveReqVO> newList = createReqVO.stream().filter(item -> {
+                String key = item.getVoyageId() + "_" + item.getDistributorType()
+                        + "_" + item.getDistributorId() + "_" + item.getStoreId()
+                        + "_" + item.getRoomModelId() + "_" + item.getFloor();
+                return !keys.contains(key);
+            }).collect(Collectors.toList());
+            if(!CollectionUtils.isAnyEmpty(newList)) {
+                List<VoyageStockDistributeDO> addList = BeanUtils.toBean(newList, VoyageStockDistributeDO.class);
+                addList.stream().forEach(item -> {
+                    item.setBookNum(0);
+                    item.setSurplusNum(item.getNum());
+                    item.setRoomModelNum(item.getNum());
+                });
+                voyageStockDistributeMapper.insertBatch(addList);
+            }
+        }
+
     }
 
     @Override
@@ -89,12 +155,43 @@ public class VoyageStockDistributeServiceImpl implements VoyageStockDistributeSe
 
     @Override
     public List<VoyageStockDistributeDO> getListByVoyageId(Long voyageId) {
-        List<VoyageStockDistributeDO> list = voyageStockDistributeMapper.selectListByVoyageId(voyageId);
+        List<VoyageStockDistributeDO> list = new ArrayList<>();
         VoyageDO voyage = voyageService.getVoyage(voyageId);
-        if(list.isEmpty()) {
-//            list = new ArrayList<>();
-            List<VoyageStockDetailDO> stockDetailDOS = voyageStockDetailService.getListByVoyageId(voyageId);
-            // OTA分销商类型数据
+        List<VoyageStockDetailDO> stockDetailDOS = voyageStockDetailService.getListByVoyageId(voyageId);
+        // OTA分销商类型数据
+        stockDetailDOS.stream().forEach(item -> {
+            VoyageStockDistributeDO stockDistributeDO = new VoyageStockDistributeDO();
+            stockDistributeDO.setVoyageId(item.getVoyageId());
+            stockDistributeDO.setRoomModelId(item.getRoomModelId());
+            stockDistributeDO.setRoomModelName(item.getRoomModelName());
+            stockDistributeDO.setFloor(item.getFloor());
+            stockDistributeDO.setNum(0);
+            stockDistributeDO.setDistributorType(DistributorTypeEnum.OTA.getType());
+            stockDistributeDO.setDistributorTypeName(DistributorTypeEnum.OTA.getName());
+            stockDistributeDO.setDistributorId(null);
+            stockDistributeDO.setStoreId(null);
+            stockDistributeDO.setShipId(voyage.getShipId());
+            list.add(stockDistributeDO);
+        });
+        //旅行社分销商类型数据
+        stockDetailDOS.stream().forEach(item -> {
+            VoyageStockDistributeDO stockDistributeDO = new VoyageStockDistributeDO();
+            stockDistributeDO.setVoyageId(item.getVoyageId());
+            stockDistributeDO.setRoomModelId(item.getRoomModelId());
+            stockDistributeDO.setRoomModelName(item.getRoomModelName());
+            stockDistributeDO.setFloor(item.getFloor());
+            stockDistributeDO.setNum(0);
+            stockDistributeDO.setDistributorType(DistributorTypeEnum.OTC.getType());
+            stockDistributeDO.setDistributorTypeName(DistributorTypeEnum.OTC.getName());
+            stockDistributeDO.setDistributorId(null);
+            stockDistributeDO.setStoreId(null);
+            stockDistributeDO.setShipId(voyage.getShipId());
+            list.add(stockDistributeDO);
+        });
+
+        //OTA分销商类型的分销商数据
+        List<DistributorRespDTO> otaDistributorList = otaDistributorApi.getDistributorList(DistributorTypeEnum.OTA.getType());
+        otaDistributorList.stream().forEach(distributor -> {
             stockDetailDOS.stream().forEach(item -> {
                 VoyageStockDistributeDO stockDistributeDO = new VoyageStockDistributeDO();
                 stockDistributeDO.setVoyageId(item.getVoyageId());
@@ -104,12 +201,17 @@ public class VoyageStockDistributeServiceImpl implements VoyageStockDistributeSe
                 stockDistributeDO.setNum(0);
                 stockDistributeDO.setDistributorType(DistributorTypeEnum.OTA.getType());
                 stockDistributeDO.setDistributorTypeName(DistributorTypeEnum.OTA.getName());
-                stockDistributeDO.setDistributorId(null);
+                stockDistributeDO.setDistributorId(distributor.getId());
+                stockDistributeDO.setDistributorName(distributor.getName());
                 stockDistributeDO.setStoreId(null);
                 stockDistributeDO.setShipId(voyage.getShipId());
                 list.add(stockDistributeDO);
             });
-            //旅行社分销商类型数据
+        });
+        //旅行社分销商类型的分销商数据
+        List<DistributorRespDTO> otcDistributorList = otaDistributorApi.getDistributorList(DistributorTypeEnum.OTC.getType());
+        Map<Long, DistributorRespDTO> otcIdDistributorMap = CollectionUtils.convertMap(otcDistributorList, DistributorRespDTO::getId);
+        otcDistributorList.stream().forEach(distributor -> {
             stockDetailDOS.stream().forEach(item -> {
                 VoyageStockDistributeDO stockDistributeDO = new VoyageStockDistributeDO();
                 stockDistributeDO.setVoyageId(item.getVoyageId());
@@ -119,72 +221,33 @@ public class VoyageStockDistributeServiceImpl implements VoyageStockDistributeSe
                 stockDistributeDO.setNum(0);
                 stockDistributeDO.setDistributorType(DistributorTypeEnum.OTC.getType());
                 stockDistributeDO.setDistributorTypeName(DistributorTypeEnum.OTC.getName());
-                stockDistributeDO.setDistributorId(null);
+                stockDistributeDO.setDistributorId(distributor.getId());
+                stockDistributeDO.setDistributorName(distributor.getName());
                 stockDistributeDO.setStoreId(null);
                 stockDistributeDO.setShipId(voyage.getShipId());
                 list.add(stockDistributeDO);
             });
-
-            //OTA分销商类型的分销商数据
-            List<DistributorRespDTO> otaDistributorList = otaDistributorApi.getDistributorList(DistributorTypeEnum.OTA.getType());
-            otaDistributorList.stream().forEach(distributor -> {
-                stockDetailDOS.stream().forEach(item -> {
-                    VoyageStockDistributeDO stockDistributeDO = new VoyageStockDistributeDO();
-                    stockDistributeDO.setVoyageId(item.getVoyageId());
-                    stockDistributeDO.setRoomModelId(item.getRoomModelId());
-                    stockDistributeDO.setRoomModelName(item.getRoomModelName());
-                    stockDistributeDO.setFloor(item.getFloor());
-                    stockDistributeDO.setNum(0);
-                    stockDistributeDO.setDistributorType(DistributorTypeEnum.OTA.getType());
-                    stockDistributeDO.setDistributorTypeName(DistributorTypeEnum.OTA.getName());
-                    stockDistributeDO.setDistributorId(distributor.getId());
-                    stockDistributeDO.setDistributorName(distributor.getName());
-                    stockDistributeDO.setStoreId(null);
-                    stockDistributeDO.setShipId(voyage.getShipId());
-                    list.add(stockDistributeDO);
-                });
-            });
-            //旅行社分销商类型的分销商数据
-            List<DistributorRespDTO> otcDistributorList = otaDistributorApi.getDistributorList(DistributorTypeEnum.OTC.getType());
-            Map<Long, DistributorRespDTO> otcIdDistributorMap = CollectionUtils.convertMap(otcDistributorList, DistributorRespDTO::getId);
-            otcDistributorList.stream().forEach(distributor -> {
-                stockDetailDOS.stream().forEach(item -> {
-                    VoyageStockDistributeDO stockDistributeDO = new VoyageStockDistributeDO();
-                    stockDistributeDO.setVoyageId(item.getVoyageId());
-                    stockDistributeDO.setRoomModelId(item.getRoomModelId());
-                    stockDistributeDO.setRoomModelName(item.getRoomModelName());
-                    stockDistributeDO.setFloor(item.getFloor());
-                    stockDistributeDO.setNum(0);
-                    stockDistributeDO.setDistributorType(DistributorTypeEnum.OTC.getType());
-                    stockDistributeDO.setDistributorTypeName(DistributorTypeEnum.OTC.getName());
-                    stockDistributeDO.setDistributorId(distributor.getId());
-                    stockDistributeDO.setDistributorName(distributor.getName());
-                    stockDistributeDO.setStoreId(null);
-                    stockDistributeDO.setShipId(voyage.getShipId());
-                    list.add(stockDistributeDO);
-                });
-            });
-            //获取旅行社门店的库存数据
-            List<StoreInfoRespDTO> storeList = storeApi.getStoreList();
-            storeList.stream().forEach(store -> {
-                stockDetailDOS.stream().forEach(item -> {
-                    VoyageStockDistributeDO stockDistributeDO = new VoyageStockDistributeDO();
-                    stockDistributeDO.setVoyageId(item.getVoyageId());
-                    stockDistributeDO.setRoomModelId(item.getRoomModelId());
-                    stockDistributeDO.setRoomModelName(item.getRoomModelName());
-                    stockDistributeDO.setFloor(item.getFloor());
-                    stockDistributeDO.setNum(0);
-                    stockDistributeDO.setDistributorType(DistributorTypeEnum.OTC.getType());
-                    stockDistributeDO.setDistributorTypeName(DistributorTypeEnum.OTC.getName());
-                    stockDistributeDO.setDistributorId(store.getAgencyId());
-                    stockDistributeDO.setDistributorName(otcIdDistributorMap.get(store.getAgencyId()).getName());
-                    stockDistributeDO.setStoreId(store.getId());
-                    stockDistributeDO.setStoreName(store.getStoreName());
-                    stockDistributeDO.setShipId(voyage.getShipId());
-                    list.add(stockDistributeDO);
-                });
+        });
+        //获取旅行社门店的库存数据
+        List<StoreInfoRespDTO> storeList = storeApi.getStoreList();
+        storeList.stream().forEach(store -> {
+            stockDetailDOS.stream().forEach(item -> {
+                VoyageStockDistributeDO stockDistributeDO = new VoyageStockDistributeDO();
+                stockDistributeDO.setVoyageId(item.getVoyageId());
+                stockDistributeDO.setRoomModelId(item.getRoomModelId());
+                stockDistributeDO.setRoomModelName(item.getRoomModelName());
+                stockDistributeDO.setFloor(item.getFloor());
+                stockDistributeDO.setNum(0);
+                stockDistributeDO.setDistributorType(DistributorTypeEnum.OTC.getType());
+                stockDistributeDO.setDistributorTypeName(DistributorTypeEnum.OTC.getName());
+                stockDistributeDO.setDistributorId(store.getAgencyId());
+                stockDistributeDO.setDistributorName(otcIdDistributorMap.get(store.getAgencyId()).getName());
+                stockDistributeDO.setStoreId(store.getId());
+                stockDistributeDO.setStoreName(store.getStoreName());
+                stockDistributeDO.setShipId(voyage.getShipId());
+                list.add(stockDistributeDO);
             });
-        }
+        });
         return list;
     }