Преглед на файлове

入住检测冲突房间
参数 body对象中加入 confirm:true ,表示忽略检测 强行入住

qh преди 2 години
родител
ревизия
7f8c81198b

+ 2 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/dto/BookingOrderSaveDto.java

@@ -26,4 +26,6 @@ public class BookingOrderSaveDto  {
     private String contactName;
     // 联系人电话
     private String phone;
+    // 确认入住
+    private Boolean confirm;
 }

+ 7 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/BusRoomBookingOrdersMapper.java

@@ -1,9 +1,11 @@
 package org.jeecg.modules.business.mapper;
 
+import java.util.Date;
 import java.util.List;
 
 import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.business.dto.TodayBookingQueryDto;
+import org.jeecg.modules.business.entity.BusBookingRooms;
 import org.jeecg.modules.business.entity.BusRoomBookingOrders;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
@@ -15,4 +17,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface BusRoomBookingOrdersMapper extends BaseMapper<BusRoomBookingOrders> {
     List<TodayBookingQueryDto> getTodayBookingOrder(@Param("roomIds") List<String> roomIds);
+
+    List<BusBookingRooms> conflictBookingTime(
+            @Param("startAt") Date startAt,
+            @Param("endAt") Date endAt,
+            @Param("roomIds") List<String> roomIds);
 }

+ 20 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/BusRoomBookingOrdersMapper.xml

@@ -13,4 +13,24 @@
             #{roomId}
         </foreach>
     </select>
+    
+    <select id="conflictBookingTime" resultType="org.jeecg.modules.business.entity.BusBookingRooms">
+        select CONCAT(IFNULL(r.prefix,''),r.`name`) as room_id from
+        (
+            select id from bus_room_booking_orders where booking_status = 1 and  arrival_time > now()
+            and
+            (
+                (#{startAt} > arrival_time and #{startAt} &lt; due_out_time)
+                or
+                (#{endAt} > arrival_time and #{endAt} &lt; due_out_time)
+            )
+        ) as o inner join bus_booking_rooms br
+        on o.id = br .booking_orders_id
+        inner join ces_rooms r
+        on r.id = br.room_id
+        where br.room_id in
+        <foreach collection="roomIds" item="roomId" open="(" close=")" separator=",">
+            #{roomId}
+        </foreach>
+    </select>
 </mapper>

+ 11 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusRoomBookingOrdersServiceImpl.java

@@ -84,7 +84,17 @@ public class BusRoomBookingOrdersServiceImpl extends ServiceImpl<BusRoomBookingO
 
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
         item.getOrderInfo().setBookingOrdersNo("YD"+sdf.format(System.currentTimeMillis()));
-//        if(item.getOrderInfo().getBookingType() == null)
+        // 检测是否时间安排上有冲突
+        List<String> roomIds = item.getRoomIds().stream().map(s->s.getRoomId()).collect(Collectors.toList());
+        if(item.getConfirm() == null || !item.getConfirm()){
+            if(roomIds.size() > 0) {
+                List<BusBookingRooms> bookingRooms = baseMapper.conflictBookingTime(item.getOrderInfo().getArrivalTime(),item.getOrderInfo().getDueOutTime(),roomIds);
+                if(bookingRooms.size() > 0) {
+                    String roomNames = bookingRooms.stream().map(p->p.getRoomId()).collect(Collectors.joining("|"));
+                    throw new JeecgBootException("房间["+roomNames+"]与预约时间有冲突");
+                }
+            }
+        }
 
         if(item.getOrderInfo().getCustomerSource() == null || item.getOrderInfo().getCustomerSource().isEmpty())
             throw new JeecgBootException("客人来源不能为空");