Răsfoiți Sursa

身份证报到功能开发

baiyun 1 an în urmă
părinte
comite
4c067266a8

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

@@ -6,6 +6,8 @@ import lombok.RequiredArgsConstructor;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.*;
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.hotel.domain.bo.KfGuestBo;
+import org.dromara.hotel.domain.vo.KfTeamGuestVo;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.validation.annotation.Validated;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
@@ -97,6 +99,15 @@ public class KfOrderController extends BaseController {
         return toAjax(kfOrderService.insertByBo(bo));
     }
 
+    /**
+     * 根据身份证或手机号查询报到信息
+     */
+    @SaCheckPermission("business:guestOrder:list")
+    @GetMapping("/getTeamGuestCheckInfo")
+    public R<KfTeamGuestVo> getTeamGuestCheckInfo(KfGuestBo bo, PageQuery pageQuery) {
+        return kfOrderService.getTeamGuestCheckInfo(bo);
+    }
+
     /**
      * 团客锁房指定房间
      */

+ 97 - 0
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/domain/vo/KfTeamGuestVo.java

@@ -0,0 +1,97 @@
+package org.dromara.hotel.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import org.dromara.hotel.domain.KfGuest;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+ * 客人管理视图对象 t_kf_guest
+ *
+ * @author LionLi
+ * @date 2024-11-11
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = KfTeamGuestVo.class)
+public class KfTeamGuestVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @ExcelProperty(value = "ID")
+    private Long id;
+
+    /**
+     * 姓名
+     */
+    @ExcelProperty(value = "姓名")
+    private String name;
+
+    /**
+     * 性别
+     */
+    @ExcelProperty(value = "性别", converter = ExcelDictConvert.class)
+    @ExcelDictFormat(dictType = "sys_user_sex")
+    private String sex;
+
+    /**
+     * 身份证号
+     */
+    @ExcelProperty(value = "身份证号")
+    private String idCard;
+
+    /**
+     * 手机号
+     */
+    @ExcelProperty(value = "手机号")
+    private String phone;
+
+    private String teamName;
+    private Long teamId;
+    private Long orderId;
+    private String roomName;
+    private String roomCode;
+    private String checkInStatus;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remark;
+
+    /**
+     * 原始数据ID
+     */
+    private String otherId;
+    /**
+     * 创建人
+     */
+    @ExcelProperty(value = "创建人")
+    private Long createBy;
+
+    /**
+     * 创建时间
+     */
+    @ExcelProperty(value = "创建时间")
+    private Date createTime;
+
+    /**
+     * 数据来源
+     */
+    @ExcelProperty(value = "数据来源", converter = ExcelDictConvert.class)
+    private String dataSource;
+
+
+}

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

@@ -5,8 +5,10 @@ import org.apache.ibatis.annotations.Param;
 import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
 import org.dromara.hotel.api.domain.vo.RemoteOrderVo;
 import org.dromara.hotel.domain.KfOrder;
+import org.dromara.hotel.domain.bo.KfGuestBo;
 import org.dromara.hotel.domain.bo.KfOrderBo;
 import org.dromara.hotel.domain.vo.KfOrderVo;
+import org.dromara.hotel.domain.vo.KfTeamGuestVo;
 
 import java.util.List;
 
@@ -23,6 +25,9 @@ public interface KfOrderMapper extends BaseMapperPlus<KfOrder, KfOrderVo> {
 
     List<KfOrderVo> queryTeamGuest(Long teamId,String guestName);
 
+    /** 查看团客报到信息*/
+    KfTeamGuestVo getTeamGuestCheckInfo(@Param("bo") KfGuestBo bo);
+
     RemoteOrderVo selectByBo(@Param("bo") KfOrderBo bo);
 
     /** 根据房间code修改房间状态*/

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

@@ -1,11 +1,14 @@
 package org.dromara.hotel.service;
 
+import org.dromara.common.core.domain.R;
 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.KfGuestBo;
 import org.dromara.hotel.domain.bo.KfOrderBo;
 import org.dromara.hotel.domain.vo.KfOrderVo;
+import org.dromara.hotel.domain.vo.KfTeamGuestVo;
 import org.dromara.hotel.domain.vo.OrderAndGuestVo;
 
 import java.util.Collection;
@@ -50,6 +53,9 @@ public interface IKfOrderService {
 
     List<KfOrderVo> queryTeamGuest(Long teamId, String guestName);
 
+    /** 查看团客报到信息*/
+    R<KfTeamGuestVo> getTeamGuestCheckInfo(KfGuestBo bo);
+
     /**
      * 新增散客入住
      *

+ 22 - 4
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/service/impl/KfOrderServiceImpl.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.RequiredArgsConstructor;
 import org.dromara.common.core.constant.HotelBusinessConstants;
+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;
@@ -18,11 +19,9 @@ 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.KfOrder;
+import org.dromara.hotel.domain.bo.KfGuestBo;
 import org.dromara.hotel.domain.bo.KfOrderBo;
-import org.dromara.hotel.domain.vo.KfGuestVo;
-import org.dromara.hotel.domain.vo.KfOrderVo;
-import org.dromara.hotel.domain.vo.KfTeamVo;
-import org.dromara.hotel.domain.vo.OrderAndGuestVo;
+import org.dromara.hotel.domain.vo.*;
 import org.dromara.hotel.mapper.KfGuestMapper;
 import org.dromara.hotel.mapper.KfOrderMapper;
 import org.dromara.hotel.service.IKfGuestTeamRService;
@@ -111,6 +110,25 @@ public class KfOrderServiceImpl implements IKfOrderService {
         return baseMapper.queryTeamGuest(teamId, guestName);
     }
 
+    @Override
+    public R<KfTeamGuestVo> getTeamGuestCheckInfo(KfGuestBo bo) {
+        //1.查询团客信息
+        KfTeamGuestVo teamGuest = baseMapper.getTeamGuestCheckInfo(bo);
+        if(ObjectUtil.isEmpty(teamGuest)) {
+            return R.fail("未找到对应的团客人员信息");
+        }
+        //2.查询团客入住信息
+        KfOrder order = baseMapper.selectOne(Wrappers.<KfOrder>lambdaQuery()
+            .eq(KfOrder::getGuestId, teamGuest.getId())
+            .eq(KfOrder::getGuestId, teamGuest.getId()));
+        if(ObjectUtil.isNotEmpty(order)) {
+            teamGuest.setRoomCode(order.getRoomCode());
+            teamGuest.setRoomName(order.getRoomName());
+            teamGuest.setOrderId(order.getId());
+        }
+        return R.ok(teamGuest);
+    }
+
     private LambdaQueryWrapper<KfOrder> buildQueryWrapper(KfOrderBo bo) {
         Map<String, Object> params = bo.getParams();
         LambdaQueryWrapper<KfOrder> lqw = Wrappers.lambdaQuery();

+ 22 - 0
ruoyi-modules/ruoyi-hotel/src/main/resources/mapper/hotel/business/KfOrderMapper.xml

@@ -163,4 +163,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             </if>
         </where>
     </select>
+
+    <select id="getTeamGuestCheckInfo" resultType="org.dromara.hotel.domain.vo.KfTeamGuestVo">
+        select g.id, g.name, g.sex, g.id_card as idCard, g.phone,
+               case gtr.check_in_status when 'Y' then '已报到' else '未报到' end as checkInStatus
+                ,gtr.team_id as teamId, t.name as teamName
+        from t_kf_guest g
+            inner join t_kf_guest_team_r gtr on g.id = gtr.guest_id
+            inner join t_kf_team t on gtr.team_id = t.id
+        <where>
+            and g.del_flag = '0'
+            and t.del_flag = '0'
+            and gtr.del_flag = '0'
+            and current_time between t.start_time and t.end_time
+            <if test="bo.idCard != null and bo.idCard != ''">
+                 and g.id_card = #{bo.idCard}
+            </if>
+            <if test="bo.phone != null and bo.phone != ''">
+                 and g.phone = #{bo.phone}
+            </if>
+
+        </where>
+    </select>
 </mapper>