|
@@ -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.PtBagBo;
|
|
|
import org.dromara.backstage.payment.domain.bo.PtUserAccountBo;
|
|
import org.dromara.backstage.payment.domain.bo.PtUserAccountBo;
|
|
|
import org.dromara.backstage.payment.domain.vo.PtBagVo;
|
|
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.IPtBagService;
|
|
|
import org.dromara.backstage.payment.service.IPtUserAccountService;
|
|
import org.dromara.backstage.payment.service.IPtUserAccountService;
|
|
|
import org.dromara.common.core.constant.CacheNames;
|
|
import org.dromara.common.core.constant.CacheNames;
|
|
|
import org.dromara.common.core.domain.R;
|
|
import org.dromara.common.core.domain.R;
|
|
|
import org.dromara.common.core.domain.model.ErrorInfo;
|
|
import org.dromara.common.core.domain.model.ErrorInfo;
|
|
|
import org.dromara.common.redis.utils.RedisUtils;
|
|
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.bo.RemoteTeamBo;
|
|
|
import org.dromara.hotel.api.domain.vo.RemoteGuestVo;
|
|
import org.dromara.hotel.api.domain.vo.RemoteGuestVo;
|
|
|
import org.dromara.hotel.api.domain.vo.RemoteOrderVo;
|
|
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.dromara.system.api.domain.vo.RemoteDeptVo;
|
|
|
import org.springframework.stereotype.Service;
|
|
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;
|
|
import java.util.concurrent.LinkedBlockingQueue;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -63,10 +65,16 @@ public class TraineeBusiness {
|
|
|
private final IPtCardService cardService;
|
|
private final IPtCardService cardService;
|
|
|
private final IPtBagService bagService;
|
|
private final IPtBagService bagService;
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取报到学员信息
|
|
|
|
|
+ * @param bo 学员业务对象
|
|
|
|
|
+ * @param doingDate 报到日期
|
|
|
|
|
+ * @return 学员信息
|
|
|
|
|
+ */
|
|
|
public R<YcTraineeVo> getTraineeRegisterInfo(YcTraineeBo bo, Date doingDate) {
|
|
public R<YcTraineeVo> getTraineeRegisterInfo(YcTraineeBo bo, Date doingDate) {
|
|
|
PtUserAccountBo accountBo = new PtUserAccountBo().setPhone(bo.getMobilePhone())
|
|
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);
|
|
YcTraineeVo traineeVo = userAccountService.selectTraineeByBo(accountBo, doingDate);
|
|
|
if (ObjectUtil.isEmpty(traineeVo)) {
|
|
if (ObjectUtil.isEmpty(traineeVo)) {
|
|
|
return R.fail("没有您的培训信息");
|
|
return R.fail("没有您的培训信息");
|
|
@@ -95,11 +103,25 @@ public class TraineeBusiness {
|
|
|
return R.ok(traineeVo);
|
|
return R.ok(traineeVo);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 学员报到
|
|
|
|
|
+ * @param bo 学员业务对象
|
|
|
|
|
+ * @param traineeVo 报到后信息
|
|
|
|
|
+ * @return 报到结果
|
|
|
|
|
+ */
|
|
|
|
|
|
|
|
public R<ErrorInfo> registerTrainee(YcTraineeBo bo, YcTraineeVo traineeVo) {
|
|
public R<ErrorInfo> registerTrainee(YcTraineeBo bo, YcTraineeVo traineeVo) {
|
|
|
|
|
+ // 学员基本信息
|
|
|
PtUserAccountBo accountBo = new PtUserAccountBo().setUserId(Long.valueOf(bo.getUserId()));
|
|
PtUserAccountBo accountBo = new PtUserAccountBo().setUserId(Long.valueOf(bo.getUserId()));
|
|
|
YcTraineeVo ycTraineeVo = userAccountService.selectTraineeByBo(accountBo, null);
|
|
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.如果当前人员没有住房,则安排房间
|
|
// 1.如果当前人员没有住房,则安排房间
|
|
|
String roomCode = bo.getRoomCode();
|
|
String roomCode = bo.getRoomCode();
|
|
|
if (ObjectUtil.isEmpty(roomCode)) {
|
|
if (ObjectUtil.isEmpty(roomCode)) {
|
|
@@ -108,38 +130,87 @@ public class TraineeBusiness {
|
|
|
roomCode = bo.getRoomCode();
|
|
roomCode = bo.getRoomCode();
|
|
|
}
|
|
}
|
|
|
if (ObjectUtil.isNotEmpty(roomCode)) {
|
|
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));
|
|
ycTraineeVo.setUserClass(YcVoConvert.ycClassVoConvert(remoteDeptVo));
|
|
|
|
|
+ // 卡片信息
|
|
|
|
|
+ setTraineeCardInfo(ycTraineeVo);
|
|
|
|
|
+
|
|
|
BeanUtil.copyProperties(ycTraineeVo, traineeVo);
|
|
BeanUtil.copyProperties(ycTraineeVo, traineeVo);
|
|
|
- // 设置其它辅助信息
|
|
|
|
|
|
|
+
|
|
|
return R.ok();
|
|
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);
|
|
R<RemoteGuestVo> getGuestVo = kfGuestService.selectGuestByOtherId(userOtherId);
|
|
|
|
|
+ bo.setGuestId(getGuestVo.getData().getId());
|
|
|
|
|
+
|
|
|
RemoteTeamBo teamBo = new RemoteTeamBo().setOtherId(deptOtherId);
|
|
RemoteTeamBo teamBo = new RemoteTeamBo().setOtherId(deptOtherId);
|
|
|
R<RemoteTeamVo> getTeamVo = kfTeamService.selectTeamByBo(teamBo);
|
|
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());
|
|
bo.setTeamId(getTeamVo.getData().getId());
|
|
|
- return map;
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取指定正在进行的班级列表
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param doingDate 指定时间
|
|
|
|
|
+ * @return List<RemoteDeptVo> 班级列表
|
|
|
|
|
+ */
|
|
|
public List<RemoteDeptVo> selectDoingClass(Date doingDate) {
|
|
public List<RemoteDeptVo> selectDoingClass(Date doingDate) {
|
|
|
return remoteDeptService.selectDoingClass(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) {
|
|
private void setTraineeCardInfo(YcTraineeVo traineeVo) {
|
|
|
List<PtCardVo> cardVos = cardService.queryList(new PtCardBo().setUserId(Long.valueOf(traineeVo.getUserId())));
|
|
List<PtCardVo> cardVos = cardService.queryList(new PtCardBo().setUserId(Long.valueOf(traineeVo.getUserId())));
|
|
|
List<YcCardVo> ycCardVos = new ArrayList<>();
|
|
List<YcCardVo> ycCardVos = new ArrayList<>();
|
|
@@ -163,7 +234,30 @@ public class TraineeBusiness {
|
|
|
if (ObjectUtil.isNotEmpty(roomCode)) {
|
|
if (ObjectUtil.isNotEmpty(roomCode)) {
|
|
|
bo.setRoomCode(roomCode);
|
|
bo.setRoomCode(roomCode);
|
|
|
RedisUtils.setCacheObject(key, concurrentLinkedQueue);
|
|
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);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|