Эх сурвалжийг харах

feature: 房态-团客入住

xiari 1 жил өмнө
parent
commit
ca0bebd141

+ 13 - 0
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/controller/KfGuestController.java

@@ -46,6 +46,19 @@ public class KfGuestController extends BaseController {
         return kfGuestService.queryPageList(bo, pageQuery);
     }
 
+    /**
+     * 根据团客id 分页查询客人列表
+     * @param bo
+     * @param pageQuery
+     * @return
+     */
+    @GetMapping("/getGuestByTeam")
+    public TableDataInfo<KfGuestVo> getGuestByTeam(KfGuestBo bo, PageQuery pageQuery) {
+        return kfGuestService.queryCustomPageListByTeam(bo, pageQuery);
+    }
+
+
+
     /**
      * 导出客人管理列表
      */

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

@@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.*;
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.hotel.domain.bo.CheckInOfTeamBo;
 import org.dromara.hotel.domain.bo.KfGuestBo;
 import org.dromara.hotel.domain.vo.KfTeamGuestVo;
 import org.springframework.web.bind.annotation.*;
@@ -165,4 +166,12 @@ public class KfOrderController extends BaseController {
                           @PathVariable Long[] ids) {
         return toAjax(kfOrderService.deleteWithValidByIds(List.of(ids), true));
     }
+
+    // 团客入住
+    @PostMapping("/checkInTeam")
+    @Log(title = "团客入住for房态", businessType = BusinessType.INSERT)
+    public R<Void> checkInTeam(@Validated(AddGroup.class) @RequestBody KfOrderBo bo) {
+        return toAjax(kfOrderService.checkInTeamFromRoomStatus(bo));
+    }
+
 }

+ 1 - 0
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/domain/bo/KfGuestBo.java

@@ -61,4 +61,5 @@ public class KfGuestBo extends BaseEntity {
      * 数据来源
      */
     private String dataSource;
+
 }

+ 5 - 0
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/domain/vo/KfGuestVo.java

@@ -86,4 +86,9 @@ public class KfGuestVo implements Serializable {
      */
 //    @ExcelProperty(value = "数据来源", converter = ExcelDictConvert.class)
     private String dataSource;
+
+    /**
+     * 入住状态,
+     */
+    private String checkInStatus;
 }

+ 5 - 0
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/mapper/KfGuestMapper.java

@@ -1,6 +1,9 @@
 package org.dromara.hotel.mapper;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
 import org.dromara.hotel.domain.KfGuest;
+import org.dromara.hotel.domain.bo.KfGuestBo;
 import org.dromara.hotel.domain.vo.KfGuestVo;
 import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
 
@@ -12,4 +15,6 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
  */
 public interface KfGuestMapper extends BaseMapperPlus<KfGuest, KfGuestVo> {
 
+    Page<KfGuestVo> customPageList(@Param("page") Page<KfGuest> page, @Param("bo") KfGuestBo bo);
+
 }

+ 8 - 0
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/service/IKfGuestService.java

@@ -33,6 +33,14 @@ public interface IKfGuestService {
      */
     TableDataInfo<KfGuestVo> queryPageList(KfGuestBo bo, PageQuery pageQuery);
 
+    /**
+     * 自定义分页查询
+     * @param bo 查询条件
+     * @param pageQuery 分页参数
+     * @return 客人管理分页列表
+     */
+    TableDataInfo<KfGuestVo> queryCustomPageListByTeam(KfGuestBo bo, PageQuery pageQuery);
+
     /**
      * 查询符合条件的客人管理列表
      *

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

@@ -5,6 +5,7 @@ import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.hotel.api.domain.bo.RemoteOrderBo;
 import org.dromara.hotel.api.domain.vo.RemoteOrderVo;
+import org.dromara.hotel.domain.bo.CheckInOfTeamBo;
 import org.dromara.hotel.domain.bo.KfGuestBo;
 import org.dromara.hotel.domain.bo.KfOrderBo;
 import org.dromara.hotel.domain.vo.KfOrderVo;
@@ -97,6 +98,9 @@ public interface IKfOrderService {
      * @return 订单信息
      */
     RemoteOrderVo selectByBo(KfOrderBo bo);
+
+
+    boolean checkInTeamFromRoomStatus(KfOrderBo bo);
     /**
      * 办理团客入住
       * @param remoteBo 入住业务对象

+ 13 - 0
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/service/impl/KfGuestServiceImpl.java

@@ -62,6 +62,19 @@ public class KfGuestServiceImpl implements IKfGuestService {
         return TableDataInfo.build(result);
     }
 
+    /**
+     * 自定义分页查询
+     *
+     * @param bo        查询条件
+     * @param pageQuery 分页参数
+     * @return 客人管理分页列表
+     */
+    @Override
+    public TableDataInfo<KfGuestVo> queryCustomPageListByTeam(KfGuestBo bo, PageQuery pageQuery) {
+        Page<KfGuestVo> kfGuestVoPage = baseMapper.customPageList(pageQuery.build(), bo);
+        return TableDataInfo.build(kfGuestVoPage);
+    }
+
     /**
      * 查询符合条件的客人管理列表
      *

+ 26 - 1
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/service/impl/KfOrderServiceImpl.java

@@ -17,6 +17,7 @@ import org.dromara.common.core.domain.R;
 import org.dromara.common.core.enums.HotelRoomStatusEnum;
 import org.dromara.common.core.exception.ServiceException;
 import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.SpringUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -346,6 +347,25 @@ public class KfOrderServiceImpl implements IKfOrderService {
         return baseMapper.selectByBo(bo);
     }
 
+    @Override
+    @Transactional
+    public boolean checkInTeamFromRoomStatus(KfOrderBo bo) {
+        // 查询 客人信息 是否有存在的订单
+        LambdaQueryWrapper<KfOrder> queryWrapper = Wrappers.lambdaQuery();
+        List<String> orderStatusYd = List.of(HotelBusinessConstants.ORDER_STATUS_YD, HotelBusinessConstants.ORDER_STATUS_RZ);
+        queryWrapper.in(KfOrder::getOrderStatus, orderStatusYd);
+        queryWrapper.and(e -> e.eq(KfOrder::getRoomCode, bo.getRoomCode()).or().eq(KfOrder::getGuestId, bo.getGuestId()));
+        // 已入住、已预定 不能再入住
+        // 房间状态是否为ok房 其他房不能入住
+        if(baseMapper.selectCount(queryWrapper) > 0){
+            throw new ServiceException("不能办理入住,原因:1.已入住或已预定,2.房间不是OK房");
+        }
+        //办理入住
+        RemoteOrderVo remoteOrderVo = checkInTeamByBoPrivate(bo);
+
+        return remoteOrderVo != null;
+    }
+
     /**
      * 办理团客入住
      *
@@ -353,9 +373,14 @@ public class KfOrderServiceImpl implements IKfOrderService {
      * @return 入住信息
      */
     @Override
+    @Transactional
     public RemoteOrderVo checkInTeamByBo(RemoteOrderBo remoteBo) {
-        List<String> orderStatusList = Arrays.asList("1", "2");
         KfOrderBo bo = MapstructUtils.convert(remoteBo, KfOrderBo.class);
+        return checkInTeamByBoPrivate(bo);
+    }
+
+    private RemoteOrderVo checkInTeamByBoPrivate(KfOrderBo bo) {
+        List<String> orderStatusList = Arrays.asList("1", "2");
         if (bo != null) {
             KfOrderVo vo = baseMapper.selectVoOne(
                 new LambdaQueryWrapper<KfOrder>()

+ 17 - 0
ruoyi-modules/ruoyi-hotel/src/main/resources/mapper/hotel/basics/KfGuestMapper.xml

@@ -19,4 +19,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <result property="updateTime"    column="update_time"    />
             <result property="dataSource" column="data_source" />
     </resultMap>
+
+    <select id="customPageList" resultType="org.dromara.hotel.domain.vo.KfGuestVo">
+        select g.*,
+       (CASE o.order_status WHEN '1' THEN '已预定' WHEN '3' THEN '已入住' else '未入住' END) AS checkInStatus
+        from t_kf_guest_team_r tgr
+            left join t_kf_guest g on tgr.guest_id = g.id
+            left join t_kf_order o on g.id = o.guest_id
+        <where>
+            tgr.del_flag = '0' and o.order_status not in ('1','3')
+            <if test="bo.teamId != null">
+                and tgr.team_id = #{bo.teamId}
+            </if>
+            <if test="bo.name != null">
+                and g.name like concat('%', #{bo.name}, '%')
+            </if>
+        </where>
+    </select>
 </mapper>