Procházet zdrojové kódy

fix: 处理搬单时,没有旅行社使用的共享库存返回可选房间的问题

luofeiyun před 4 týdny
rodič
revize
d322229c1a
11 změnil soubory, kde provedl 67 přidání a 7 odebrání
  1. 1 1
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/dal/mysql/voyagestockdistribute/VoyageStockDistributeRoomMapper.java
  2. 6 2
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeNewServiceImpl.java
  3. 1 1
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeRoomService.java
  4. 2 2
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/service/voyagestockdistribute/VoyageStockDistributeRoomServiceImpl.java
  5. 3 1
      ship-module-product/ship-module-product-biz/src/main/resources/mapper/voyagestockdistribute/VoyageStockDistributeRoomMapper.xml
  6. 7 0
      ship-module-resource/ship-module-resource-api/src/main/java/com/yc/ship/module/resource/api/room/RoomApi.java
  7. 6 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/api/room/RoomApiImpl.java
  8. 2 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/dal/mysql/room/ResourceRoomMapper.java
  9. 8 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/service/room/ResourceRoomService.java
  10. 8 0
      ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/service/room/ResourceRoomServiceImpl.java
  11. 23 0
      ship-module-resource/ship-module-resource-biz/src/main/resources/mapper/resourceroom/ResourceRoomMapper.xml

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

@@ -33,7 +33,7 @@ public interface VoyageStockDistributeRoomMapper extends BaseMapperX<VoyageStock
                 .eq(VoyageStockDistributeRoomDO::getType, type));
     }
 
-    List<VoyageStockDistributeRoomDO> selectListByRoomModelIdAndFloor(@Param("objectId") Long objectId, @Param("roomModelIdFloorList") List<String> roomModelIdFloorList);
+    List<VoyageStockDistributeRoomDO> selectListByRoomModelIdAndFloor(@Param("objectId") Long objectId, @Param("voyageId") Long voyageId, @Param("roomModelIdFloorList") List<String> roomModelIdFloorList);
 
     default List<VoyageStockDistributeRoomDO> selectListByVoyageIdAndObjectId(VoyageStockDistributeNewDetailReqVO reqVO) {
         return selectList(new LambdaQueryWrapperX<VoyageStockDistributeRoomDO>()

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

@@ -178,13 +178,17 @@ public class VoyageStockDistributeNewServiceImpl implements VoyageStockDistribut
         type = DistributorOrStoreEnum.DISTRIBUTOR.getValue();
         List<VoyageStockDistributeRoomDO> roomList;
         if(type.equals(DistributorOrStoreEnum.DISTRIBUTOR.getValue())) {
-            roomList = voyageStockDistributeRoomService.getRoomListByRoomModelIdAndFloor(reqVO.getDistributorId(), reqVO.getRoomModelIdFloorList());
+            roomList = voyageStockDistributeRoomService.getRoomListByRoomModelIdAndFloor(reqVO.getDistributorId(), reqVO.getVoyageId(), reqVO.getRoomModelIdFloorList());
         }else if(type.equals(DistributorOrStoreEnum.STORE.getValue())) {
-            roomList = voyageStockDistributeRoomService.getRoomListByRoomModelIdAndFloor(reqVO.getStoreId(), reqVO.getRoomModelIdFloorList());
+            roomList = voyageStockDistributeRoomService.getRoomListByRoomModelIdAndFloor(reqVO.getStoreId(), reqVO.getVoyageId(), reqVO.getRoomModelIdFloorList());
         }else {
             roomList = new ArrayList<>();
         }
         List<Long> roomIds = CollectionUtils.convertList(roomList, VoyageStockDistributeRoomDO::getRoomId);
+        if(CollectionUtils.isAnyEmpty(roomIds) && reqVO.getDistributorId() == null && reqVO.getStoreId() == null) {
+            List<RoomRespDTO> canSelectRoomList = roomApi.getCanSelectRoomList(reqVO.getShipId(), reqVO.getRoomModelIdFloorList());
+            roomIds = CollectionUtils.convertList(canSelectRoomList, RoomRespDTO::getId);
+        }
         //获取完全被使用的房间
         List<VoyageStockRoomUsedDO> allUsedList = voyageStockRoomUsedMapper.selectAllUsedList(reqVO.getVoyageId());
         List<Long> allUserRoomId = CollectionUtils.convertList(allUsedList, VoyageStockRoomUsedDO::getRoomId);

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

@@ -36,7 +36,7 @@ public interface VoyageStockDistributeRoomService {
      * @param roomModelIdFloorList 房型ID和楼层号列表
      * @return
      */
-    List<VoyageStockDistributeRoomDO> getRoomListByRoomModelIdAndFloor(Long objectId, List<String> roomModelIdFloorList);
+    List<VoyageStockDistributeRoomDO> getRoomListByRoomModelIdAndFloor(Long objectId, Long voyageId, List<String> roomModelIdFloorList);
 
     List<VoyageStockDistributeRoomDO> getListByVoyageIdAndObjectId(VoyageStockDistributeNewDetailReqVO reqVO);
 

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

@@ -43,8 +43,8 @@ public class VoyageStockDistributeRoomServiceImpl implements VoyageStockDistribu
     }
 
     @Override
-    public List<VoyageStockDistributeRoomDO> getRoomListByRoomModelIdAndFloor(Long objectId, List<String> roomModelIdFloorList) {
-        return voyageStockDistributeRoomMapper.selectListByRoomModelIdAndFloor(objectId, roomModelIdFloorList);
+    public List<VoyageStockDistributeRoomDO> getRoomListByRoomModelIdAndFloor(Long objectId, Long voyageId, List<String> roomModelIdFloorList) {
+        return voyageStockDistributeRoomMapper.selectListByRoomModelIdAndFloor(objectId, voyageId, roomModelIdFloorList);
     }
 
     @Override

+ 3 - 1
ship-module-product/ship-module-product-biz/src/main/resources/mapper/voyagestockdistribute/VoyageStockDistributeRoomMapper.xml

@@ -11,7 +11,9 @@
 
     <select id="selectListByRoomModelIdAndFloor" resultType="com.yc.ship.module.product.dal.dataobject.voyagestockdistribute.VoyageStockDistributeRoomDO">
        select * from product_voyage_stock_distribute_room
-                where deleted = 0 and object_id = #{objectId}
+                where deleted = 0
+                  and voyage_id = #{voyageId}
+                  and object_id = #{objectId}
                 and concat(room_model_id, '_', floor) in
                 <foreach item="item" collection="roomModelIdFloorList" separator="," open="(" close=")" index="index">
                     #{item}

+ 7 - 0
ship-module-resource/ship-module-resource-api/src/main/java/com/yc/ship/module/resource/api/room/RoomApi.java

@@ -9,4 +9,11 @@ public interface RoomApi {
     List<RoomRespDTO> getRoomList(Long shipId);
 
     List<RoomRespDTO> getRoomListByIds(List<Long> ids);
+
+    /**
+     * 搬单时获取可以选择的房间
+     * @param shipId
+     * @return
+     */
+    List<RoomRespDTO> getCanSelectRoomList(Long shipId, List<String> roomModelIdFloorList);
 }

+ 6 - 0
ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/api/room/RoomApiImpl.java

@@ -60,4 +60,10 @@ public class RoomApiImpl implements RoomApi {
         });
         return respList;
     }
+
+    @Override
+    public List<RoomRespDTO> getCanSelectRoomList(Long shipId, List<String> roomModelIdFloorList) {
+        List<ResourceRoomDO> list = resourceRoomService.getRoomListByRoomModelIdAndFloor(shipId, roomModelIdFloorList);
+        return BeanUtils.toBean(list, RoomRespDTO.class);
+    }
 }

+ 2 - 0
ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/dal/mysql/room/ResourceRoomMapper.java

@@ -7,6 +7,7 @@ import com.yc.ship.module.resource.api.ship.dto.RoomModelFloorNumDTO;
 import com.yc.ship.module.resource.controller.admin.room.vo.ResourceRoomPageReqVO;
 import com.yc.ship.module.resource.dal.dataobject.room.ResourceRoomDO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 
 import java.util.List;
@@ -57,4 +58,5 @@ public interface ResourceRoomMapper extends BaseMapperX<ResourceRoomDO> {
     @Select("select t1.room_model_id as roomModelId, t1.floors as floor, count(t1.id) as num, t2.name as room_model_name from resource_room t1 left JOIN resource_room_model t2 on t1.room_model_id = t2.id where t1.ship_id = #{shipId} and t2.can_sale = 1 group by t1.room_model_id, t1.floors")
     List<RoomModelFloorNumDTO> selectRoomModelFloorToNum(Long shipId);
 
+    List<ResourceRoomDO> selectRoomListByRoomModelIdAndFloor(@Param("shipId") Long shipId, @Param("roomModelIdFloorList") List<String> roomModelIdFloorList);
 }

+ 8 - 0
ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/service/room/ResourceRoomService.java

@@ -1,6 +1,7 @@
 package com.yc.ship.module.resource.service.room;
 
 import com.yc.ship.framework.common.pojo.PageResult;
+import com.yc.ship.module.resource.api.room.dto.RoomRespDTO;
 import com.yc.ship.module.resource.controller.admin.room.vo.ResourceRoomBatchSaveReqVO;
 import com.yc.ship.module.resource.controller.admin.room.vo.ResourceRoomPageReqVO;
 import com.yc.ship.module.resource.controller.admin.room.vo.ResourceRoomSaveReqVO;
@@ -77,4 +78,11 @@ public interface ResourceRoomService {
     Boolean createBatchRoom(ResourceRoomBatchSaveReqVO createReqVO);
 
     List<ResourceRoomDO> getRoomListByIds(List<Long> ids);
+    /**
+     * 根据房间模型ID和楼层获取房间列表
+     * @param shipId
+     * @param roomModelIdFloorList
+     * @return
+     */
+    List<ResourceRoomDO> getRoomListByRoomModelIdAndFloor(Long shipId, List<String> roomModelIdFloorList);
 }

+ 8 - 0
ship-module-resource/ship-module-resource-biz/src/main/java/com/yc/ship/module/resource/service/room/ResourceRoomServiceImpl.java

@@ -155,4 +155,12 @@ public class ResourceRoomServiceImpl implements ResourceRoomService {
         return roomMapper.selectByIds(ids);
     }
 
+    @Override
+    public List<ResourceRoomDO> getRoomListByRoomModelIdAndFloor(Long shipId, List<String> roomModelIdFloorList) {
+        if(CollectionUtils.isAnyEmpty(roomModelIdFloorList)) {
+            return Collections.emptyList();
+        }
+        return roomMapper.selectRoomListByRoomModelIdAndFloor(shipId, roomModelIdFloorList);
+    }
+
 }

+ 23 - 0
ship-module-resource/ship-module-resource-biz/src/main/resources/mapper/resourceroom/ResourceRoomMapper.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.yc.ship.module.resource.dal.mysql.room.ResourceRoomMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+
+    <select id="selectRoomListByRoomModelIdAndFloor"
+            resultType="com.yc.ship.module.resource.dal.dataobject.room.ResourceRoomDO">
+        select * from resource_room
+        where deleted = 0
+        and ship_id = #{shipId}
+        and concat(room_model_id, '_', floors) in
+        <foreach item="item" collection="roomModelIdFloorList" separator="," open="(" close=")" index="index">
+            #{item}
+        </foreach>
+    </select>
+</mapper>