ソースを参照

房态 继续完善

qh 2 年 前
コミット
708b1f17ab

+ 6 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/DTO/CanUseRequestParamDto.java

@@ -1,12 +1,18 @@
 package org.jeecg.modules.rooms.DTO;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
 
 @Data
 public class CanUseRequestParamDto {
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
     private Date startOf;
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
     private Date endOf;
     private String hotelId;
 

+ 3 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/controller/CesRoomsController.java

@@ -114,7 +114,9 @@ public class CesRoomsController {
     public Result getCanUseRooms(CanUseRequestParamDto param) {
         if(param.getHotelId()==null || param.getHotelId().isEmpty())
             throw new JeecgBootException("参数错误");
-        return Result.ok(roomsService.getCanUseRooms(param.getHotelId()));
+        if(param.getEndOf() == null || param.getStartOf() == null)
+            throw new JeecgBootException("请传入时间范围");
+        return Result.ok(roomsService.getCanUseRooms(param));
     }
 
 

+ 41 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/mapper/CesRoomsMapper.java

@@ -1,8 +1,12 @@
 package org.jeecg.modules.rooms.mapper;
 
+import org.apache.ibatis.annotations.Select;
 import org.jeecg.modules.rooms.entity.CesRooms;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
+import java.util.Date;
+import java.util.List;
+
 /**
  * <p>
  *  Mapper 接口
@@ -13,4 +17,41 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface CesRoomsMapper extends BaseMapper<CesRooms> {
 
+    @Select("SELECT\n" +
+            "\t* \n" +
+            "FROM\n" +
+            "\tces_rooms \n" +
+            "WHERE\n" +
+            "\thotel_id = #{hotelId}\n" +
+            "\tand\n" +
+            "\tinvalid = 0\n" +
+            "\tand \n" +
+            "\tstate = 1\n" +
+            "\tand \n" +
+            "\tid NOT IN (\n" +
+            "\tSELECT DISTINCT\n" +
+            "\t\tbr.room_id \n" +
+            "\tFROM\n" +
+            "\t\tbus_booking_rooms br\n" +
+            "\t\tINNER JOIN bus_room_booking_orders o ON br.booking_orders_id = o.id \n" +
+            "\tWHERE\n" +
+            "\t\tbr.booking_type = 1 \n" +
+            "\t\tAND o.booking_status = 1 \n" +
+            "\t\tAND ( ( o.arrival_time <= #{startOf} AND o.due_out_time >= #{startOf} ) -- 预抵时间在别的客人预定时间范围内\n" +
+            "\t\t\tOR ( o.arrival_time <= #{endOf} AND o.due_out_time >= #{endOf} ) -- 或者预离时间在别的客户预定范围内\n" +
+            "\t\t) UNION ALL\n" +
+            "\tSELECT\n" +
+            "\t\tbr.room_id \n" +
+            "\tFROM\n" +
+            "\t\tbus_booking_rooms br\n" +
+            "\t\tINNER JOIN bus_room_booking_orders o ON br.booking_orders_id = o.id\n" +
+            "\t\tINNER JOIN bus_booking_batch_info bi ON br.booking_batch_id = bi.id \n" +
+            "\t\tAND ( ( bi.arrival_time <= #{startOf} AND bi.due_out_time >= #{startOf} ) -- 预抵时间在别的客人预定时间范围内\n" +
+            "\t\t\tOR ( bi.arrival_time <= #{endOf} AND bi.due_out_time >= #{endOf} ) -- 或者预离时间在别的客户预定范围内\n" +
+            "\t\t) \n" +
+            "\tWHERE\n" +
+            "\t\tbr.booking_type = 2 \n" +
+            "\t\tAND o.booking_status = 1 \n" +
+            "\t)\n")
+    List<CesRooms> canUseRooms(String hotelId, Date startOf, Date endOf);
 }

+ 11 - 13
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/service/CesRoomsServiceImpl.java

@@ -19,10 +19,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.business.entity.BusHotel;
 import org.jeecg.modules.business.service.impl.BusHotelServiceImpl;
-import org.jeecg.modules.rooms.DTO.BatchBuildFloorRoomDto;
-import org.jeecg.modules.rooms.DTO.BatchRoomsDto;
-import org.jeecg.modules.rooms.DTO.CesRoomSearchDto;
-import org.jeecg.modules.rooms.DTO.CesRoomsDto;
+import org.jeecg.modules.rooms.DTO.*;
 import org.jeecg.modules.rooms.Enum.CouponEnums;
 import org.jeecg.modules.rooms.Enum.RoomStatusEnum;
 import org.jeecg.modules.rooms.Vo.CanUseBuildingRoomsVo;
@@ -248,25 +245,23 @@ public class CesRoomsServiceImpl extends ServiceImpl<CesRoomsMapper, CesRooms> i
 
     /**
      * 获取能使用的房间
-     * @param hotelId
+     * @param param
      * @return
      */
-    public List<CanUseResultVo> getCanUseRooms(String hotelId) {
+    public List<CanUseResultVo> getCanUseRooms(CanUseRequestParamDto param) {
         // 获取房型
-       List<CesRoomLayout> layouts = layoutService.list(Wrappers.<CesRoomLayout>query().eq("hotel_id",hotelId)
+       List<CesRoomLayout> layouts = layoutService.list(Wrappers.<CesRoomLayout>query().eq("hotel_id",param.getHotelId())
                .eq("invalid",false)
-               .eq("status", RoomStatusEnum.EMPTY_CLEAR)
        );
-       List<String> layoutIds = layouts.stream().map(s->s.getId()).collect(Collectors.toList());
-       List<CesRooms> allRooms = list(Wrappers.<CesRooms>query().in("layout_id",layoutIds).eq("invalid",false));
-       List<CesRoomBuildingFloor> allBuildingFloors = buildingFloorService.list(Wrappers.<CesRoomBuildingFloor>query().eq("hotel_id",hotelId).eq("invalid",false));
+       List<CesRooms> allRooms = baseMapper.canUseRooms(param.getHotelId(),param.getStartOf(),param.getEndOf());
+       List<CesRoomBuildingFloor> allBuildingFloors = buildingFloorService.list(Wrappers.<CesRoomBuildingFloor>query().eq("hotelId",param.getHotelId()).eq("invalid",false));
        List<CanUseResultVo> results = new ArrayList<>();
        List<CesRoomBuildingFloor> floors = allBuildingFloors.stream().filter(s->!s.getParentId().equals("0")).collect(Collectors.toList());
 
        layouts.forEach(s-> {
            CanUseResultVo item = new CanUseResultVo();
-           item.setLayout(s);
            List<CanUseBuildingRoomsVo> floorVos = new ArrayList<>();
+           final Integer[] canUseRoomCount = {0};
            floors.forEach(c->{
                CanUseBuildingRoomsVo floorRoomsVo  = new CanUseBuildingRoomsVo();
                List<CesRooms> floorRooms = allRooms.stream().filter(e->e.getFloorId().equals(c.getId())).collect(Collectors.toList());
@@ -277,9 +272,12 @@ public class CesRoomsServiceImpl extends ServiceImpl<CesRoomsMapper, CesRooms> i
                floorRoomsVo.setFloorId(c.getId());
                floorRoomsVo.setBuildingName(opBuilding.get().getName());
                floorRoomsVo.setBuildingId(opBuilding.get().getId());
+               canUseRoomCount[0] += floorRooms.size();
                floorVos.add(floorRoomsVo);
-
            });
+           // 可用房间数量,暂时就放在这个tags字段
+           s.setTags(canUseRoomCount[0].toString());
+           item.setLayout(s);
            item.setBuildingRooms(floorVos);
            results.add(item);
        });