Quellcode durchsuchen

feature: 酒店系统
1.查询房卡

luoyb vor 1 Jahr
Ursprung
Commit
46a7f223a5

+ 3 - 0
ruoyi-api/ruoyi-api-hotel/src/main/java/org/dromara/hotel/api/service/RemoteCardDataService.java

@@ -3,6 +3,7 @@ package org.dromara.hotel.api.service;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.domain.model.ErrorInfo;
 import org.dromara.hotel.api.domain.bo.RemoteCardDataBo;
+import org.dromara.hotel.api.domain.vo.RemoteCardDataVo;
 
 /**
  * @ClassName RemoteCardDataService
@@ -20,5 +21,7 @@ public interface RemoteCardDataService {
      * @return 发卡结果
      */
     R<ErrorInfo> insertCardDataByBo(RemoteCardDataBo remoteBo);
+
+    RemoteCardDataVo getCardDataByBo(RemoteCardDataBo remoteBo);
 }
 

+ 82 - 2
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/self/TraineeBusiness.java

@@ -4,11 +4,12 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.HexUtil;
 import cn.hutool.core.util.ObjectUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.dubbo.config.annotation.DubboReference;
-import org.dromara.backstage.basics.service.IPtRoomService;
 import org.dromara.backstage.business.lock.LockBusiness;
 import org.dromara.backstage.cardCenter.domain.bo.PtCardBo;
 import org.dromara.backstage.cardCenter.service.IPtCardService;
@@ -19,6 +20,7 @@ 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.YcLockCardVo;
 import org.dromara.backstage.domain.vo.yc.YcTraineeVo;
 import org.dromara.backstage.mq.KafkaNormalProducer;
 import org.dromara.backstage.mq.constant.YktEventConstaints;
@@ -31,16 +33,20 @@ import org.dromara.common.core.constant.CacheNames;
 import org.dromara.common.core.constant.HotelBusinessConstants;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.domain.model.ErrorInfo;
+import org.dromara.common.core.enums.CardStatusEnum;
 import org.dromara.common.core.enums.ResultCodeEnum;
 import org.dromara.common.core.enums.RoomCardTypeEnum;
 import org.dromara.common.message.kafka.domain.KafkaHeader;
 import org.dromara.common.message.kafka.domain.KafkaMessage;
 import org.dromara.common.redis.utils.RedisUtils;
+import org.dromara.hotel.api.domain.bo.RemoteCardDataBo;
 import org.dromara.hotel.api.domain.bo.RemoteOrderBo;
 import org.dromara.hotel.api.domain.bo.RemoteTeamBo;
+import org.dromara.hotel.api.domain.vo.RemoteCardDataVo;
 import org.dromara.hotel.api.domain.vo.RemoteGuestVo;
 import org.dromara.hotel.api.domain.vo.RemoteOrderVo;
 import org.dromara.hotel.api.domain.vo.RemoteTeamVo;
+import org.dromara.hotel.api.service.RemoteCardDataService;
 import org.dromara.hotel.api.service.RemoteGuestService;
 import org.dromara.hotel.api.service.RemoteOrderService;
 import org.dromara.hotel.api.service.RemoteTeamService;
@@ -51,6 +57,7 @@ import org.springframework.stereotype.Service;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 import java.util.concurrent.LinkedBlockingQueue;
 
 /**
@@ -73,6 +80,8 @@ public class TraineeBusiness {
     private final RemoteTeamService kfTeamService;
     @DubboReference
     private final RemoteGuestService kfGuestService;
+    @DubboReference
+    private final RemoteCardDataService remoteCardDataService;
 
     private final IPtUserAccountService userAccountService;
     private final IPtCardService cardService;
@@ -80,7 +89,6 @@ public class TraineeBusiness {
     private final LockBusiness lockBusiness;
     private final KafkaNormalProducer kafkaProducer;
     private final SelfBusiness selfBusiness;
-    private final IPtRoomService roomService;
 
     /**
      * 获取报到学员信息
@@ -183,6 +191,8 @@ public class TraineeBusiness {
 
         // 发送报到的kafka消息
         sendCheckInMessageToKafka(bo);
+        //写发卡记录表
+        insertCardData(ycTraineeVo);
         return R.ok();
     }
 
@@ -351,6 +361,28 @@ public class TraineeBusiness {
         }
     }
 
+    /**
+     * 写入发房卡历史记录
+     * @param traineeVo 客信息
+     */
+    private void insertCardData(YcTraineeVo traineeVo){
+        if(ObjectUtil.isNotEmpty(traineeVo.getRoomCardData())) {
+            YcCardVo cardVo = traineeVo.getUserCards().stream().filter(p -> ObjectUtil.equals(p.getCardStatusId(), CardStatusEnum.NORMAL.code())).findFirst().orElse(null);
+            RemoteCardDataBo remoteCardDataBo = new RemoteCardDataBo();
+            if (cardVo != null) {
+                remoteCardDataBo.setFactoryId(cardVo.getFactoryFixId().toString());
+            }
+            remoteCardDataBo.setCardType("1");
+            remoteCardDataBo.setRoomCode(traineeVo.getRoomCode());
+            remoteCardDataBo.setMasterName(traineeVo.getUserXm());
+            remoteCardDataBo.setStartTime(traineeVo.getCheckinDate());
+            remoteCardDataBo.setEndTime(traineeVo.getCheckoutDate());
+            remoteCardDataBo.setCardStatus("1");
+            remoteCardDataBo.setRemark("客人卡");
+
+            remoteCardDataService.insertCardDataByBo(remoteCardDataBo);
+        }
+    }
     /**
      * 发送报到信息到kafka
      *
@@ -376,4 +408,52 @@ public class TraineeBusiness {
 
         kafkaProducer.sendKafkaMessage("eventBus",bo.getGuestId(),message,false);
     }
+
+    public YcLockCardVo queryLockCardInfo(Map<String, Object> mapQuery){
+        String cardNo = mapQuery.get("cardNo").toString();
+        String userCard = mapQuery.get("userCard").toString();
+        String cardData = mapQuery.get("cardData").toString();
+        String roomCard = mapQuery.get("roomCard").toString();
+        String isRoomCard = "1";
+        String isUserCard = "1";
+        int roomCardLen = 16;
+        YcLockCardVo lockCardInfo = new YcLockCardVo();
+        lockCardInfo.setUserCard(userCard);
+        lockCardInfo.setRoomCard(roomCard);
+        lockCardInfo.setManageCard("0");
+        lockCardInfo.setUserXm("");
+        lockCardInfo.setRoomCode("");
+        lockCardInfo.setCheckinDate("");
+        lockCardInfo.setCheckoutDate("");
+        lockCardInfo.setDataRemark("");
+        lockCardInfo.setClassName("");
+
+        //如果是房卡,获取房卡信息
+        if (isRoomCard.equals(roomCard)) {
+            RemoteCardDataBo bo = new RemoteCardDataBo();
+            bo.setCardStatus("1");
+            bo.setFactoryId(cardNo);
+            RemoteCardDataVo userCardData = remoteCardDataService.getCardDataByBo(bo);
+            if (userCardData != null) {
+                lockCardInfo.setUserXm(userCardData.getMasterName());
+                lockCardInfo.setRoomCode(userCardData.getRoomCode());
+                lockCardInfo.setCheckinDate(DateUtil.formatDateTime(userCardData.getStartTime()));
+                lockCardInfo.setCheckoutDate(DateUtil.formatDateTime(userCardData.getEndTime()));
+                lockCardInfo.setDataRemark(userCardData.getRemark());
+                // lockCardInfo.setManageCard(userCardData);
+            } else{
+                log.error("没有对应的住宿信息-[数据:{},卡号:{}]", cardData, cardNo);
+
+            }
+        }
+        //如果是餐卡,获取餐卡信息
+        //if(isUserCard.equals(userCard)){
+        //    Map<String, Object> userInfo = userService.getHndxUserByFixId(String.valueOf(cardNo));
+        //    if(userInfo!=null){
+        //        lockCardInfo.setUserXm(userInfo.get("name").toString());
+        //        lockCardInfo.setClassName(userInfo.get("className").toString());
+        //    }
+        //}
+        return lockCardInfo;
+    }
 }

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

@@ -2,10 +2,12 @@ package org.dromara.backstage.controller.self;
 
 import cn.hutool.core.codec.Base64;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.backstage.business.self.TraineeBusiness;
 import org.dromara.backstage.domain.bo.yc.YcTraineeBo;
+import org.dromara.backstage.domain.vo.yc.YcLockCardVo;
 import org.dromara.backstage.domain.vo.yc.YcTraineeVo;
 import org.dromara.common.core.api.ResponseResult;
 import org.dromara.common.core.api.ReturnResult;
@@ -17,6 +19,7 @@ import org.dromara.system.api.domain.vo.RemoteDeptVo;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @ClassName TraineeController
@@ -120,4 +123,18 @@ public class TraineeController {
 
         return ReturnResult.success();
     }
+
+    /**
+     * 查询房卡
+     * @param mapQuery 查询参数
+     * @return 房卡信息
+     */
+    @PostMapping("/api/v1/card/")
+    public ReturnResult queryLockCardInfo(@RequestBody Map<String, Object> mapQuery){
+        YcLockCardVo vo = traineeBusiness.queryLockCardInfo(mapQuery);
+        if(ObjectUtil.isNotEmpty(vo)) {
+            return ReturnResult.success(vo);
+        }
+        return ReturnResult.failure(ResultCodeEnum.DATA_NOT_FOUND);
+    }
 }

+ 33 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/domain/vo/yc/YcLockCardVo.java

@@ -0,0 +1,33 @@
+package org.dromara.backstage.domain.vo.yc;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * name: YcLockCardVo
+ * description: 房卡(餐卡)综合信息
+ * date: 2022-01-08 11:30
+ *
+ * @author luoyibo
+ * @version 0.1
+ * @since JDK 1.8
+ */
+@Data
+public class YcLockCardVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -3990163277092370394L;
+
+    private String userXm;
+    private String roomCode;
+    private String checkinDate;
+    private String checkoutDate;
+    private String dataRemark;
+    private String className;
+    private String userCard;
+    private String roomCard;
+    private String manageCard;
+
+}

+ 19 - 0
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/domain/convert/RemoteCardDataVoConvert.java

@@ -0,0 +1,19 @@
+package org.dromara.hotel.domain.convert;
+
+import io.github.linpeilie.BaseMapper;
+import org.dromara.hotel.api.domain.bo.RemoteCardDataBo;
+import org.dromara.hotel.api.domain.vo.RemoteCardDataVo;
+import org.dromara.hotel.domain.bo.KfProvideCardHisBo;
+import org.dromara.hotel.domain.vo.KfProvideCardHisVo;
+import org.mapstruct.Mapper;
+import org.mapstruct.MappingConstants;
+import org.mapstruct.ReportingPolicy;
+
+/**
+ * 客房团客信息转换器
+ * @author zhujie
+ */
+@Mapper(componentModel = MappingConstants.ComponentModel.SPRING, unmappedTargetPolicy = ReportingPolicy.IGNORE)
+public interface RemoteCardDataVoConvert extends BaseMapper<KfProvideCardHisVo, RemoteCardDataVo> {
+
+}

+ 7 - 0
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/dubbo/RemoteCardDataServiceImpl.java

@@ -8,6 +8,7 @@ import org.dromara.common.core.domain.model.ErrorInfo;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.json.utils.JsonUtils;
 import org.dromara.hotel.api.domain.bo.RemoteCardDataBo;
+import org.dromara.hotel.api.domain.vo.RemoteCardDataVo;
 import org.dromara.hotel.api.service.RemoteCardDataService;
 import org.dromara.hotel.domain.bo.KfProvideCardHisBo;
 import org.dromara.hotel.service.IKfProvideCardHisService;
@@ -45,4 +46,10 @@ public class RemoteCardDataServiceImpl implements RemoteCardDataService {
             return R.fail("增加发卡数据失败");
         }
     }
+
+    @Override
+    public RemoteCardDataVo getCardDataByBo(RemoteCardDataBo remoteBo) {
+        KfProvideCardHisBo bo = MapstructUtils.convert(remoteBo, KfProvideCardHisBo.class);
+        return null;
+    }
 }

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

@@ -66,4 +66,6 @@ public interface IKfProvideCardHisService {
      * @return 是否删除成功
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    KfProvideCardHisVo queryByBo(KfProvideCardHisBo bo);
 }

+ 5 - 0
ruoyi-modules/ruoyi-hotel/src/main/java/org/dromara/hotel/service/impl/KfProvideCardHisServiceImpl.java

@@ -155,4 +155,9 @@ public class KfProvideCardHisServiceImpl implements IKfProvideCardHisService {
         }
         return baseMapper.deleteByIds(ids) > 0;
     }
+
+    @Override
+    public KfProvideCardHisVo queryByBo(KfProvideCardHisBo bo) {
+        return this.queryList(bo).get(0);
+    }
 }