فهرست منبع

feat: 完善分销商给门店分配库存

luofeiyun 3 هفته پیش
والد
کامیت
2fea5a26de
14فایلهای تغییر یافته به همراه102 افزوده شده و 26 حذف شده
  1. 12 3
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistributeNew/VoyageStockDistributeNewController.java
  2. 3 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistributeNew/vo/VoyageStockDistributeNewDetailReqVO.java
  3. 3 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistributeNew/vo/VoyageStockDistributeNewPageReqVO.java
  4. 3 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistributeNew/vo/VoyageStockDistributeNewRespVO.java
  5. 3 1
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistributeNew/vo/VoyageStockDistributeNewSaveReqVO.java
  6. 2 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistributeNew/vo/VoyageStockDistributorRoomSaveReqVO.java
  7. 5 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/dataobject/voyagestockdistribute/VoyageStockDistributeNewDO.java
  8. 4 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/dataobject/voyagestockdistribute/VoyageStockDistributeRoomDO.java
  9. 6 3
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/mysql/voyagestockdistribute/VoyageStockDistributeNewMapper.java
  10. 10 6
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/mysql/voyagestockdistribute/VoyageStockDistributeRoomMapper.java
  11. 11 1
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeNewService.java
  12. 33 6
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeNewServiceImpl.java
  13. 3 2
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeRoomService.java
  14. 4 4
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeRoomServiceImpl.java

+ 12 - 3
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistributeNew/VoyageStockDistributeNewController.java

@@ -44,18 +44,27 @@ public class VoyageStockDistributeNewController {
 
     @Operation(summary = "获取航次库存分配")
     @GetMapping("/getByVoyageId")
-    public CommonResult<List<VoyageStockDistributeNewRespVO>> getByVoyageId(@RequestParam("voyageId") Long voyageId) {
-        List<VoyageStockDistributeNewRespVO> list = voyageStockDistributeNewService.getByVoyageId(voyageId);
+    public CommonResult<List<VoyageStockDistributeNewRespVO>> getByVoyageId(@RequestParam("voyageId") Long voyageId, @RequestParam("type") Integer type) {
+        List<VoyageStockDistributeNewRespVO> list = voyageStockDistributeNewService.getByVoyageId(voyageId, type);
         return success(list);
     }
 
     @GetMapping("/getRoomList")
-    @Operation(summary = "获取航次库存分配房间列表")
+    @Operation(summary = "获取航次库存分配房间列表, 运营端调用")
     public CommonResult<List<RoomRespDTO>> getRoomList(@RequestParam("voyageId") Long voyageId, @RequestParam("shipId") Long shipId) {
         List<RoomRespDTO> list = voyageStockDistributeNewService.getRoomList(voyageId, shipId);
         return success(list);
     }
 
+    @GetMapping("/getDistributorRoomList")
+    @Operation(summary = "获取航次库存分配房间列表, 分销商端调用")
+    public CommonResult<List<RoomRespDTO>> getDistributorRoomList(@RequestParam("voyageId") Long voyageId,
+                                                                  @RequestParam("shipId") Long shipId,
+                                                                  @RequestParam("distributorId") Long distributorId) {
+        List<RoomRespDTO> list = voyageStockDistributeNewService.getDistributorRoomList(voyageId, shipId, distributorId);
+        return success(list);
+    }
+
     @PostMapping("/getCanSelectRoomList")
     @Operation(summary = "分销商门店下单时获得可以选择的房间号")
     public CommonResult<List<RoomRespDTO>> getCanSelectRoomList(@RequestBody QueryCanSelectRoomListNewReqVO reqVO) {

+ 3 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistributeNew/vo/VoyageStockDistributeNewDetailReqVO.java

@@ -9,6 +9,9 @@ import lombok.ToString;
 @ToString(callSuper = true)
 public class VoyageStockDistributeNewDetailReqVO {
 
+    @Schema(description = "分销商ID", example = "2991")
+    private Long distributorId;
+
     @Schema(description = "分销商或门店ID", example = "2991")
     private Long objectId;
 

+ 3 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistributeNew/vo/VoyageStockDistributeNewPageReqVO.java

@@ -17,6 +17,9 @@ public class VoyageStockDistributeNewPageReqVO extends PageParam {
     @Schema(description = "船ID",  example = "1")
     private Long shipId;
 
+    @Schema(description = "分销商ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    private Long distributorId;
+
     @Schema(description = "分销商或者门店ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     @NotNull(message = "分销商或者门店ID不能为空")
     private Long objectId;

+ 3 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistributeNew/vo/VoyageStockDistributeNewRespVO.java

@@ -13,6 +13,9 @@ public class VoyageStockDistributeNewRespVO {
     @Schema(description = "ID", example = "1")
     private Long id;
 
+    @Schema(description = "分销商ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    private Long distributorId;
+
     @Schema(description = "分销商或者门店ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     private Long objectId;
 

+ 3 - 1
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistributeNew/vo/VoyageStockDistributeNewSaveReqVO.java

@@ -1,6 +1,5 @@
 package com.yc.ship.module.product.controller.admin.voyagestockdistributeNew.vo;
 
-import com.yc.ship.module.product.dal.dataobject.voyagestockdistribute.VoyageStockDistributeRoomDO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -14,6 +13,9 @@ public class VoyageStockDistributeNewSaveReqVO {
     @Schema(description = "ID", example = "1")
     private Long id;
 
+    @Schema(description = "分销商ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    private Long distributorId;
+
     @Schema(description = "分销商或者门店ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     private Long objectId;
 

+ 2 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/controller/admin/voyagestockdistributeNew/vo/VoyageStockDistributorRoomSaveReqVO.java

@@ -7,6 +7,8 @@ import lombok.Data;
 @Data
 public class VoyageStockDistributorRoomSaveReqVO {
 
+    @Schema(description = "分销商ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    private Long distributorId;
     /**
      * 分销商ID或者门店ID
      */

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

@@ -29,6 +29,11 @@ public class VoyageStockDistributeNewDO extends TenantBaseDO {
     @TableId(type = IdType.ASSIGN_ID)
     private Long id;
 
+    /**
+     * 分销商ID
+     */
+    private Long distributorId;
+
     /**
      * 分销商ID或者门店ID
      */

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

@@ -30,6 +30,10 @@ public class VoyageStockDistributeRoomDO extends TenantBaseDO {
     @TableId(type = IdType.ASSIGN_ID)
     private Long id;
 
+    /**
+     * 分销商ID
+     */
+    private Long distributorId;
     /**
      * 分销商ID或者门店ID
      */

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

@@ -23,9 +23,10 @@ import java.util.List;
 public interface VoyageStockDistributeNewMapper extends BaseMapperX<VoyageStockDistributeNewDO> {
 
 
-    default List<VoyageStockDistributeNewDO> selectListByVoyageId(Long voyageId) {
+    default List<VoyageStockDistributeNewDO> selectListByVoyageId(Long voyageId,Integer type) {
         return selectList(new LambdaQueryWrapperX<VoyageStockDistributeNewDO>()
-                .eq(VoyageStockDistributeNewDO::getVoyageId, voyageId));
+                .eq(VoyageStockDistributeNewDO::getVoyageId, voyageId)
+                .eq(VoyageStockDistributeNewDO::getType, type));
     }
 
     IPage<VoyageStockDistributeNewPageRespVO> selectPage(IPage<VoyageStockDistributeNewPageRespVO> page, @Param("params") VoyageStockDistributeNewPageReqVO reqVO);
@@ -33,6 +34,8 @@ public interface VoyageStockDistributeNewMapper extends BaseMapperX<VoyageStockD
     default List<VoyageStockDistributeNewDO> selectListByVoyageIdAndObjectId(VoyageStockDistributeNewDetailReqVO reqVO) {
         return selectList(new LambdaQueryWrapperX<VoyageStockDistributeNewDO>()
                 .eq(VoyageStockDistributeNewDO::getVoyageId, reqVO.getVoyageId())
-                .eqIfPresent(VoyageStockDistributeNewDO::getObjectId, reqVO.getObjectId()));
+                .eqIfPresent(VoyageStockDistributeNewDO::getObjectId, reqVO.getObjectId())
+                .eqIfPresent(VoyageStockDistributeNewDO::getDistributorId, reqVO.getDistributorId())
+                .eq(VoyageStockDistributeNewDO::getType, reqVO.getType()));
     }
 }

+ 10 - 6
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/mysql/voyagestockdistribute/VoyageStockDistributeRoomMapper.java

@@ -20,21 +20,25 @@ import java.util.List;
 public interface VoyageStockDistributeRoomMapper extends BaseMapperX<VoyageStockDistributeRoomDO> {
 
 
-    default List<VoyageStockDistributeRoomDO> selectListByVoyageId(Long voyageId) {
+    default List<VoyageStockDistributeRoomDO> selectListByVoyageId(Long voyageId, Integer  type) {
         return selectList(new LambdaQueryWrapperX<VoyageStockDistributeRoomDO>()
-                .eq(VoyageStockDistributeRoomDO::getVoyageId, voyageId));
+                .eq(VoyageStockDistributeRoomDO::getVoyageId, voyageId)
+                .eq(VoyageStockDistributeRoomDO::getType, type));
     }
 
-    default void deleteByVoyageId(Long voyageId) {
+    default void deleteByVoyageId(Long voyageId, Integer  type) {
         delete(new LambdaQueryWrapperX<VoyageStockDistributeRoomDO>()
-                .eq(VoyageStockDistributeRoomDO::getVoyageId, voyageId));
+                .eq(VoyageStockDistributeRoomDO::getVoyageId, voyageId)
+                .eq(VoyageStockDistributeRoomDO::getType, type));
     }
 
     List<VoyageStockDistributeRoomDO> selectListByRoomModelIdAndFloor(@Param("objectId") Long objectId, @Param("roomModelIdFloorList") List<String> roomModelIdFloorList);
 
     default List<VoyageStockDistributeRoomDO> selectListByVoyageIdAndObjectId(VoyageStockDistributeNewDetailReqVO reqVO) {
-        return selectList(new LambdaQueryWrapper<VoyageStockDistributeRoomDO>()
+        return selectList(new LambdaQueryWrapperX<VoyageStockDistributeRoomDO>()
                 .eq(VoyageStockDistributeRoomDO::getVoyageId, reqVO.getVoyageId())
-                .eq(VoyageStockDistributeRoomDO::getObjectId, reqVO.getObjectId()));
+                .eqIfPresent(VoyageStockDistributeRoomDO::getObjectId, reqVO.getObjectId())
+                .eqIfPresent(VoyageStockDistributeRoomDO::getDistributorId, reqVO.getDistributorId())
+                .eq(VoyageStockDistributeRoomDO::getType, reqVO.getType()));
     }
 }

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

@@ -23,9 +23,10 @@ public interface VoyageStockDistributeNewService {
     /**
      * 获取航次库存分配
      * @param voyageId
+     * @param type
      * @return
      */
-    List<VoyageStockDistributeNewRespVO> getByVoyageId(Long voyageId);
+    List<VoyageStockDistributeNewRespVO> getByVoyageId(Long voyageId, Integer type);
 
     /**
      * 获取房间列表
@@ -45,4 +46,13 @@ public interface VoyageStockDistributeNewService {
     PageResult<VoyageStockDistributeNewPageRespVO> getPage(VoyageStockDistributeNewPageReqVO reqVO);
 
     List<VoyageStockDistributeNewRespVO> getDetail(VoyageStockDistributeNewDetailReqVO reqVO);
+
+    /**
+     * 获取分销商房间列表
+     * @param voyageId
+     * @param shipId
+     * @param distributorId
+     * @return
+     */
+    List<RoomRespDTO> getDistributorRoomList(Long voyageId, Long shipId, Long distributorId);
 }

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

@@ -29,6 +29,7 @@ import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 
 /**
@@ -64,8 +65,9 @@ public class VoyageStockDistributeNewServiceImpl implements VoyageStockDistribut
     public void createVoyageStockDistributeNew(List<VoyageStockDistributeNewSaveReqVO> createReqVO) {
         BigDecimal zero = BigDecimal.ZERO;
         Long voyageId = createReqVO.get(0).getVoyageId();
+        Integer type = createReqVO.get(0).getType();
         //删除分配的房间
-        voyageStockDistributeRoomService.deleteByVoyageId(voyageId);
+        voyageStockDistributeRoomService.deleteByVoyageId(voyageId, type);
         // 分配的房间列表
         List<VoyageStockDistributeRoomDO> roomList = new ArrayList<>();
         createReqVO.stream().forEach(item -> {
@@ -75,7 +77,7 @@ public class VoyageStockDistributeNewServiceImpl implements VoyageStockDistribut
         });
         voyageStockDistributeRoomService.createVoyageStockDistributeRoomBatch(roomList);
         //修改或插入库存表
-        List<VoyageStockDistributeNewDO> list = voyageStockDistributeNewMapper.selectListByVoyageId(voyageId);
+        List<VoyageStockDistributeNewDO> list = voyageStockDistributeNewMapper.selectListByVoyageId(voyageId, type);
         if(CollectionUtils.isAnyEmpty(list)) { // 为空则新增
             list = BeanUtils.toBean(createReqVO, VoyageStockDistributeNewDO.class);
             list.stream().forEach(item -> {
@@ -113,10 +115,10 @@ public class VoyageStockDistributeNewServiceImpl implements VoyageStockDistribut
     }
 
     @Override
-    public List<VoyageStockDistributeNewRespVO> getByVoyageId(Long voyageId) {
-        List<VoyageStockDistributeNewDO> list = voyageStockDistributeNewMapper.selectListByVoyageId(voyageId);
+    public List<VoyageStockDistributeNewRespVO> getByVoyageId(Long voyageId, Integer type) {
+        List<VoyageStockDistributeNewDO> list = voyageStockDistributeNewMapper.selectListByVoyageId(voyageId, type);
         List<VoyageStockDistributeNewRespVO> respList = BeanUtils.toBean(list, VoyageStockDistributeNewRespVO.class);
-        List<VoyageStockDistributeRoomDO> roomList = voyageStockDistributeRoomService.getListByVoyageId(voyageId);
+        List<VoyageStockDistributeRoomDO> roomList = voyageStockDistributeRoomService.getListByVoyageId(voyageId, type);
         Map<String, List<VoyageStockDistributeRoomDO>> map = CollectionUtils.convertMultiMap(roomList, (item) -> item.getObjectId() + "_" + item.getRoomModelId() + "_" + item.getFloor());
         respList.stream().forEach(item -> {
             item.setRoomList(BeanUtils.toBean(map.get(item.getObjectId() + "_" + item.getRoomModelId() + "_" + item.getFloor()),  VoyageStockDistributorRoomRespVO.class));
@@ -129,7 +131,7 @@ public class VoyageStockDistributeNewServiceImpl implements VoyageStockDistribut
         //获取该游轮的所有房间
         List<RoomRespDTO> roomList = roomApi.getRoomList(shipId);
         // 获取已被分配的房间
-        List<VoyageStockDistributeRoomDO> distributeRoomList = voyageStockDistributeRoomService.getListByVoyageId(voyageId);
+        List<VoyageStockDistributeRoomDO> distributeRoomList = voyageStockDistributeRoomService.getListByVoyageId(voyageId, DistributorOrStoreEnum.DISTRIBUTOR.getValue());
         List<Long> selectedRoomIds = CollectionUtils.convertList(distributeRoomList, VoyageStockDistributeRoomDO::getRoomId);
         roomList.stream().forEach(item -> {
             item.setIsSelected(selectedRoomIds.contains(item.getId()));
@@ -197,4 +199,29 @@ public class VoyageStockDistributeNewServiceImpl implements VoyageStockDistribut
         });
         return respVO;
     }
+
+    @Override
+    public List<RoomRespDTO> getDistributorRoomList(Long voyageId, Long shipId, Long distributorId) {
+        //获取该游轮的所有房间
+        List<RoomRespDTO> roomList = roomApi.getRoomList(shipId);
+        // 获取当前分销商已被分配的房间
+        VoyageStockDistributeNewDetailReqVO reqVO = new VoyageStockDistributeNewDetailReqVO();
+        reqVO.setVoyageId(voyageId);
+        reqVO.setObjectId(distributorId);
+        reqVO.setType(DistributorOrStoreEnum.DISTRIBUTOR.getValue());
+        List<VoyageStockDistributeRoomDO> distributeRoomList = voyageStockDistributeRoomService.getListByVoyageIdAndObjectId(reqVO);
+        List<Long> selectedRoomIds = CollectionUtils.convertList(distributeRoomList, VoyageStockDistributeRoomDO::getRoomId);
+        roomList = roomList.stream().filter(item -> selectedRoomIds.contains(item.getId())).collect(Collectors.toList());
+
+        //获取已被门店选择的房间
+        List<VoyageStockDistributeRoomDO> storeRoomList = voyageStockDistributeRoomService.getListByVoyageId(voyageId, DistributorOrStoreEnum.STORE.getValue());
+        List<Long> selectedStoreRoomIds = CollectionUtils.convertList(storeRoomList, VoyageStockDistributeRoomDO::getRoomId);
+
+        roomList.stream().forEach(item -> {
+            item.setIsSelected(selectedStoreRoomIds.contains(item.getId()));
+            //TODO 待完善,已被销售的房间不可操作
+            item.setDisabled(false);//当前全部都可操作
+        });
+        return roomList;
+    }
 }

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

@@ -18,13 +18,14 @@ public interface VoyageStockDistributeRoomService {
      * @param voyageId
      * @return
      */
-    List<VoyageStockDistributeRoomDO> getListByVoyageId(Long voyageId);
+    List<VoyageStockDistributeRoomDO> getListByVoyageId(Long voyageId, Integer type);
 
     /**
      * 删除该航次已分配的房间
      * @param voyageId
+     * @param type
      */
-    void deleteByVoyageId(Long voyageId);
+    void deleteByVoyageId(Long voyageId, Integer type);
 
     void createVoyageStockDistributeRoomBatch(List<VoyageStockDistributeRoomDO> roomList);
 

+ 4 - 4
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeRoomServiceImpl.java

@@ -24,13 +24,13 @@ public class VoyageStockDistributeRoomServiceImpl implements VoyageStockDistribu
 
 
     @Override
-    public List<VoyageStockDistributeRoomDO> getListByVoyageId(Long voyageId) {
-        return voyageStockDistributeRoomMapper.selectListByVoyageId(voyageId);
+    public List<VoyageStockDistributeRoomDO> getListByVoyageId(Long voyageId, Integer type) {
+        return voyageStockDistributeRoomMapper.selectListByVoyageId(voyageId,  type);
     }
 
     @Override
-    public void deleteByVoyageId(Long voyageId) {
-        voyageStockDistributeRoomMapper.deleteByVoyageId(voyageId);
+    public void deleteByVoyageId(Long voyageId, Integer type) {
+        voyageStockDistributeRoomMapper.deleteByVoyageId(voyageId, type);
     }
 
     @Override