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

feature: 学员自助
1.学员查询关联入住信息

luo.yibo@datuai.com 1 жил өмнө
parent
commit
3472b8ee07
33 өөрчлөгдсөн 749 нэмэгдсэн , 154 устгасан
  1. 1 0
      ruoyi-api/pom.xml
  2. 27 0
      ruoyi-api/ruoyi-api-hotel/pom.xml
  3. 85 0
      ruoyi-api/ruoyi-api-hotel/src/main/java/org/dromara/hotel/api/domain/bo/RemoteOrderBo.java
  4. 97 0
      ruoyi-api/ruoyi-api-hotel/src/main/java/org/dromara/hotel/api/domain/vo/RemoteOrderVo.java
  5. 23 0
      ruoyi-api/ruoyi-api-hotel/src/main/java/org/dromara/hotel/api/service/RemoteOrderService.java
  6. 10 0
      ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteDeptService.java
  7. 35 2
      ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteDeptVo.java
  8. 4 0
      ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheNames.java
  9. 12 0
      ruoyi-modules/ruoyi-backstage/pom.xml
  10. 1 1
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/accouunt/UserAccountBusiness.java
  11. 69 4
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/self/TraineeBusiness.java
  12. 23 22
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfConsumeDetailController.java
  13. 17 18
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/controller/self/TraineeController.java
  14. 13 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/domain/bo/yc/YcTraineeBo.java
  15. 17 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/domain/convert/YcVoConvert.java
  16. 6 1
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/domain/vo/yc/YcTraineeVo.java
  17. 6 10
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/mapper/PtUserAccountMapper.java
  18. 4 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/service/IPtUserAccountService.java
  19. 7 1
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/service/impl/PtUserAccountServiceImpl.java
  20. 66 44
      ruoyi-modules/ruoyi-backstage/src/main/resources/mapper/payment/PtUserAccountMapper.xml
  21. 6 0
      ruoyi-modules/ruoyi-hotel/pom.xml
  22. 10 4
      ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/domain/KfOrder.java
  23. 11 6
      ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/domain/bo/KfOrderBo.java
  24. 1 0
      ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/domain/vo/KfOrderVo.java
  25. 45 0
      ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/dubbo/RemoteOrderServiceImpl.java
  26. 4 0
      ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/mapper/KfOrderMapper.java
  27. 7 4
      ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/service/IKfOrderService.java
  28. 15 10
      ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/service/impl/KfOrderServiceImpl.java
  29. 13 0
      ruoyi-modules/ruoyi-hotel/src/main/resources/mapper/hotel/business/KfOrderMapper.xml
  30. 35 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java
  31. 24 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java
  32. 8 2
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java
  33. 47 25
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java

+ 1 - 0
ruoyi-api/pom.xml

@@ -15,6 +15,7 @@
         <module>ruoyi-api-workflow</module>
         <module>ruoyi-api-backstage</module>
         <module>ruoyi-api-consume</module>
+        <module>ruoyi-api-hotel</module>
     </modules>
 
     <artifactId>ruoyi-api</artifactId>

+ 27 - 0
ruoyi-api/ruoyi-api-hotel/pom.xml

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <groupId>org.dromara</groupId>
+        <artifactId>ruoyi-api</artifactId>
+        <version>${revision}</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>ruoyi-api-hotel</artifactId>
+
+    <description>
+        ruoyi-api-hotel 客房系统接口服务模块
+    </description>
+
+    <dependencies>
+
+        <!-- RuoYi Common Core-->
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>ruoyi-common-core</artifactId>
+        </dependency>
+    </dependencies>
+
+</project>

+ 85 - 0
ruoyi-api/ruoyi-api-hotel/src/main/java/org/dromara/hotel/api/domain/bo/RemoteOrderBo.java

@@ -0,0 +1,85 @@
+package org.dromara.hotel.api.domain.bo;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * name: ConsumeBo
+ * package: org.dromara.backstage.consumption.domain.bo
+ * description: 酒店系统入住远程业务对象
+ * date: 2024-09-04 08:53:02 08:53
+ *
+ * @author luoyibo
+ * @version 0.1
+ * @since JDK 1.8
+ */
+@Data
+@Accessors(chain = true)
+public class RemoteOrderBo implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 4558823680511276696L;
+
+    //region 客人基本信息
+    /**
+     * 客人ID
+     */
+    private Long guestId;
+
+    /**
+     * 姓名
+     */
+    private String name;
+
+    /**
+     * 身份证号
+     */
+    private String idCard;
+
+    /**
+     * 手机号
+     */
+    private String phone;
+
+    /**
+     * 原始数据ID
+     */
+    private String otherId;
+    //endregion
+
+    //region 客人入住信息
+    /**
+     * 客团ID
+     */
+    private Long teamId;
+
+    /**
+     * 房间编号
+     */
+    private String roomCode;
+
+    /**
+     * 入住时间
+     */
+    private Date startTime;
+
+    /**
+     * 退住时间
+     */
+    private Date endTime;
+
+    /**
+     * 订单类型 1-散客 2-团客
+     */
+    private String orderType;
+
+    /**
+     * 订单状态 1-预定 2-锁房 3-入住 4-取消 5-结束
+     * 团客指定房间时是预定状态
+     */
+    private String orderStatus;
+    //endregion
+}

+ 97 - 0
ruoyi-api/ruoyi-api-hotel/src/main/java/org/dromara/hotel/api/domain/vo/RemoteOrderVo.java

@@ -0,0 +1,97 @@
+package org.dromara.hotel.api.domain.vo;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @ClassName RemoteGuestVo
+ * @Description 酒店系统入住信息远程服务视图
+ * @Author luoyibo
+ * @Date 2024-11-14 20:10
+ * @Version 1.0
+ * @since jdk17
+ */
+@Data
+@Accessors(chain = true)
+public class RemoteOrderVo implements Serializable {
+    @Serial
+    private static final long serialVersionUID = -4941828023451615520L;
+
+    //region 客人基本信息
+    /**
+     * 客人ID
+     */
+    private Long guestId;
+
+    /**
+     * 姓名
+     */
+    private String name;
+
+    /**
+     * 性别
+     */
+    private String sex;
+
+    /**
+     * 身份证号
+     */
+    private String idCard;
+
+    /**
+     * 手机号
+     */
+    private String phone;
+
+    /**
+     * 原始数据ID
+     */
+    private String otherId;
+    //endregion
+
+    //region 客人入住信息
+    /**
+     * 客团ID
+     */
+    private Long teamId;
+
+    /**
+     * 房间编号
+     */
+    private String roomCode;
+    /**
+     * 房间Id
+     */
+    private String roomId;
+
+    /**
+     * 入住时间
+     */
+    private Date checkinDate;
+
+    /**
+     * 退住时间
+     */
+    private Date checkoutDate;
+
+    /**
+     * 订单类型 1-散客 2-团客
+     */
+    private String orderType;
+
+    /**
+     * 订单状态 1-预定 2-锁房 3-入住 4-取消 5-结束
+     * 团客指定房间时是预定状态
+     */
+    private String orderStatus;
+
+    /**
+     * 团客锁房时的排序号
+     */
+    private Integer orderIndex;
+    //endregion
+}

+ 23 - 0
ruoyi-api/ruoyi-api-hotel/src/main/java/org/dromara/hotel/api/service/RemoteOrderService.java

@@ -0,0 +1,23 @@
+package org.dromara.hotel.api.service;
+
+import org.dromara.hotel.api.domain.bo.RemoteOrderBo;
+import org.dromara.hotel.api.domain.vo.RemoteOrderVo;
+
+import java.util.List;
+
+/**
+ * @ClassName RemoteConsumeService
+ * @Description 酒店系统客人远程服务接口
+ * @Author luoyibo
+ * @Date 2024-11-12 12:40
+ * @Version 1.0
+ * @since jdk17
+ */
+public interface RemoteOrderService {
+
+    List<RemoteOrderVo> selectGuestOrder(RemoteOrderBo bo);
+
+    RemoteOrderVo selectGuesterOrderByOtherId(String otherId);
+
+    List<RemoteOrderVo> selectGuesterOrderByGuestId(Long guestId);
+}

+ 10 - 0
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteDeptService.java

@@ -5,6 +5,7 @@ import org.dromara.common.core.domain.R;
 import org.dromara.system.api.domain.bo.RemoteDeptBo;
 import org.dromara.system.api.domain.vo.RemoteDeptVo;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -63,4 +64,13 @@ public interface RemoteDeptService {
     R<Object> deleteDeptByOtherId(String otherId);
 
     RemoteDeptVo selectDeptByParentIdAndName(Long parentId, String deptName);
+
+    /**
+     * 查询指定日期正在进行的班级
+     * @param doingDate 指定日期
+     * @return 班级清单
+     */
+    List<RemoteDeptVo> selectDoingClass(Date doingDate);
+
+    RemoteDeptVo selectDeptById(Long deptId);
 }

+ 35 - 2
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteDeptVo.java

@@ -2,8 +2,6 @@ package org.dromara.system.api.domain.vo;
 
 import com.alibaba.excel.annotation.ExcelProperty;
 import lombok.Data;
-import org.dromara.common.excel.annotation.ExcelDictFormat;
-import org.dromara.common.excel.convert.ExcelDictConvert;
 
 import java.io.Serial;
 import java.io.Serializable;
@@ -86,8 +84,43 @@ public class RemoteDeptVo implements Serializable {
      */
     private String otherId;
 
+    /**
+     * 开班日期
+     */
+    private Date beginDate;
+
     /**
      * 结业日期
      */
     private Date endDate;
+
+    /**
+     * 报到日期
+     */
+    private Date checkDate;
+
+    /**
+     * 是否自主选房
+     */
+    private String chooseRoom;
+
+    /**
+     * 是否就餐
+     */
+    private String canEat;
+
+    /**
+     * 是否先缴费再报到
+     */
+    private String payCheck;
+
+    /**
+     * 缴费开始日期
+     */
+    private Date payBegin;
+
+    /**
+     * 缴费开始日期
+     */
+    private Date payEnd;
 }

+ 4 - 0
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheNames.java

@@ -129,4 +129,8 @@ public interface CacheNames {
      * 工作站
      */
     String T_PT_WORKSTATION = "t_pt_workstation";
+    /**
+     * 正在进行的培训班
+     */
+    String DOING_CLASS = "doing_class";
 }

+ 12 - 0
ruoyi-modules/ruoyi-backstage/pom.xml

@@ -131,6 +131,18 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-test</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.itextpdf</groupId>
+            <artifactId>kernel</artifactId>
+            <version>7.1.16</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>ruoyi-api-hotel</artifactId>
+            <version>2.2.0</version>
+            <scope>compile</scope>
+        </dependency>
 
     </dependencies>
 

+ 1 - 1
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/accouunt/UserAccountBusiness.java

@@ -74,7 +74,7 @@ public class UserAccountBusiness {
     public R<AccountInfoVo> getAccountInfo(PtUserAccountBo bo) {
         PtUserAccountVo ptUserAccountVo = ptUserAccountService.selectVoOneByBo(bo);
         if (ObjectUtil.isEmpty(ptUserAccountVo)) {
-            return R.fail();
+            return R.fail(MessageFormat.format("没有对应的人员信息,手机号:{0}|身份证:{1}",bo.getPhone(),bo.getIdNumber()));
         }
         AccountInfoVo accountInfoVo = new AccountInfoVo();
 

+ 69 - 4
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/self/TraineeBusiness.java

@@ -1,14 +1,37 @@
 package org.dromara.backstage.business.self;
 
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ObjectUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.dromara.backstage.cardCenter.domain.bo.PtCardBo;
+import org.dromara.backstage.cardCenter.service.IPtCardService;
 import org.dromara.backstage.domain.bo.yc.YcTraineeBo;
-import org.dromara.common.core.api.ReturnResult;
+import org.dromara.backstage.domain.convert.YcVoConvert;
+import org.dromara.backstage.domain.vo.card.PtCardVo;
+import org.dromara.backstage.domain.vo.yc.YcBagVo;
+import org.dromara.backstage.domain.vo.yc.YcCardVo;
+import org.dromara.backstage.domain.vo.yc.YcTraineeVo;
+import org.dromara.backstage.payment.domain.bo.PtBagBo;
+import org.dromara.backstage.payment.domain.bo.PtUserAccountBo;
+import org.dromara.backstage.payment.domain.vo.PtBagVo;
+import org.dromara.backstage.payment.service.IPtBagService;
+import org.dromara.backstage.payment.service.IPtUserAccountService;
+import org.dromara.common.core.domain.R;
+import org.dromara.hotel.api.domain.vo.RemoteOrderVo;
+import org.dromara.hotel.api.service.RemoteOrderService;
+import org.dromara.system.api.RemoteDeptService;
+import org.dromara.system.api.domain.vo.RemoteDeptVo;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
 /**
  * @ClassName TraineeBusiness
- * @Description 学员业务软软处理
+ * @Description 学员业务处理逻辑
  * @Author luoyibo
  * @Date 2024-11-14 09:13
  * @Version 1.0
@@ -18,9 +41,51 @@ import org.springframework.stereotype.Service;
 @Service
 @RequiredArgsConstructor
 public class TraineeBusiness {
+    @DubboReference
+    private final RemoteDeptService remoteDeptService;
+    @DubboReference
+    private final RemoteOrderService kfOrderService;
+
+    private final IPtUserAccountService userAccountService;
+    private final IPtCardService cardService;
+    private final IPtBagService bagService;
 
-    public ReturnResult getTraineeRegisterInfo(YcTraineeBo bo) {
+    public R<YcTraineeVo> getTraineeRegisterInfo(YcTraineeBo bo, Date doingDate) {
+        PtUserAccountBo accountBo = new PtUserAccountBo().setPhone(bo.getMobilePhone())
+                                        .setCategory(bo.getCategory())
+                                        .setIdNumber(bo.getIdNumber());
+        YcTraineeVo traineeVo = userAccountService.selectTraineeByBo(accountBo, doingDate);
+        if(ObjectUtil.isEmpty(traineeVo)){
+            return R.fail("没有您的培训信息");
+        }
+        // 卡片信息
+        List<PtCardVo> cardVos = cardService.queryList(new PtCardBo().setUserId(Long.valueOf(traineeVo.getUserId())));
+        List<YcCardVo> ycCardVos = new ArrayList<>();
+        if (CollectionUtil.isNotEmpty(cardVos)) {
+            cardVos.parallelStream().forEach(p-> ycCardVos.add(YcVoConvert.cardVoConvert(p)));
+            traineeVo.setUserCards(ycCardVos);
+        }
+        // 钱包信息
+        List<PtBagVo> bagVos = bagService.queryList(new PtBagBo().setUserId(Long.valueOf(traineeVo.getUserId())));
+        List<YcBagVo> ycBagVos = new ArrayList<>();
+        if (CollectionUtil.isNotEmpty(bagVos)) {
+            bagVos.parallelStream().forEach(p-> ycBagVos.add(YcVoConvert.ycBagVoConvert(p)));
+            traineeVo.setUserBags(ycBagVos);
+        }
+        // 培训班级信息
+        RemoteDeptVo remoteDeptVo = remoteDeptService.selectDeptById(Long.valueOf(traineeVo.getDeptId()));
+        traineeVo.setUserClass(YcVoConvert.ycClassVoConvert(remoteDeptVo));
 
-        return ReturnResult.success();
+        RemoteOrderVo kfOrderVo = kfOrderService.selectGuesterOrderByOtherId(traineeVo.getOtherId());
+        if(ObjectUtil.isNotEmpty(kfOrderVo)){
+            traineeVo.setGuesterId(kfOrderVo.getGuestId().toString());
+            traineeVo.setRoomCode(kfOrderVo.getRoomCode());
+            traineeVo.setRoomId(kfOrderVo.getRoomId());
+            traineeVo.setGuestRoomId(kfOrderVo.getRoomId());
+            traineeVo.setOrderIndex(kfOrderVo.getOrderIndex());
+        }
+        return R.ok(traineeVo);
     }
+
+
 }

+ 23 - 22
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/consumption/controller/XfConsumeDetailController.java

@@ -1,39 +1,40 @@
 package org.dromara.backstage.consumption.controller;
 
-import java.io.IOException;
-import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-
+import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.itextpdf.kernel.geom.PageSize;
-import lombok.RequiredArgsConstructor;
 import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.constraints.*;
-import cn.dev33.satoken.annotation.SaCheckPermission;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.RequiredArgsConstructor;
 import org.dromara.backstage.consumption.domain.bo.XfConsumeDetailBo;
 import org.dromara.backstage.consumption.domain.vo.XfConsumeAnalyzeVo;
 import org.dromara.backstage.consumption.domain.vo.XfConsumeDetailCKBKVo;
 import org.dromara.backstage.consumption.domain.vo.XfConsumeDetailVo;
+import org.dromara.backstage.consumption.service.IXfConsumeDetailService;
+import org.dromara.common.core.domain.R;
 import org.dromara.common.core.utils.DateUtils;
 import org.dromara.common.core.utils.pdf.PdfUtil;
-import org.dromara.common.satoken.utils.LoginHelper;
-import org.dromara.system.api.model.LoginUser;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.validation.annotation.Validated;
-import org.dromara.common.idempotent.annotation.RepeatSubmit;
-import org.dromara.common.log.annotation.Log;
-import org.dromara.common.web.core.BaseController;
-import org.dromara.common.mybatis.core.page.PageQuery;
-import org.dromara.common.core.domain.R;
 import org.dromara.common.core.validate.AddGroup;
 import org.dromara.common.core.validate.EditGroup;
-import org.dromara.common.log.enums.BusinessType;
 import org.dromara.common.excel.utils.ExcelUtil;
-import org.dromara.backstage.consumption.service.IXfConsumeDetailService;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.satoken.utils.LoginHelper;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.system.api.model.LoginUser;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
 
 /**
  * 消费明细

+ 17 - 18
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/controller/self/TraineeController.java

@@ -1,24 +1,21 @@
 package org.dromara.backstage.controller.self;
 
 import cn.hutool.core.codec.Base64;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.backstage.business.accouunt.UserAccountBusiness;
-import org.dromara.backstage.business.payments.PayOrderBusiness;
 import org.dromara.backstage.business.self.SelfBusiness;
+import org.dromara.backstage.business.self.TraineeBusiness;
 import org.dromara.backstage.domain.bo.yc.YcTraineeBo;
-import org.dromara.backstage.domain.convert.YcVoConvert;
-import org.dromara.backstage.domain.vo.account.AccountInfoVo;
-import org.dromara.backstage.payment.domain.bo.PtUserAccountBo;
+import org.dromara.backstage.domain.vo.yc.YcTraineeVo;
 import org.dromara.common.core.api.ResponseResult;
 import org.dromara.common.core.api.ReturnResult;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.enums.ResultCodeEnum;
 import org.springframework.web.bind.annotation.*;
 
-import java.text.MessageFormat;
-
 /**
  * @ClassName TraineeController
  * @Description 学员自助控制器
@@ -35,10 +32,10 @@ import java.text.MessageFormat;
 public class TraineeController {
     private final UserAccountBusiness userAccountBusiness;
     private final SelfBusiness selfBusiness;
-    private final PayOrderBusiness payOrderBusiness;
+    private final TraineeBusiness traineeBusiness;
 
     /**
-     * 根据手机号获取教职工信息
+     * 根据手机号获取学员信息
      *
      * @param mobile 手机号
      * @return 教职工信息
@@ -51,13 +48,13 @@ public class TraineeController {
         if (StrUtil.isEmpty(checkinDate)) {
             return ReturnResult.failure(ResultCodeEnum.PARAM_IS_BLANK, "报到日期不能为空");
         }
-        String dePhone = Base64.decodeStr(mobile);
-        PtUserAccountBo bo = new PtUserAccountBo().setPhone(dePhone).setCategory("2");
-        R<AccountInfoVo> result = userAccountBusiness.getAccountInfo(bo);
+        // String dePhone = Base64.decodeStr(mobile);
+        YcTraineeBo bo = new YcTraineeBo().setMobilePhone(mobile).setCategory("2");
+        R<YcTraineeVo> result = traineeBusiness.getTraineeRegisterInfo(bo, DateUtil.parseDate(checkinDate));
         if (R.isError(result)) {
-            return ReturnResult.failure(ResultCodeEnum.DATA_NOT_FOUND, MessageFormat.format("没有手机号[{0}]对应的人员信息", dePhone));
+            return ReturnResult.failure(ResultCodeEnum.DATA_NOT_FOUND, "没有您的培训信息,请和班主任联系");
         }
-        return ReturnResult.success(YcVoConvert.ycUserAccountConvert(result.getData()));
+        return ReturnResult.success(result.getData());
     }
 
     /**
@@ -75,21 +72,23 @@ public class TraineeController {
             return ReturnResult.failure(ResultCodeEnum.PARAM_IS_BLANK, "报到日期不能为空");
         }
         String deIdentity = Base64.decodeStr(identity);
-        PtUserAccountBo bo = new PtUserAccountBo().setIdNumber(deIdentity).setCategory("2");
-        R<AccountInfoVo> result = userAccountBusiness.getAccountInfo(bo);
+        YcTraineeBo bo = new YcTraineeBo().setIdNumber(deIdentity)
+                             .setCategory("2");
+        R<YcTraineeVo> result = traineeBusiness.getTraineeRegisterInfo(bo, DateUtil.parseDate(checkinDate));
         if (R.isError(result)) {
-            return ReturnResult.failure(ResultCodeEnum.DATA_NOT_FOUND, MessageFormat.format("没有身份号[{0}]对应的人员信息", deIdentity));
+            return ReturnResult.failure(ResultCodeEnum.DATA_NOT_FOUND, "没有您的培训信息,请和班主任联系");
         }
-        return ReturnResult.success(YcVoConvert.ycUserAccountConvert(result.getData()));
+        return ReturnResult.success(result.getData());
     }
 
     /**
      * 学员报到
+     *
      * @param bo 学员报到业务对象
      * @return 报到结果
      */
     @PostMapping("/api/v1/register")
-    public ReturnResult checkinTrainee(@RequestBody YcTraineeBo bo){
+    public ReturnResult checkinTrainee(@RequestBody YcTraineeBo bo) {
 
         return ReturnResult.success();
     }

+ 13 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/domain/bo/yc/YcTraineeBo.java

@@ -31,4 +31,17 @@ public class YcTraineeBo implements Serializable {
      * 报到日期
      */
     private Date checkInDate;
+
+    /**
+     * 手机号码
+     */
+    private String mobilePhone;
+    /**
+     * 身份证号
+     */
+    private String idNumber;
+    /**
+     * 人员类型
+     */
+    private String category;
 }

+ 17 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/domain/convert/YcVoConvert.java

@@ -13,6 +13,7 @@ import org.dromara.common.core.constant.DefaultConstants;
 import org.dromara.common.core.enums.CardStatusEnum;
 import org.dromara.common.core.enums.UserAccountStatusEnum;
 import org.dromara.common.core.enums.UserCategoryEnum;
+import org.dromara.system.api.domain.vo.RemoteDeptVo;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
@@ -174,4 +175,20 @@ public class YcVoConvert {
 
         return ycWxOrder;
     }
+
+    public static YcClassVo ycClassVoConvert(RemoteDeptVo vo) {
+        YcClassVo classVo = new YcClassVo();
+        classVo.setClassId(vo.getDeptId().toString());
+        classVo.setClassName(vo.getDeptName());
+        classVo.setBeginDate(vo.getBeginDate());
+        classVo.setEndDate(vo.getEndDate());
+        classVo.setCheckInDate(vo.getCheckDate());
+        classVo.setPayBegin(vo.getPayBegin());
+        classVo.setPayEnd(vo.getPayEnd());
+        classVo.setCanEat(1);
+        classVo.setChooseRoom(ObjectUtil.isEmpty(vo.getChooseRoom()) ? 0 : 1);
+        classVo.setJfhbd(0);
+
+        return classVo;
+    }
 }

+ 6 - 1
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/domain/vo/yc/YcTraineeVo.java

@@ -54,7 +54,7 @@ public class YcTraineeVo implements Serializable {
     /**
      * 人员类型
      */
-    private int category;
+    private String category;
     /**
      * 报到状态 0-未报到 1-已报到
      */
@@ -96,6 +96,11 @@ public class YcTraineeVo implements Serializable {
      * 充值金额
      */
     private BigDecimal rechargeValue = BigDecimal.ZERO;
+
+    /**
+     * 第三方标识Id
+     */
+    private String otherId ;
     /**
      * 学员培训班信息
      */

+ 6 - 10
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/mapper/PtUserAccountMapper.java

@@ -2,23 +2,17 @@ package org.dromara.backstage.payment.mapper;
 
 import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Param;
-import org.apache.poi.ss.formula.functions.T;
-import org.checkerframework.checker.units.qual.C;
-import org.dromara.backstage.basics.domain.PtOperator;
-import org.dromara.backstage.basics.domain.vo.PtOperatorVo;
+import org.dromara.backstage.domain.vo.yc.YcTraineeVo;
 import org.dromara.backstage.payment.domain.PtUserAccount;
 import org.dromara.backstage.payment.domain.bo.PtUserAccountBo;
 import org.dromara.backstage.payment.domain.vo.PtUserAccount4SelectVo;
 import org.dromara.backstage.payment.domain.vo.PtUserAccountVo;
 import org.dromara.common.core.utils.MapstructUtils;
-import org.dromara.common.mybatis.annotation.DataColumn;
-import org.dromara.common.mybatis.annotation.DataPermission;
 import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -35,9 +29,9 @@ public interface PtUserAccountMapper extends BaseMapperPlus<PtUserAccount, PtUse
     //@DataPermission({
     //    @DataColumn(key = "deptName", value = "dept_id"),
     //})
-    //List<PtUserAccount> selectList(@Param(Constants.WRAPPER) Wrapper<PtUserAccount> queryWrapper);
+    // List<PtUserAccount> selectList(@Param(Constants.WRAPPER) Wrapper<PtUserAccount> queryWrapper);
 
-    default Page<PtUserAccountVo>customSelectVoPage(Page<PtUserAccount> page, Wrapper<PtUserAccount> wrapper){
+    default Page<PtUserAccountVo> customSelectVoPage(Page<PtUserAccount> page, Wrapper<PtUserAccount> wrapper) {
         // 根据条件分页查询实体对象列表
         List<PtUserAccount> list = this.selectList(page, wrapper);
         // 创建一个新的VO对象分页列表,并设置分页信息
@@ -48,4 +42,6 @@ public interface PtUserAccountMapper extends BaseMapperPlus<PtUserAccount, PtUse
         voPage.setRecords(MapstructUtils.convert(list, PtUserAccountVo.class));
         return voPage;
     }
+
+    YcTraineeVo selectTraineeByBo(@Param("bo") PtUserAccountBo bo, @Param("doingDate") Date doingDate);
 }

+ 4 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/service/IPtUserAccountService.java

@@ -1,5 +1,6 @@
 package org.dromara.backstage.payment.service;
 
+import org.dromara.backstage.domain.vo.yc.YcTraineeVo;
 import org.dromara.backstage.payment.domain.vo.PtUserAccount4SelectVo;
 import org.dromara.backstage.payment.domain.vo.PtUserAccountVo;
 import org.dromara.backstage.payment.domain.bo.PtUserAccountBo;
@@ -10,6 +11,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
 import java.util.Collection;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -172,4 +174,6 @@ public interface IPtUserAccountService {
     PtUserAccountVo getUserAccountVoByUserNumb(String userNumb);
 
     PtUserAccountVo selectVoOneByBo(PtUserAccountBo bo);
+
+    YcTraineeVo selectTraineeByBo(PtUserAccountBo bo, Date doingDate);
 }

+ 7 - 1
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/service/impl/PtUserAccountServiceImpl.java

@@ -1,6 +1,7 @@
 package org.dromara.backstage.payment.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.lang.UUID;
 import cn.hutool.core.util.ObjUtil;
@@ -18,6 +19,7 @@ import org.apache.dubbo.config.annotation.DubboReference;
 import org.dromara.backstage.basics.service.IPtCardtypeService;
 import org.dromara.backstage.cardCenter.domain.bo.PtCardBo;
 import org.dromara.backstage.cardCenter.service.IPtCardService;
+import org.dromara.backstage.domain.vo.yc.YcTraineeVo;
 import org.dromara.backstage.payment.domain.PtUserAccount;
 import org.dromara.backstage.payment.domain.bo.PtUserAccountBo;
 import org.dromara.backstage.payment.domain.vo.PtUserAccount4SelectVo;
@@ -26,6 +28,7 @@ import org.dromara.backstage.payment.mapper.PtUserAccountMapper;
 import org.dromara.backstage.payment.service.IPtBagService;
 import org.dromara.backstage.payment.service.IPtUserAccountService;
 import org.dromara.common.core.constant.CacheNames;
+import org.dromara.common.core.constant.DefaultConstants;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.SpringUtils;
@@ -538,7 +541,10 @@ public class PtUserAccountServiceImpl implements IPtUserAccountService {
         return null;
     }
 
-
+    @Override
+    public YcTraineeVo selectTraineeByBo(PtUserAccountBo bo, Date doingDate) {
+        return baseMapper.selectTraineeByBo(bo, doingDate);
+    }
 
     public static void downloadPicture(String urlList, String name, String userNumb) {
         URL url = null;

+ 66 - 44
ruoyi-modules/ruoyi-backstage/src/main/resources/mapper/payment/PtUserAccountMapper.xml

@@ -1,60 +1,60 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.dromara.backstage.payment.mapper.PtUserAccountMapper">
 
     <resultMap type="org.dromara.backstage.payment.domain.PtUserAccount" id="PtUserAccountResult">
-            <result property="userId"    column="user_id"    />
-            <result property="tenantId"    column="tenant_id"    />
-            <result property="postId"    column="post_id"    />
-            <result property="deptId"    column="dept_id"    />
-            <result property="userName"    column="user_name"    />
-            <result property="password"    column="password"    />
-            <result property="userNumb"    column="user_numb"    />
-            <result property="nickName"    column="nick_name"    />
-            <result property="realName"    column="real_name"    />
-            <result property="sex"    column="sex"    />
-            <result property="category"    column="category"    />
-            <result property="email"    column="email"    />
-            <result property="address"    column="address"    />
-            <result property="phone"    column="phone"    />
-            <result property="avatar"    column="avatar"    />
-            <result property="idNumber"    column="id_number"    />
-            <result property="accountStatus"    column="account_status"    />
-            <result property="freezeStatus"    column="freeze_status"    />
-            <result property="consumePwd"    column="consume_pwd"    />
-            <result property="userNo"    column="user_no"    />
-            <result property="cardType"    column="card_type"    />
-            <result property="lifespan"    column="lifespan"    />
-            <result property="userAttr"    column="user_attr"    />
-            <result property="photo"    column="photo"    />
-            <result property="formation"    column="formation"    />
-            <result property="hidden"    column="hidden"    />
-            <result property="otherId"    column="other_id"    />
-            <result property="userState"    column="user_state"    />
-            <result property="remark"    column="remark"    />
-            <result property="loginIp"    column="login_ip"    />
-            <result property="loginDate"    column="login_date"    />
-            <result property="status"    column="status"    />
-            <result property="delFlag"    column="del_flag"    />
-            <result property="createDept"    column="create_dept"    />
-            <result property="createBy"    column="create_by"    />
-            <result property="createTime"    column="create_time"    />
-            <result property="updateBy"    column="update_by"    />
-            <result property="updateTime"    column="update_time"    />
-            <result property="userType"    column="user_type"    />
+        <result property="userId" column="user_id"/>
+        <result property="tenantId" column="tenant_id"/>
+        <result property="postId" column="post_id"/>
+        <result property="deptId" column="dept_id"/>
+        <result property="userName" column="user_name"/>
+        <result property="password" column="password"/>
+        <result property="userNumb" column="user_numb"/>
+        <result property="nickName" column="nick_name"/>
+        <result property="realName" column="real_name"/>
+        <result property="sex" column="sex"/>
+        <result property="category" column="category"/>
+        <result property="email" column="email"/>
+        <result property="address" column="address"/>
+        <result property="phone" column="phone"/>
+        <result property="avatar" column="avatar"/>
+        <result property="idNumber" column="id_number"/>
+        <result property="accountStatus" column="account_status"/>
+        <result property="freezeStatus" column="freeze_status"/>
+        <result property="consumePwd" column="consume_pwd"/>
+        <result property="userNo" column="user_no"/>
+        <result property="cardType" column="card_type"/>
+        <result property="lifespan" column="lifespan"/>
+        <result property="userAttr" column="user_attr"/>
+        <result property="photo" column="photo"/>
+        <result property="formation" column="formation"/>
+        <result property="hidden" column="hidden"/>
+        <result property="otherId" column="other_id"/>
+        <result property="userState" column="user_state"/>
+        <result property="remark" column="remark"/>
+        <result property="loginIp" column="login_ip"/>
+        <result property="loginDate" column="login_date"/>
+        <result property="status" column="status"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="createDept" column="create_dept"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="userType" column="user_type"/>
     </resultMap>
 
     <select id="customPageList" resultType="org.dromara.backstage.payment.domain.vo.PtUserAccount4SelectVo">
         select u.user_name,u.user_id,u.dept_id,u.real_name,u.user_numb,u.phone
-             ,u.photo,u.account_status,u.freeze_status,u.status,a.dept_name deptName
+        ,u.photo,u.account_status,u.freeze_status,u.status,a.dept_name deptName
         from t_pt_userAccount u
-            join t_sys_dept a on u.dept_id = a.dept_id
+        join t_sys_dept a on u.dept_id = a.dept_id
         <where>
             u.del_flag = 0 and a.del_flag = 0
             <if test="bo.category != null and bo.category != ''">
-               and u.category = #{bo.category}
+                and u.category = #{bo.category}
             </if>
             <if test="bo.deptId != null and  bo.deptId != ''">
                 and ( u.dept_id = #{bo.deptId} or a.ancestors like concat('%',#{bo.deptId},'%'))
@@ -77,4 +77,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
         order by u.dept_id,u.user_id
     </select>
+    <select id="selectTraineeByBo" resultType="org.dromara.backstage.domain.vo.yc.YcTraineeVo">
+        SELECT tpua.user_id as userId,tpuA.real_name as userXm,tpuA.user_numb as userNumb,(CASE tpua.sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '未知' END) as sexName
+             ,tpuA.phone as mobilePhone,tpuA.id_number as idNmber
+             ,tpuA.category,tpuA.card_type as userCardTypeId,tpuA.lifespan as userExpiryDate,tsd.dept_id as deptId,tsd.dept_name as deptName
+             ,tsd.check_Date as checkinDate,tsd.end_date as checkoutDate,(CASE a.main_dept WHEN 'Y' THEN 1 ELSE 0 END ) as isMainDept,
+              a.check_status as checkinState,a.pay_status as payStatus,tpuA.other_id as otherId
+        FROM t_pt_userAccount tpuA
+                 INNER JOIN t_user_dept a on a.user_id=tpuA.user_id
+                 INNER JOIN t_sys_dept tsd on tsd.dept_id=a.dept_id
+        <where>
+            <if test="bo.phone != null and bo.phone != ''">
+                and tpuA.phone = #{bo.phone}
+            </if>
+            <if test="bo.idNumber != null and bo.idNumber != ''">
+                and tpuA.id_number = #{bo.idNumber}
+            </if>
+            <if test="doingDate != null">
+                and #{doingDate} between tsd.check_Date and tsd.end_date
+            </if>
+        </where>
+
+    </select>
 </mapper>

+ 6 - 0
ruoyi-modules/ruoyi-hotel/pom.xml

@@ -107,6 +107,12 @@
             <groupId>cn.com.kingbase</groupId>
             <artifactId>kingbase8</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.dromara</groupId>
+            <artifactId>ruoyi-api-hotel</artifactId>
+            <version>2.2.0</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
     <build>

+ 10 - 4
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/domain/KfOrder.java

@@ -1,13 +1,14 @@
 package org.dromara.hotel.domain;
 
-import org.dromara.common.tenant.core.TenantEntity;
-import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import java.util.Date;
-import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.common.tenant.core.TenantEntity;
 
 import java.io.Serial;
+import java.util.Date;
 
 /**
  * 散客入住对象 t_kf_order
@@ -94,6 +95,11 @@ public class KfOrder extends TenantEntity {
      */
     private String remark;
 
+    /**
+     * 团客锁房时的排序号
+     */
+    private Integer orderIndex;
+
     /**
      * 删除标志
      */

+ 11 - 6
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/domain/bo/KfOrderBo.java

@@ -1,15 +1,16 @@
 package org.dromara.hotel.domain.bo;
 
-import org.dromara.hotel.domain.KfOrder;
-import org.dromara.common.mybatis.core.domain.BaseEntity;
-import org.dromara.common.core.validate.AddGroup;
-import org.dromara.common.core.validate.EditGroup;
 import io.github.linpeilie.annotations.AutoMapper;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import jakarta.validation.constraints.*;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.hotel.domain.KfOrder;
+
 import java.util.Date;
-import com.fasterxml.jackson.annotation.JsonFormat;
 
 /**
  * 散客入住业务对象 t_kf_order
@@ -88,5 +89,9 @@ public class KfOrderBo extends BaseEntity {
      */
     private String remark;
 
+    /**
+     * 客人原始数据ID
+     */
+    private String otherId;
 
 }

+ 1 - 0
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/domain/vo/KfOrderVo.java

@@ -98,4 +98,5 @@ public class KfOrderVo implements Serializable {
     private Date createTime;
 
 
+
 }

+ 45 - 0
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/dubbo/RemoteOrderServiceImpl.java

@@ -0,0 +1,45 @@
+package org.dromara.hotel.dubbo;
+
+import lombok.RequiredArgsConstructor;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.dromara.hotel.api.domain.bo.RemoteOrderBo;
+import org.dromara.hotel.api.domain.vo.RemoteOrderVo;
+import org.dromara.hotel.api.service.RemoteOrderService;
+import org.dromara.hotel.domain.bo.KfOrderBo;
+import org.dromara.hotel.service.IKfOrderService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @ClassName RemoteOrderServiceImpl
+ * @Description 酒店订单远程服务实现
+ * @Author luoyibo
+ * @Date 2024-11-14 20:31
+ * @Version 1.0
+ * @since jdk17
+ */
+
+@Service
+@DubboService
+@RequiredArgsConstructor
+public class RemoteOrderServiceImpl implements RemoteOrderService {
+    private final IKfOrderService kfOrderService;
+
+    @Override
+    public List<RemoteOrderVo> selectGuestOrder(RemoteOrderBo bo) {
+        return List.of();
+    }
+
+    @Override
+    public RemoteOrderVo selectGuesterOrderByOtherId(String otherId) {
+        KfOrderBo bo = new KfOrderBo();
+        bo.setOtherId(otherId);
+        return kfOrderService.selectByBo(bo);
+    }
+
+    @Override
+    public List<RemoteOrderVo> selectGuesterOrderByGuestId(Long guestId) {
+        return List.of();
+    }
+}

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

@@ -1,7 +1,9 @@
 package org.dromara.hotel.mapper;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+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.KfOrderBo;
 import org.dromara.hotel.domain.vo.KfOrderVo;
@@ -18,4 +20,6 @@ public interface KfOrderMapper extends BaseMapperPlus<KfOrder, KfOrderVo> {
     Page<KfOrderVo> selectPageByBo(Page<KfOrder> page, KfOrderBo bo);
 
     List<KfOrderVo> queryListByGuestName(String guestName);
+
+    RemoteOrderVo selectByBo(@Param("bo") KfOrderBo bo);
 }

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

@@ -1,10 +1,10 @@
 package org.dromara.hotel.service;
 
-import org.dromara.hotel.domain.KfOrder;
-import org.dromara.hotel.domain.vo.KfOrderVo;
-import org.dromara.hotel.domain.bo.KfOrderBo;
-import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.hotel.api.domain.vo.RemoteOrderVo;
+import org.dromara.hotel.domain.bo.KfOrderBo;
+import org.dromara.hotel.domain.vo.KfOrderVo;
 
 import java.util.Collection;
 import java.util.List;
@@ -67,4 +67,7 @@ public interface IKfOrderService {
      * @return 是否删除成功
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    RemoteOrderVo selectByBo(KfOrderBo bo);
+
 }

+ 15 - 10
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/service/impl/KfOrderServiceImpl.java

@@ -1,25 +1,25 @@
 package org.dromara.hotel.service.impl;
 
-import org.dromara.common.core.utils.MapstructUtils;
-import org.dromara.common.core.utils.StringUtils;
-import org.dromara.common.mybatis.core.page.TableDataInfo;
-import org.dromara.common.mybatis.core.page.PageQuery;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.RequiredArgsConstructor;
-import org.springframework.stereotype.Service;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.hotel.api.domain.vo.RemoteOrderVo;
+import org.dromara.hotel.domain.KfOrder;
 import org.dromara.hotel.domain.bo.KfOrderBo;
 import org.dromara.hotel.domain.vo.KfOrderVo;
-import org.dromara.hotel.domain.KfOrder;
 import org.dromara.hotel.mapper.KfOrderMapper;
 import org.dromara.hotel.service.IKfOrderService;
+import org.springframework.stereotype.Service;
 
-import java.util.Arrays;
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
-import java.util.Collection;
 
 /**
  * 散客入住Service业务层处理
@@ -161,4 +161,9 @@ public class KfOrderServiceImpl implements IKfOrderService {
         }
         return baseMapper.deleteByIds(ids) > 0;
     }
+
+    @Override
+    public RemoteOrderVo selectByBo(KfOrderBo bo) {
+        return baseMapper.selectByBo(bo);
+    }
 }

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

@@ -71,4 +71,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 and g.name like concat('%', #{guestName}, '%')
             </where>
     </select>
+    <select id="selectByBo" resultType="org.dromara.hotel.api.domain.vo.RemoteOrderVo">
+        SELECT tkg.id AS guestId, tkg.name,tkg.sex,tkg.id_card as idCard,tkg.phone,tkg.other_id as otherId,tko.team_id as teamId
+        , tko.room_code AS roomCode, tpr.room_id AS roomId, tko.start_time AS checkinDate
+        , tko.end_time AS checkoutDate, tko.order_status as orderStatus,tko.order_type as orderType,tko.order_index as orderIndex
+        FROM t_kf_guest tkg
+                 LEFT JOIN t_kf_order tko ON tko.guest_id=tkg.id and tko.order_status in ('1','3')
+                 INNER JOIN t_pt_room tpr ON tpr.room_code=tko.room_code
+        <where>
+            <if test="bo.otherId != null and  bo.otherId != ''">
+                and tkg.other_id = #{bo.otherId}
+            </if>
+        </where>
+    </select>
 </mapper>

+ 35 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java

@@ -104,8 +104,43 @@ public class SysDeptVo implements Serializable {
      */
     private String otherId;
 
+    /**
+     * 开班日期
+     */
+    private Date beginDate;
+
     /**
      * 结业日期
      */
     private Date endDate;
+
+    /**
+     * 报到日期
+     */
+    private Date checkDate;
+
+    /**
+     * 是否自主选房
+     */
+    private String chooseRoom;
+
+    /**
+     * 是否就餐
+     */
+    private String canEat;
+
+    /**
+     * 是否先缴费再报到
+     */
+    private String payCheck;
+
+    /**
+     * 缴费开始日期
+     */
+    private Date payBegin;
+
+    /**
+     * 缴费开始日期
+     */
+    private Date payEnd;
 }

+ 24 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java

@@ -1,6 +1,7 @@
 package org.dromara.system.dubbo;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.lang.tree.Tree;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONUtil;
@@ -19,6 +20,7 @@ import org.springframework.stereotype.Service;
 
 import java.text.MessageFormat;
 import java.time.Duration;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -161,4 +163,26 @@ public class RemoteDeptServiceImpl implements RemoteDeptService {
         }
         return null;
     }
+    /**
+     * 查询指定日期正在进行的班级
+     * @param doingDate 指定日期
+     * @return 班级清单
+     */
+    @Override
+    public List<RemoteDeptVo> selectDoingClass(Date doingDate) {
+        List<SysDeptVo> list = sysDeptService.selectDoingClass(doingDate);
+        if(CollectionUtil.isNotEmpty(list)) {
+            MapstructUtils.convert(list, RemoteDeptVo.class);
+        }
+        return null;
+    }
+
+    @Override
+    public RemoteDeptVo selectDeptById(Long deptId) {
+        SysDeptVo vo = sysDeptService.selectDeptById(deptId);
+        if(ObjectUtil.isNotEmpty(vo)){
+            return MapstructUtils.convert(vo, RemoteDeptVo.class);
+        }
+        return null;
+    }
 }

+ 8 - 2
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java

@@ -4,6 +4,7 @@ import cn.hutool.core.lang.tree.Tree;
 import org.dromara.system.domain.bo.SysDeptBo;
 import org.dromara.system.domain.vo.SysDeptVo;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -156,8 +157,6 @@ public interface ISysDeptService {
      */
     SysDeptVo selectVoAllByOtherId(String otherId);
 
-
-
     /**
      * 获取同层级的最大部门排序号
      * @param deptId 部门Id
@@ -180,4 +179,11 @@ public interface ISysDeptService {
      * @return 结果
      */
     int deleteDeptByOtherId(String otherId);
+
+    /**
+     * 查询指定时间的进行中的班级
+     * @param doingDate 指定时间
+     * @return 班级列表
+     */
+    List<SysDeptVo> selectDoingClass(Date doingDate);
 }

+ 47 - 25
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java

@@ -1,6 +1,7 @@
 package org.dromara.system.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.lang.tree.Tree;
 import cn.hutool.core.util.ObjectUtil;
@@ -18,6 +19,7 @@ import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.core.utils.TreeBuildUtils;
 import org.dromara.common.mybatis.helper.DataBaseHelper;
 import org.dromara.common.redis.utils.CacheUtils;
+import org.dromara.common.redis.utils.RedisUtils;
 import org.dromara.common.satoken.utils.LoginHelper;
 import org.dromara.system.domain.SysDept;
 import org.dromara.system.domain.SysRole;
@@ -104,10 +106,10 @@ public class SysDeptServiceImpl implements ISysDeptService {
             return CollUtil.newArrayList();
         }
         return TreeBuildUtils.build(depts, (dept, tree) ->
-            tree.setId(dept.getDeptId())
-                .setParentId(dept.getParentId())
-                .setName(dept.getDeptName())
-                .setWeight(dept.getOrderNum()));
+                                               tree.setId(dept.getDeptId())
+                                                   .setParentId(dept.getParentId())
+                                                   .setName(dept.getDeptName())
+                                                   .setWeight(dept.getOrderNum()));
     }
 
     /**
@@ -136,7 +138,7 @@ public class SysDeptServiceImpl implements ISysDeptService {
             return null;
         }
         SysDeptVo parentDept = baseMapper.selectVoOne(new LambdaQueryWrapper<SysDept>()
-            .select(SysDept::getDeptName).eq(SysDept::getDeptId, dept.getParentId()));
+                                                          .select(SysDept::getDeptName).eq(SysDept::getDeptId, dept.getParentId()));
         dept.setParentName(ObjectUtil.isNotNull(parentDept) ? parentDept.getDeptName() : null);
         return dept;
     }
@@ -150,9 +152,9 @@ public class SysDeptServiceImpl implements ISysDeptService {
     @Override
     public List<SysDeptVo> selectDeptByIds(List<Long> deptIds) {
         return baseMapper.selectDeptList(new LambdaQueryWrapper<SysDept>()
-            .select(SysDept::getDeptId, SysDept::getDeptName)
-            .eq(SysDept::getStatus, UserConstants.DEPT_NORMAL)
-            .in(CollUtil.isNotEmpty(deptIds), SysDept::getDeptId, deptIds));
+                                             .select(SysDept::getDeptId, SysDept::getDeptName)
+                                             .eq(SysDept::getStatus, UserConstants.DEPT_NORMAL)
+                                             .in(CollUtil.isNotEmpty(deptIds), SysDept::getDeptId, deptIds));
     }
 
     /**
@@ -182,8 +184,8 @@ public class SysDeptServiceImpl implements ISysDeptService {
     @Override
     public long selectNormalChildrenDeptById(Long deptId) {
         return baseMapper.selectCount(new LambdaQueryWrapper<SysDept>()
-            .eq(SysDept::getStatus, UserConstants.DEPT_NORMAL)
-            .apply(DataBaseHelper.findInSet(deptId, "ancestors")));
+                                          .eq(SysDept::getStatus, UserConstants.DEPT_NORMAL)
+                                          .apply(DataBaseHelper.findInSet(deptId, "ancestors")));
     }
 
     /**
@@ -195,7 +197,7 @@ public class SysDeptServiceImpl implements ISysDeptService {
     @Override
     public boolean hasChildByDeptId(Long deptId) {
         return baseMapper.exists(new LambdaQueryWrapper<SysDept>()
-            .eq(SysDept::getParentId, deptId));
+                                     .eq(SysDept::getParentId, deptId));
     }
 
     /**
@@ -207,7 +209,7 @@ public class SysDeptServiceImpl implements ISysDeptService {
     @Override
     public boolean checkDeptExistUser(Long deptId) {
         return userMapper.exists(new LambdaQueryWrapper<SysUser>()
-            .eq(SysUser::getDeptId, deptId));
+                                     .eq(SysUser::getDeptId, deptId));
     }
 
     /**
@@ -219,9 +221,9 @@ public class SysDeptServiceImpl implements ISysDeptService {
     @Override
     public boolean checkDeptNameUnique(SysDeptBo dept) {
         boolean exist = baseMapper.exists(new LambdaQueryWrapper<SysDept>()
-            .eq(SysDept::getDeptName, dept.getDeptName())
-            .eq(SysDept::getParentId, dept.getParentId())
-            .ne(ObjectUtil.isNotNull(dept.getDeptId()), SysDept::getDeptId, dept.getDeptId()));
+                                              .eq(SysDept::getDeptName, dept.getDeptName())
+                                              .eq(SysDept::getParentId, dept.getParentId())
+                                              .ne(ObjectUtil.isNotNull(dept.getDeptId()), SysDept::getDeptId, dept.getDeptId()));
         return !exist;
     }
 
@@ -299,7 +301,7 @@ public class SysDeptServiceImpl implements ISysDeptService {
         SysDept oldDept = baseMapper.selectById(dept.getDeptId());
         if (!oldDept.getParentId().equals(dept.getParentId())) {
             // 如果是新父部门 则校验是否具有新父部门权限 避免越权
-            //this.checkDeptDataScope(dept.getParentId());
+            // this.checkDeptDataScope(dept.getParentId());
             SysDept newParentDept = baseMapper.selectById(dept.getParentId());
             if (ObjectUtil.isNotNull(newParentDept) && ObjectUtil.isNotNull(oldDept)) {
                 String newAncestors = newParentDept.getAncestors() + StringUtils.SEPARATOR + newParentDept.getDeptId();
@@ -310,7 +312,7 @@ public class SysDeptServiceImpl implements ISysDeptService {
         }
         int result = baseMapper.updateById(dept);
         if (UserConstants.DEPT_NORMAL.equals(dept.getStatus()) && StringUtils.isNotEmpty(dept.getAncestors())
-            && !StringUtils.equals(UserConstants.DEPT_NORMAL, dept.getAncestors())) {
+                && !StringUtils.equals(UserConstants.DEPT_NORMAL, dept.getAncestors())) {
             // 如果该部门是启用状态,则启用该部门的所有上级部门
             updateParentDeptStatusNormal(dept);
         }
@@ -326,8 +328,8 @@ public class SysDeptServiceImpl implements ISysDeptService {
         String ancestors = dept.getAncestors();
         Long[] deptIds = Convert.toLongArray(ancestors);
         baseMapper.update(null, new LambdaUpdateWrapper<SysDept>()
-            .set(SysDept::getStatus, UserConstants.DEPT_NORMAL)
-            .in(SysDept::getDeptId, Arrays.asList(deptIds)));
+                                    .set(SysDept::getStatus, UserConstants.DEPT_NORMAL)
+                                    .in(SysDept::getDeptId, Arrays.asList(deptIds)));
     }
 
     /**
@@ -339,7 +341,7 @@ public class SysDeptServiceImpl implements ISysDeptService {
      */
     private void updateDeptChildren(Long deptId, String newAncestors, String oldAncestors) {
         List<SysDept> children = baseMapper.selectList(new LambdaQueryWrapper<SysDept>()
-            .apply(DataBaseHelper.findInSet(deptId, "ancestors")));
+                                                           .apply(DataBaseHelper.findInSet(deptId, "ancestors")));
         List<SysDept> list = new ArrayList<>();
         for (SysDept child : children) {
             SysDept dept = new SysDept();
@@ -373,8 +375,9 @@ public class SysDeptServiceImpl implements ISysDeptService {
             return CollUtil.newArrayList(deptId);
         }
         return baseMapper.selectList(Wrappers.lambdaQuery(SysDept.class)
-            .select(SysDept::getDeptId)
-            .eq(SysDept::getParentId, deptId).or().eq(SysDept::getDeptId, deptId).or().likeRight(SysDept::getAncestors, sysDeptVo.getAncestors() + "," + deptId)
+                                         .select(SysDept::getDeptId)
+                                         .eq(SysDept::getParentId, deptId).or().eq(SysDept::getDeptId, deptId).or().likeRight(SysDept::getAncestors,
+                                                                                                                              sysDeptVo.getAncestors() + "," + deptId)
         ).stream().map(SysDept::getDeptId).toList();
     }
 
@@ -391,8 +394,8 @@ public class SysDeptServiceImpl implements ISysDeptService {
     @Override
     public SysDeptVo selectDeptByParentIdAndName(Long parentId, String deptName) {
         return baseMapper.selectVoOne(new LambdaQueryWrapper<SysDept>()
-            .eq(SysDept::getParentId, parentId)
-            .eq(SysDept::getDeptName, deptName));
+                                          .eq(SysDept::getParentId, parentId)
+                                          .eq(SysDept::getDeptName, deptName));
     }
 
     @Override
@@ -410,6 +413,25 @@ public class SysDeptServiceImpl implements ISysDeptService {
 
     @Override
     public int deleteDeptByOtherId(String otherId) {
-        return baseMapper.deleteDeptByOtherId(otherId,new Date());
+        return baseMapper.deleteDeptByOtherId(otherId, new Date());
+    }
+
+    /**
+     * 查询指定时间的进行中的班级
+     * @param doingDate 指定时间
+     * @return 班级列表
+     */
+    @Override
+    public List<SysDeptVo> selectDoingClass(Date doingDate) {
+        List<SysDeptVo> redisList = RedisUtils.getCacheList(CacheNames.DOING_CLASS);
+        if(CollectionUtil.isNotEmpty(redisList)){
+            return redisList;
+        }
+        List<SysDeptVo> list = baseMapper.selectVoList(new LambdaQueryWrapper<SysDept>().ge(SysDept::getCheckDate, doingDate).le(SysDept::getEndDate, doingDate));
+        if(CollectionUtil.isNotEmpty(redisList)){
+            RedisUtils.setCacheList(CacheNames.DOING_CLASS, list);
+            return list;
+        }
+        return null;
     }
 }