Ver código fonte

feature: 房态-退房

xiari 1 ano atrás
pai
commit
6fbdb98f15

+ 12 - 0
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/controller/KfOrderController.java

@@ -153,6 +153,18 @@ public class KfOrderController extends BaseController {
     public R<Void> distributeOrder(@Validated(EditGroup.class) @RequestBody KfOrderBo bo) {
         return toAjax(kfOrderService.distributeOrder(bo));
     }
+
+    /**
+     * distributeForRoomStatus 批量退房
+     */
+    @SaCheckPermission("business:guestOrder:edit")
+    @Log(title = "批量退房|取消预定", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping("distributeForRoomStatus")
+    public R<Void> distributeForRoomStatus(@Validated(EditGroup.class) @RequestBody List<KfOrderBo> bo) {
+        return toAjax(kfOrderService.distributeForRoomStatus(bo));
+    }
+
     /**
      * 删除散客入住
      *

+ 8 - 0
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/mapper/KfOrderMapper.java

@@ -33,6 +33,14 @@ public interface KfOrderMapper extends BaseMapperPlus<KfOrder, KfOrderVo> {
     /** 根据房间code修改房间状态*/
     int updateRoomStatus(@Param("roomCode") String roomCode, @Param("status") String status);
 
+    /**
+     * 批量更新房态
+     * @param roomCodes
+     * @param status
+     * @return
+     */
+    int updateRoomStatusBatch(@Param("roomCodes") List<String> roomCodes, @Param("status") String status);
+
     /// 根据姓名或手机号查询订单
     List<KfOrderVo> queryListByGuestNameOrPhone(@Param("nameOrPhone") String nameOrPhone,
                                                 @Param("orderStatusList") List<String> orderStatusList);

+ 2 - 0
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/service/IKfOrderService.java

@@ -81,6 +81,8 @@ public interface IKfOrderService {
      * 退房
      */
     Boolean distributeOrder(KfOrderBo bo);
+
+    Boolean distributeForRoomStatus(List<KfOrderBo> bo);
     /**
      * 校验并批量删除散客入住信息
      *

+ 50 - 0
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/service/impl/KfOrderServiceImpl.java

@@ -313,6 +313,56 @@ public class KfOrderServiceImpl implements IKfOrderService {
         return flag;
     }
 
+    /**
+     * 批量取消订单
+     * @param bo 预定和入住的订单
+     * @return
+     */
+    @Transactional
+    public Boolean distributeForRoomStatus(List<KfOrderBo> bo) {
+        boolean flag = false;
+        if(CollectionUtil.isEmpty(bo)){
+            return flag;
+        }
+        // 1. 修改订单状态 只有预定和入住的可以退房
+        List<String> orderStatusYd = List.of(HotelBusinessConstants.ORDER_STATUS_YD, HotelBusinessConstants.ORDER_STATUS_RZ);
+        List<KfOrderBo> kfOrderBos = bo.stream().filter(item -> orderStatusYd.contains(item.getOrderStatus())).toList();
+        if(CollectionUtil.isEmpty(kfOrderBos)){
+            return flag;
+        }
+        List<KfOrder> convert = new ArrayList<>();
+        kfOrderBos.forEach(item -> {
+            KfOrder kfOrder = new KfOrder();
+            kfOrder.setId(item.getId());
+            kfOrder.setOrderStatus(item.getOrderStatus());
+            if(HotelBusinessConstants.ORDER_STATUS_YD.equals(item.getOrderStatus())){
+                item.setOrderStatus(HotelBusinessConstants.ORDER_STATUS_QX);
+            }else{
+                item.setOrderStatus(HotelBusinessConstants.ORDER_STATUS_TF);
+            }
+        });
+
+        if(CollectionUtil.isEmpty(convert)){
+            return flag;
+        }
+        boolean b = baseMapper.updateBatchById(convert);
+        if(!b){
+            return flag;
+        }
+        // 2. 修改房间状态 updateRoomStatusBatch
+        List<KfOrder> oks = convert.stream().filter(item -> HotelBusinessConstants.ORDER_STATUS_QX.equals(item.getOrderStatus())).toList();
+        //ok房
+        List<String> okRoomCodes = oks.stream().map(KfOrder::getRoomCode).toList();
+        int i = baseMapper.updateRoomStatusBatch(okRoomCodes, HotelRoomStatusEnum.OK.code());
+
+        List<KfOrder> zfs = convert.stream().filter(item -> HotelBusinessConstants.ORDER_STATUS_TF.equals(item.getOrderStatus())).toList();
+        //脏房
+        List<String> zfRoomCodes = zfs.stream().map(KfOrder::getRoomCode).toList();
+        int j = baseMapper.updateRoomStatusBatch(zfRoomCodes, HotelRoomStatusEnum.ZF.code());
+
+        return i > 0 && j > 0;
+    }
+
     /**
      * 保存前的数据校验
      */

+ 9 - 1
ruoyi-modules/ruoyi-hotel/src/main/resources/mapper/hotel/business/KfOrderMapper.xml

@@ -133,6 +133,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         update t_pt_room set status = #{status} where room_code = #{roomCode}
     </update>
 
+    <update id="updateRoomStatusBatch" >
+        update t_pt_room set status = #{status} where room_code in (
+        <foreach collection="roomCodes" item="roomCode" separator=",">
+            #{roomCode}
+        </foreach>
+        )
+    </update>
+
     <select id = "queryListByGuestNameOrPhone" resultType="org.dromara.hotel.domain.vo.KfOrderVo">
         select o.*, g.name as guestName, g.phone,g.id_card as idCard, g.sex from t_kf_order o
         left join t_kf_guest g on o.guest_id = g.id
@@ -151,7 +159,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
     <select id = "queryByRoomCodes" resultType="org.dromara.hotel.api.domain.vo.RemoteOrderVo">
-        select o.*, g.name as name, g.phone,g.id_card as idCard, g.sex from t_kf_order o
+        select o.*, g.name as name, g.phone,g.id_card as idCard, g.sex,o.start_time as checkinDate, o.end_time as checkoutDate from t_kf_order o
         left join t_kf_guest g on o.guest_id = g.id
         <where>
             g.del_flag = '0' and o.del_flag = '0'