Parcourir la source

feature: 学员自助
1.自助报到分房和办理入住

luo.yibo@datuai.com il y a 1 an
Parent
commit
62820f0d23
14 fichiers modifiés avec 214 ajouts et 92 suppressions
  1. 14 2
      ruoyi-api/ruoyi-api-hotel/src/main/java/org/dromara/hotel/api/domain/bo/RemoteOrderBo.java
  2. 4 3
      ruoyi-api/ruoyi-api-hotel/src/main/java/org/dromara/hotel/api/service/RemoteOrderService.java
  3. 4 3
      ruoyi-api/ruoyi-api-hotel/src/main/java/org/dromara/hotel/api/service/RemoteTeamService.java
  4. 112 18
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/self/TraineeBusiness.java
  5. 3 29
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/controller/self/TraineeController.java
  6. 4 0
      ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/domain/bo/yc/YcTraineeBo.java
  7. 7 6
      ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/domain/vo/KfOrderVo.java
  8. 3 3
      ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/dubbo/RemoteOrderServiceImpl.java
  9. 17 12
      ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/dubbo/RemoteTeamServiceImpl.java
  10. 8 0
      ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/service/IKfOrderService.java
  11. 3 0
      ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/service/IKfTeamService.java
  12. 28 4
      ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/service/impl/KfOrderServiceImpl.java
  13. 7 0
      ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/service/impl/KfTeamServiceImpl.java
  14. 0 12
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java

+ 14 - 2
ruoyi-api/ruoyi-api-hotel/src/main/java/org/dromara/hotel/api/domain/bo/RemoteOrderBo.java

@@ -32,7 +32,7 @@ public class RemoteOrderBo implements Serializable {
     /**
      * 姓名
      */
-    private String name;
+    private String guestName;
 
     /**
      * 身份证号
@@ -53,7 +53,10 @@ public class RemoteOrderBo implements Serializable {
      * 团体Id
      */
     private Long teamId;
-
+    /**
+     * 客团名称
+     */
+    private String teamName;
     //endregion
 
     //region 客人入住信息
@@ -85,4 +88,13 @@ public class RemoteOrderBo implements Serializable {
      */
     private String orderStatus;
     //endregion
+
+        /**
+     * 创建者
+     */
+    private Long createdBy;
+    /**
+     * 更新者
+     */
+    private Long updatedBy;
 }

+ 4 - 3
ruoyi-api/ruoyi-api-hotel/src/main/java/org/dromara/hotel/api/service/RemoteOrderService.java

@@ -30,9 +30,10 @@ public interface RemoteOrderService {
     RemoteOrderVo checkInTeamByBo(RemoteOrderBo remoteBo);
 
     /**
-     * 根据团体的统一标识查询锁房信息,对团体而言,只查询锁定的房间
-     * @param otherId 统一标识
+     * 根据团体Id查询锁房信息,对团体而言,只查询锁定的房间
+     *
+     * @param teamId 团客Id
      * @return 锁房列表
      */
-    List<RemoteOrderVo> selectTeamRoom(String otherId);
+    List<RemoteOrderVo> selectTeamRoom(Long teamId);
 }

+ 4 - 3
ruoyi-api/ruoyi-api-hotel/src/main/java/org/dromara/hotel/api/service/RemoteTeamService.java

@@ -5,6 +5,7 @@ import org.dromara.common.core.domain.model.ErrorInfo;
 import org.dromara.hotel.api.domain.bo.RemoteTeamBo;
 import org.dromara.hotel.api.domain.vo.RemoteTeamVo;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -39,9 +40,9 @@ public interface RemoteTeamService {
     R<RemoteTeamVo> selectTeamByBo(RemoteTeamBo remoteBo);
 
     /**
-     * 根据统一标识查询正进行的团客
-     * @param otherId 统一身份标识
+     * 查询正进行的团客
+     * @param doingDate 当前时间
      * @return 团客列表
      */
-    R<List<RemoteTeamVo>> selectDoingTeamByOtherId(String otherId);
+    R<List<RemoteTeamVo>> selectDoingTeam(Date doingDate);
 }

+ 112 - 18
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/self/TraineeBusiness.java

@@ -17,13 +17,13 @@ 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.domain.vo.PtUserAccountVo;
 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.domain.R;
 import org.dromara.common.core.domain.model.ErrorInfo;
 import org.dromara.common.redis.utils.RedisUtils;
+import org.dromara.hotel.api.domain.bo.RemoteOrderBo;
 import org.dromara.hotel.api.domain.bo.RemoteTeamBo;
 import org.dromara.hotel.api.domain.vo.RemoteGuestVo;
 import org.dromara.hotel.api.domain.vo.RemoteOrderVo;
@@ -35,7 +35,9 @@ import org.dromara.system.api.RemoteDeptService;
 import org.dromara.system.api.domain.vo.RemoteDeptVo;
 import org.springframework.stereotype.Service;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
 import java.util.concurrent.LinkedBlockingQueue;
 
 /**
@@ -63,10 +65,16 @@ public class TraineeBusiness {
     private final IPtCardService cardService;
     private final IPtBagService bagService;
 
+    /**
+     * 获取报到学员信息
+     * @param bo 学员业务对象
+     * @param doingDate 报到日期
+     * @return 学员信息
+     */
     public R<YcTraineeVo> getTraineeRegisterInfo(YcTraineeBo bo, Date doingDate) {
         PtUserAccountBo accountBo = new PtUserAccountBo().setPhone(bo.getMobilePhone())
-            .setCategory(bo.getCategory())
-            .setIdNumber(bo.getIdNumber());
+                                        .setCategory(bo.getCategory())
+                                        .setIdNumber(bo.getIdNumber());
         YcTraineeVo traineeVo = userAccountService.selectTraineeByBo(accountBo, doingDate);
         if (ObjectUtil.isEmpty(traineeVo)) {
             return R.fail("没有您的培训信息");
@@ -95,11 +103,25 @@ public class TraineeBusiness {
         return R.ok(traineeVo);
     }
 
+    /**
+     * 学员报到
+     * @param bo 学员业务对象
+     * @param traineeVo 报到后信息
+     * @return 报到结果
+     */
 
     public R<ErrorInfo> registerTrainee(YcTraineeBo bo, YcTraineeVo traineeVo) {
+        // 学员基本信息
         PtUserAccountBo accountBo = new PtUserAccountBo().setUserId(Long.valueOf(bo.getUserId()));
         YcTraineeVo ycTraineeVo = userAccountService.selectTraineeByBo(accountBo, null);
-        Map<String, Long> map = getGuestInfo(bo);
+        bo.setUserXm(ycTraineeVo.getUserXm());
+        // 学员培训班级信息
+        RemoteDeptVo remoteDeptVo = remoteDeptService.selectDeptById(Long.valueOf(bo.getDeptId()));
+        bo.setTeamName(remoteDeptVo.getDeptName());
+        bo.setCheckInDate(remoteDeptVo.getCheckDate());
+        bo.setCheckoutDate(remoteDeptVo.getEndDate());
+        // 获取学员作为入住客人的信息
+        getGuestInfo(bo, ycTraineeVo.getOtherId(), remoteDeptVo.getOtherId());
         // 1.如果当前人员没有住房,则安排房间
         String roomCode = bo.getRoomCode();
         if (ObjectUtil.isEmpty(roomCode)) {
@@ -108,38 +130,87 @@ public class TraineeBusiness {
             roomCode = bo.getRoomCode();
         }
         if (ObjectUtil.isNotEmpty(roomCode)) {
-            // TODO 2024-11-17 luoyibo 办理住宿,获取房卡信息
+            // TODO 2024-11-17 luoyibo 获取房卡信息
+
+            // 办理住宿
+            RemoteOrderVo kfOrderVo = checkInTeamByBo(bo);
+            ycTraineeVo.setGuesterId(kfOrderVo.getGuestId().toString());
+            ycTraineeVo.setRoomCode(kfOrderVo.getRoomCode());
+            ycTraineeVo.setRoomId(kfOrderVo.getRoomId());
+            ycTraineeVo.setGuestRoomId(kfOrderVo.getRoomId());
+            ycTraineeVo.setOrderIndex(ObjectUtil.isNotEmpty(kfOrderVo.getOrderIndex()) ? kfOrderVo.getOrderIndex() : 0);
         }
 
         // 培训班级信息
-        RemoteDeptVo remoteDeptVo = remoteDeptService.selectDeptById(Long.valueOf(bo.getDeptId()));
         ycTraineeVo.setUserClass(YcVoConvert.ycClassVoConvert(remoteDeptVo));
+        // 卡片信息
+        setTraineeCardInfo(ycTraineeVo);
+
         BeanUtil.copyProperties(ycTraineeVo, traineeVo);
-        // 设置其它辅助信息
+
         return R.ok();
     }
 
-    public Map<String, Long> getGuestInfo(YcTraineeBo bo) {
-        PtUserAccountVo accountVo = userAccountService.queryById(Long.valueOf(bo.getUserId()));
-        RemoteDeptVo remoteDeptVo = remoteDeptService.selectDeptById(Long.valueOf(bo.getDeptId()));
-        String userOtherId = accountVo.getOtherId();
-        String deptOtherId = remoteDeptVo.getOtherId();
+    public void getGuestInfo(YcTraineeBo bo, String userOtherId, String deptOtherId) {
 
         R<RemoteGuestVo> getGuestVo = kfGuestService.selectGuestByOtherId(userOtherId);
+        bo.setGuestId(getGuestVo.getData().getId());
+
         RemoteTeamBo teamBo = new RemoteTeamBo().setOtherId(deptOtherId);
         R<RemoteTeamVo> getTeamVo = kfTeamService.selectTeamByBo(teamBo);
-        Map<String, Long> map = new HashMap<>();
-        map.put("guestId", getGuestVo.getData().getId());
-        map.put("teamId", getTeamVo.getData().getId());
-        bo.setGuestId(getGuestVo.getData().getId());
         bo.setTeamId(getTeamVo.getData().getId());
-        return map;
     }
 
+    /**
+     * 获取指定正在进行的班级列表
+     *
+     * @param doingDate 指定时间
+     * @return List<RemoteDeptVo> 班级列表
+     */
     public List<RemoteDeptVo> selectDoingClass(Date doingDate) {
         return remoteDeptService.selectDoingClass(doingDate);
     }
 
+    public List<RemoteTeamVo> selectDoingTeam(Date doingDate) {
+        R<List<RemoteTeamVo>> result = kfTeamService.selectDoingTeam(doingDate);
+        if (R.isSuccess(result)) {
+            return result.getData();
+        }
+        return null;
+    }
+
+    /**
+     * 根据统一标识获取班级锁房列表
+     *
+     * @param teamId 统一标识
+     * @return List<RemoteOrderVo> 锁房列表
+     */
+    public List<RemoteOrderVo> selectTeamLockRoom(Long teamId) {
+        return kfOrderService.selectTeamRoom(teamId);
+    }
+
+    /**
+     * 将正在进行的班级锁房信息放入缓存
+     *
+     * @param doingDate 进行日期
+     * @return R
+     */
+    public R<Void> setDoingClassLockRoom(Date doingDate) {
+        List<RemoteTeamVo> classList = this.selectDoingTeam(doingDate);
+        if (CollectionUtil.isNotEmpty(classList)) {
+            classList.parallelStream().forEach(p -> {
+                String redisKey = CacheNames.CLASS_ROOM + "_" + p.getId();
+                List<RemoteOrderVo> orderVos = this.selectTeamLockRoom(p.getId());
+                if (CollectionUtil.isNotEmpty(orderVos)) {
+                    LinkedBlockingQueue<String> concurrentLinkedQueue = new LinkedBlockingQueue<>();
+                    orderVos.forEach(k -> concurrentLinkedQueue.add(k.getRoomCode()));
+                    RedisUtils.setCacheObject(redisKey, concurrentLinkedQueue);
+                }
+            });
+        }
+        return R.ok();
+    }
+
     private void setTraineeCardInfo(YcTraineeVo traineeVo) {
         List<PtCardVo> cardVos = cardService.queryList(new PtCardBo().setUserId(Long.valueOf(traineeVo.getUserId())));
         List<YcCardVo> ycCardVos = new ArrayList<>();
@@ -163,7 +234,30 @@ public class TraineeBusiness {
             if (ObjectUtil.isNotEmpty(roomCode)) {
                 bo.setRoomCode(roomCode);
                 RedisUtils.setCacheObject(key, concurrentLinkedQueue);
+            } else {
+                RedisUtils.deleteObject(key);
             }
         }
     }
+
+    /**
+     * 团客办理入住
+     *
+     * @param bo 入住订单业务对象
+     * @return 入住 信息
+     */
+    private RemoteOrderVo checkInTeamByBo(YcTraineeBo bo) {
+        RemoteOrderBo remoteBo = new RemoteOrderBo();
+        remoteBo.setGuestId(bo.getGuestId());
+        remoteBo.setGuestName(bo.getUserXm());
+        remoteBo.setTeamId(bo.getTeamId());
+        remoteBo.setTeamName(bo.getTeamName());
+        remoteBo.setRoomCode(bo.getRoomCode());
+        remoteBo.setStartTime(bo.getCheckInDate());
+        remoteBo.setEndTime(bo.getCheckoutDate());
+        remoteBo.setOrderStatus("1");
+        remoteBo.setUpdatedBy(Long.valueOf(bo.getUserId()));
+
+        return kfOrderService.checkInTeamByBo(remoteBo);
+    }
 }

+ 3 - 29
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/controller/self/TraineeController.java

@@ -1,11 +1,8 @@
 package org.dromara.backstage.controller.self;
 
-import cn.hutool.core.codec.Base64;
 import cn.hutool.core.date.DateUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.dromara.backstage.business.accouunt.UserAccountBusiness;
-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.vo.yc.YcTraineeVo;
@@ -15,12 +12,10 @@ import org.dromara.common.core.domain.R;
 import org.dromara.common.core.domain.model.ErrorInfo;
 import org.dromara.common.core.enums.ResultCodeEnum;
 import org.dromara.common.json.utils.JsonUtils;
-import org.dromara.common.redis.utils.RedisUtils;
 import org.dromara.system.api.domain.vo.RemoteDeptVo;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
-import java.util.concurrent.LinkedBlockingQueue;
 
 /**
  * @ClassName TraineeController
@@ -78,16 +73,6 @@ public class TraineeController {
      */
     @PostMapping("/api/v1/register")
     public ReturnResult checkInTrainee(@RequestBody YcTraineeBo bo) {
-        // LinkedBlockingQueue<String> concurrentLinkedQueue = RedisUtils.getCacheObject("class_room_1857338992129335298");
-        //
-        // String roomCode = concurrentLinkedQueue.poll();
-        // if (ObjectUtil.isNotEmpty(roomCode)) {
-        //     log.info(roomCode);
-        //     RedisUtils.setCacheObject("class_room_1857338992129335298", concurrentLinkedQueue);
-        //     return ReturnResult.success(roomCode);
-        // }else {
-        //     return ReturnResult.failure(ResultCodeEnum.DATA_NOT_FOUND, "没有可安排的房间了");
-        // }
         YcTraineeVo traineeVo = new YcTraineeVo();
         R<ErrorInfo> result = traineeBusiness.registerTrainee(bo, traineeVo);
         if (R.isError(result)) {
@@ -110,20 +95,9 @@ public class TraineeController {
 
     @PostMapping("/api/v1/lock/room")
     public ReturnResult lockRoomTest() {
-        LinkedBlockingQueue<String> concurrentLinkedQueue = new LinkedBlockingQueue<>();
-        synchronized (concurrentLinkedQueue) {
-            concurrentLinkedQueue.add("A101");
-            concurrentLinkedQueue.add("A102");
-            concurrentLinkedQueue.add("A105");
-            concurrentLinkedQueue.add("A104");
-            concurrentLinkedQueue.add("A103");
-            concurrentLinkedQueue.add("A106");
-            concurrentLinkedQueue.add("A107");
-            concurrentLinkedQueue.add("A108");
-            concurrentLinkedQueue.add("A109");
+        // List<RemoteOrderVo> vos= traineeBusiness.selectTeamLockRoom(1858315769720258561L);
 
-            RedisUtils.setCacheObject("class_room_1857338992129335298", concurrentLinkedQueue);
-        }
-        return ReturnResult.success();
+        R<Void> result = traineeBusiness.setDoingClassLockRoom(DateUtil.date());
+        return R.isSuccess(result) ? ReturnResult.success() : ReturnResult.failure(result.getCode(), result.getMsg());
     }
 }

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

@@ -63,4 +63,8 @@ public class YcTraineeBo implements Serializable {
     private Long guestId;
 
     private Long teamId;
+
+    private String userXm;
+
+    private String teamName;
 }

+ 7 - 6
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/domain/vo/KfOrderVo.java

@@ -1,14 +1,12 @@
 package org.dromara.hotel.domain.vo;
 
-import java.util.Date;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import org.dromara.hotel.domain.KfOrder;
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
-import org.dromara.common.excel.annotation.ExcelDictFormat;
-import org.dromara.common.excel.convert.ExcelDictConvert;
 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.KfOrder;
 
 import java.io.Serial;
 import java.io.Serializable;
@@ -99,6 +97,9 @@ public class KfOrderVo implements Serializable {
     @ExcelProperty(value = "创建时间")
     private Date createTime;
 
-
+    /**
+     * 团客锁房时的排序号
+     */
+    private Integer orderIndex;
 
 }

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

@@ -44,11 +44,11 @@ public class RemoteOrderServiceImpl implements RemoteOrderService {
      */
     @Override
     public RemoteOrderVo checkInTeamByBo(RemoteOrderBo remoteBo) {
-        return null;
+        return kfOrderService.checkInTeamByBo(remoteBo);
     }
 
     @Override
-    public List<RemoteOrderVo> selectTeamRoom(String otherId) {
-        return List.of();
+    public List<RemoteOrderVo> selectTeamRoom(Long teamId) {
+        return kfOrderService.selectTeamLockRoom(teamId);
     }
 }

+ 17 - 12
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/dubbo/RemoteTeamServiceImpl.java

@@ -16,6 +16,7 @@ import org.dromara.hotel.domain.vo.KfTeamVo;
 import org.dromara.hotel.service.IKfTeamService;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -36,52 +37,55 @@ public class RemoteTeamServiceImpl implements RemoteTeamService {
 
     /**
      * 增加团客信息
+     *
      * @param remoteBo 团客业务对象
      * @return 增加结果
      */
     @Override
     public R<ErrorInfo> insertTeamByBo(RemoteTeamBo remoteBo) {
-        try{
+        try {
             KfTeamBo bo = MapstructUtils.convert(remoteBo, KfTeamBo.class);
             if (bo != null) {
                 bo.setCreateBy(remoteBo.getOperatorId());
                 boolean flag = kfTeamService.insertByBo(bo);
-                if(flag){
+                if (flag) {
                     return R.ok("增加团客信息成功");
                 }
             }
             return R.fail("增加团客信息失败");
-        }catch (Exception e){
-            log.error("增加团客信息失败-{}-{}", JsonUtils.toJsonString(remoteBo),e.getMessage());
+        } catch (Exception e) {
+            log.error("增加团客信息失败-{}-{}", JsonUtils.toJsonString(remoteBo), e.getMessage());
             return R.fail("增加团客信息失败");
         }
     }
 
     /**
      * 修改团客信息
+     *
      * @param remoteBo 团客业务对象
      * @return 修改结果
      */
     @Override
     public R<ErrorInfo> updateTeamByBo(RemoteTeamBo remoteBo) {
-        try{
+        try {
             KfTeamBo bo = MapstructUtils.convert(remoteBo, KfTeamBo.class);
             if (bo != null) {
                 bo.setUpdateBy(remoteBo.getOperatorId());
                 boolean flag = kfTeamService.updateByBo(bo);
-                if(flag){
+                if (flag) {
                     return R.ok("修改团客信息成功");
                 }
             }
-           return R.fail("修改团客信息失败");
-        }catch (Exception e){
-            log.error("修改团客信息失败-{}-{}", JsonUtils.toJsonString(remoteBo),e.getMessage());
+            return R.fail("修改团客信息失败");
+        } catch (Exception e) {
+            log.error("修改团客信息失败-{}-{}", JsonUtils.toJsonString(remoteBo), e.getMessage());
             return R.fail("修改团客信息失败");
         }
     }
 
     /**
      * 查询已有团客信息
+     *
      * @param remoteBo 团客业务对象
      * @return 团客信息
      */
@@ -94,14 +98,15 @@ public class RemoteTeamServiceImpl implements RemoteTeamService {
                 return R.ok(MapstructUtils.convert(vo, RemoteTeamVo.class));
             }
             return R.fail("无此团客信息");
-        } catch (Exception e){
+        } catch (Exception e) {
             log.error("获取指定团客信息失败-{}", JsonUtils.toJsonString(remoteBo));
             return R.fail("获取团客信息失败");
         }
     }
 
     @Override
-    public R<List<RemoteTeamVo>> selectDoingTeamByOtherId(String otherId) {
-        return null;
+    public R<List<RemoteTeamVo>> selectDoingTeam(Date doingDate) {
+        List<KfTeamVo> vos = kfTeamService.selectDoingTeam(doingDate);
+        return R.ok(MapstructUtils.convert(vos, RemoteTeamVo.class));
     }
 }

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

@@ -86,4 +86,12 @@ public interface IKfOrderService {
      * @return 入住信息
      */
     RemoteOrderVo checkInTeamByBo(RemoteOrderBo remoteBo);
+
+    /**
+     * 根据Id查询团客的锁房信息
+     *
+     * @param teamId 团客Id
+     * @return 锁房信息
+     */
+    List<RemoteOrderVo> selectTeamLockRoom(Long teamId);
 }

+ 3 - 0
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/service/IKfTeamService.java

@@ -6,6 +6,7 @@ import org.dromara.hotel.domain.bo.KfTeamBo;
 import org.dromara.hotel.domain.vo.KfTeamVo;
 
 import java.util.Collection;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -72,4 +73,6 @@ public interface IKfTeamService {
      * @return 团客信息
      */
     KfTeamVo selectTeamByBo(KfTeamBo bo);
+
+    List<KfTeamVo> selectDoingTeam(Date doingDate);
 }

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

@@ -21,6 +21,7 @@ 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;
@@ -93,8 +94,12 @@ public class KfOrderServiceImpl implements IKfOrderService {
         lqw.between(params.get("beginStartTime") != null && params.get("endStartTime") != null,
                     KfOrder::getStartTime, params.get("beginStartTime"), params.get("endStartTime"));
         if (StringUtils.isNotBlank(bo.getOrderStatus())) {
-            lqw.in(KfOrder::getOrderStatus, bo.getOrderStatus().split(","));
+            List<String> orderStatusList = Arrays.asList(bo.getOrderStatus().split(","));
+            lqw.in(KfOrder::getOrderStatus, orderStatusList);
         }
+        lqw.eq(StringUtils.isNotBlank(bo.getOrderType()), KfOrder::getOrderType, bo.getOrderType());
+        lqw.eq(bo.getTeamId()!= null, KfOrder::getTeamId, bo.getTeamId());
+        lqw.orderByAsc(KfOrder::getOrderIndex);
         return lqw;
     }
 
@@ -214,16 +219,18 @@ public class KfOrderServiceImpl implements IKfOrderService {
      */
     @Override
     public RemoteOrderVo checkInTeamByBo(RemoteOrderBo remoteBo) {
+        List<String> orderStatusList = Arrays.asList("1", "2");
         KfOrderBo bo = MapstructUtils.convert(remoteBo, KfOrderBo.class);
         if (bo != null) {
             KfOrderVo vo = baseMapper.selectVoOne(
-                new LambdaQueryWrapper<KfOrder>().eq(KfOrder::getGuestId, bo.getGuestId())
+                new LambdaQueryWrapper<KfOrder>()
                     .eq(KfOrder::getTeamId, bo.getTeamId())
-                    .eq(KfOrder::getRoomCode, bo.getRoomCode()));
+                    .eq(KfOrder::getRoomCode, bo.getRoomCode())
+                    .in(KfOrder::getOrderStatus,orderStatusList));
             if (ObjectUtil.isNotEmpty(vo)) {
                 bo.setId(vo.getId());
                 this.updateByBo(bo);
-;            } else {
+            } else {
                 this.insertByBo(bo);
             }
             vo = this.queryById(bo.getId());
@@ -231,4 +238,21 @@ public class KfOrderServiceImpl implements IKfOrderService {
         }
         return null;
     }
+
+    /**
+     * 根据唯一标识查询团客的锁房信息
+     *
+     * @param teamId 唯一标识
+     * @return 锁房信息
+     */
+    @Override
+    public List<RemoteOrderVo> selectTeamLockRoom(Long teamId) {
+        KfOrderBo bo = new KfOrderBo();
+        bo.setTeamId(teamId);
+        bo.setOrderStatus("2");
+        bo.setOrderType("2");
+        List<KfOrderVo> vos = this.queryList(bo);
+        return MapstructUtils.convert(vos, RemoteOrderVo.class);
+    }
+
 }

+ 7 - 0
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/service/impl/KfTeamServiceImpl.java

@@ -16,6 +16,7 @@ import org.dromara.hotel.domain.KfTeam;
 import org.dromara.hotel.mapper.KfTeamMapper;
 import org.dromara.hotel.service.IKfTeamService;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.Collection;
@@ -157,4 +158,10 @@ public class KfTeamServiceImpl implements IKfTeamService {
 
         return baseMapper.selectVoOne(lqw);
     }
+
+    @Override
+    public List<KfTeamVo> selectDoingTeam(Date doingDate) {
+        return baseMapper.selectVoList(new LambdaQueryWrapper<KfTeam>()
+            .le(KfTeam::getStartTime, doingDate).ge(KfTeam::getEndTime, doingDate));
+    }
 }

+ 0 - 12
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java

@@ -422,18 +422,6 @@ public class SysDeptServiceImpl implements ISysDeptService {
      */
     @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>()
-        //    .le(SysDept::getCheckDate, doingDate).ge(SysDept::getEndDate, doingDate));
-        //if(CollectionUtil.isNotEmpty(list)){
-        //    RedisUtils.setCacheList(CacheNames.DOING_CLASS, list);
-        //    return list;
-        //}
-        //return null;
-
         return baseMapper.selectVoList(new LambdaQueryWrapper<SysDept>()
             .le(SysDept::getCheckDate, doingDate).ge(SysDept::getEndDate, doingDate));
     }