|
|
@@ -2,31 +2,31 @@ package org.dromara.backstage.basics.service.impl;
|
|
|
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.hutool.core.map.MapUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
+import org.dromara.backstage.basics.domain.PtRoom;
|
|
|
import org.dromara.backstage.basics.domain.PtRoomType;
|
|
|
import org.dromara.backstage.basics.domain.bo.PtRoomBatchSetBo;
|
|
|
+import org.dromara.backstage.basics.domain.bo.PtRoomBo;
|
|
|
import org.dromara.backstage.basics.domain.bo.QueryRoomBo;
|
|
|
import org.dromara.backstage.basics.domain.vo.PtAreaVo;
|
|
|
+import org.dromara.backstage.basics.domain.vo.PtRoomVo;
|
|
|
+import org.dromara.backstage.basics.mapper.PtRoomMapper;
|
|
|
import org.dromara.backstage.basics.mapper.PtRoomTypeMapper;
|
|
|
+import org.dromara.backstage.basics.service.IPtRoomService;
|
|
|
import org.dromara.common.core.constant.CacheNames;
|
|
|
import org.dromara.common.core.enums.FJLXEnum;
|
|
|
import org.dromara.common.core.enums.HotelRoomStatusEnum;
|
|
|
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.LambdaQueryWrapper;
|
|
|
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
-import lombok.RequiredArgsConstructor;
|
|
|
+import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
|
import org.springframework.cache.annotation.CacheEvict;
|
|
|
import org.springframework.cache.annotation.Cacheable;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
-import org.dromara.backstage.basics.domain.bo.PtRoomBo;
|
|
|
-import org.dromara.backstage.basics.domain.vo.PtRoomVo;
|
|
|
-import org.dromara.backstage.basics.domain.PtRoom;
|
|
|
-import org.dromara.backstage.basics.mapper.PtRoomMapper;
|
|
|
-import org.dromara.backstage.basics.service.IPtRoomService;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.*;
|
|
|
@@ -48,8 +48,6 @@ public class PtRoomServiceImpl implements IPtRoomService {
|
|
|
|
|
|
private final PtRoomTypeMapper roomTypeMapper;
|
|
|
|
|
|
-// public static final String ROOM_KF = "10";
|
|
|
-
|
|
|
/**
|
|
|
* 查询房间定义
|
|
|
*
|
|
|
@@ -58,10 +56,10 @@ public class PtRoomServiceImpl implements IPtRoomService {
|
|
|
*/
|
|
|
@Override
|
|
|
@Cacheable(cacheNames = CacheNames.PT_ROOM, key = "#roomId")
|
|
|
- public PtRoomVo queryById(Long roomId){
|
|
|
+ public PtRoomVo queryById(Long roomId) {
|
|
|
PtRoomVo ptRoomVo = baseMapper.selectVoById(roomId);
|
|
|
PtAreaVo ptAreaVo = areaService.queryById(ptRoomVo.getAreaId());
|
|
|
- if(ptAreaVo != null){
|
|
|
+ if (ptAreaVo != null) {
|
|
|
ptRoomVo.setAreaName(ptAreaVo.getAreaName());
|
|
|
}
|
|
|
return ptRoomVo;
|
|
|
@@ -77,12 +75,12 @@ public class PtRoomServiceImpl implements IPtRoomService {
|
|
|
@Override
|
|
|
public TableDataInfo<PtRoomVo> queryPageList(PtRoomBo bo, PageQuery pageQuery) {
|
|
|
LambdaQueryWrapper<PtRoom> lqw = buildQueryWrapper2(bo);
|
|
|
- if(bo.getAreaId()!=null){
|
|
|
+ if (bo.getAreaId() != null) {
|
|
|
List<PtAreaVo> ptAreaVos = areaService.queryListLD(bo.getAreaId());
|
|
|
- if(CollectionUtil.isNotEmpty(ptAreaVos)){
|
|
|
+ if (CollectionUtil.isNotEmpty(ptAreaVos)) {
|
|
|
List<Long> areaIds = ptAreaVos.stream().map(PtAreaVo::getAreaId).toList();
|
|
|
lqw.in(PtRoom::getAreaId, areaIds);
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
//没有楼层 就不用查询了
|
|
|
return TableDataInfo.build(new Page<>());
|
|
|
}
|
|
|
@@ -98,15 +96,15 @@ public class PtRoomServiceImpl implements IPtRoomService {
|
|
|
@Override
|
|
|
public TableDataInfo<PtRoomVo> queryPageListByAreaIds(QueryRoomBo bo, PageQuery pageQuery) {
|
|
|
LambdaQueryWrapper<PtRoom> lqw = new LambdaQueryWrapper<>();
|
|
|
- lqw.eq(StringUtils.isNotBlank(bo.getRoomType()),PtRoom::getRoomType, bo.getRoomType());
|
|
|
- lqw.eq(StringUtils.isNotBlank(bo.getStatus()),PtRoom::getStatus, bo.getStatus());
|
|
|
- lqw.in(CollectionUtil.isNotEmpty(bo.getFloorIds()),PtRoom::getAreaId, bo.getFloorIds())
|
|
|
+ lqw.eq(StringUtils.isNotBlank(bo.getRoomType()), PtRoom::getRoomType, bo.getRoomType());
|
|
|
+ lqw.eq(StringUtils.isNotBlank(bo.getStatus()), PtRoom::getStatus, bo.getStatus());
|
|
|
+ lqw.in(CollectionUtil.isNotEmpty(bo.getFloorIds()), PtRoom::getAreaId, bo.getFloorIds())
|
|
|
.and(StringUtils.isNotBlank(bo.getRoomCode()),
|
|
|
e -> e.eq(PtRoom::getRoomCode, bo.getRoomCode()).or().eq(PtRoom::getRoomName, bo.getRoomCode()));
|
|
|
lqw.orderByDesc(PtRoom::getCreateTime);
|
|
|
Page<PtRoomVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
|
|
List<PtRoomVo> records = result.getRecords();
|
|
|
- if(CollectionUtil.isNotEmpty(records)){
|
|
|
+ if (CollectionUtil.isNotEmpty(records)) {
|
|
|
List<PtRoomType> ptRoomTypes = roomTypeMapper.selectBatchIds(records.stream().map(PtRoomVo::getGuestRoomType).collect(Collectors.toList()));
|
|
|
Map<Long, PtRoomType> ptRoomTypeMap = ptRoomTypes.stream().collect(Collectors.toMap(PtRoomType::getRoomTypeId, e -> e));
|
|
|
records.forEach(x -> {
|
|
|
@@ -125,7 +123,7 @@ public class PtRoomServiceImpl implements IPtRoomService {
|
|
|
List<PtRoomVo> rs = new ArrayList<>();
|
|
|
//先查询楼层,在查询楼层下面的房间
|
|
|
List<PtAreaVo> ptAreaVos = areaService.queryListLD(areaId);
|
|
|
- if(CollectionUtil.isNotEmpty(ptAreaVos)){
|
|
|
+ if (CollectionUtil.isNotEmpty(ptAreaVos)) {
|
|
|
LambdaQueryWrapper<PtRoom> lqw = Wrappers.lambdaQuery();
|
|
|
List<Long> areaIds = ptAreaVos.stream().map(PtAreaVo::getAreaId).toList();
|
|
|
lqw.in(PtRoom::getAreaId, areaIds);
|
|
|
@@ -143,12 +141,12 @@ public class PtRoomServiceImpl implements IPtRoomService {
|
|
|
@Override
|
|
|
public List<PtRoomVo> queryList(PtRoomBo bo) {
|
|
|
LambdaQueryWrapper<PtRoom> lqw = buildQueryWrapper2(bo);
|
|
|
- if(bo.getAreaId()!=null){
|
|
|
+ if (bo.getAreaId() != null) {
|
|
|
List<PtAreaVo> ptAreaVos = areaService.queryListLD(bo.getAreaId());
|
|
|
- if(CollectionUtil.isNotEmpty(ptAreaVos)){
|
|
|
+ if (CollectionUtil.isNotEmpty(ptAreaVos)) {
|
|
|
List<Long> areaIds = ptAreaVos.stream().map(PtAreaVo::getAreaId).toList();
|
|
|
lqw.in(PtRoom::getAreaId, areaIds);
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
lqw.eq(PtRoom::getAreaId, bo.getAreaId());
|
|
|
}
|
|
|
|
|
|
@@ -173,6 +171,7 @@ public class PtRoomServiceImpl implements IPtRoomService {
|
|
|
|
|
|
/**
|
|
|
* 仅用于选择房间
|
|
|
+ *
|
|
|
* @param bo 房间定义
|
|
|
* @return
|
|
|
*/
|
|
|
@@ -180,29 +179,29 @@ public class PtRoomServiceImpl implements IPtRoomService {
|
|
|
public Map<Long, List<PtAreaVo>> queryRoom2AreaList(PtRoomBo bo) {
|
|
|
LambdaQueryWrapper<PtRoom> lqw = buildQueryWrapper(bo);
|
|
|
List<PtRoomVo> ptRoomVos = baseMapper.selectVoList(lqw);
|
|
|
- if(CollectionUtil.isNotEmpty(ptRoomVos)){
|
|
|
- List<PtAreaVo> rs = new ArrayList<>();
|
|
|
- ptRoomVos.forEach(ptRoomVo -> {
|
|
|
- PtAreaVo ptAreaVo = new PtAreaVo();
|
|
|
- ptAreaVo.setParentId(ptRoomVo.getAreaId());
|
|
|
- ptAreaVo.setAreaName(ptRoomVo.getRoomName());
|
|
|
- ptAreaVo.setAreaId(ptRoomVo.getRoomId());
|
|
|
- ptAreaVo.setAreaCode(ptRoomVo.getRoomCode());
|
|
|
- ptAreaVo.setAreaType("room");
|
|
|
- rs.add(ptAreaVo);
|
|
|
- });
|
|
|
- //分组
|
|
|
+ if (CollectionUtil.isNotEmpty(ptRoomVos)) {
|
|
|
+ List<PtAreaVo> rs = new ArrayList<>();
|
|
|
+ ptRoomVos.forEach(ptRoomVo -> {
|
|
|
+ PtAreaVo ptAreaVo = new PtAreaVo();
|
|
|
+ ptAreaVo.setParentId(ptRoomVo.getAreaId());
|
|
|
+ ptAreaVo.setAreaName(ptRoomVo.getRoomName());
|
|
|
+ ptAreaVo.setAreaId(ptRoomVo.getRoomId());
|
|
|
+ ptAreaVo.setAreaCode(ptRoomVo.getRoomCode());
|
|
|
+ ptAreaVo.setAreaType("room");
|
|
|
+ rs.add(ptAreaVo);
|
|
|
+ });
|
|
|
+ //分组
|
|
|
return rs.stream().collect(Collectors.groupingBy(PtAreaVo::getParentId));
|
|
|
}
|
|
|
return MapUtil.empty();
|
|
|
}
|
|
|
|
|
|
private void setAreaName(List<PtRoomVo> ptRoomVos) {
|
|
|
- if(CollectionUtil.isNotEmpty(ptRoomVos)){
|
|
|
+ if (CollectionUtil.isNotEmpty(ptRoomVos)) {
|
|
|
Map<Long, PtAreaVo> areaMap = areaService.queryMapByIds(ptRoomVos.stream().map(PtRoomVo::getAreaId).toList());
|
|
|
ptRoomVos.forEach(ptRoomVo -> {
|
|
|
PtAreaVo ptAreaVo = areaMap.get(ptRoomVo.getAreaId());
|
|
|
- if(ptAreaVo != null){
|
|
|
+ if (ptAreaVo != null) {
|
|
|
ptRoomVo.setAreaName(ptAreaVo.getAreaName());
|
|
|
}
|
|
|
});
|
|
|
@@ -234,7 +233,7 @@ public class PtRoomServiceImpl implements IPtRoomService {
|
|
|
*/
|
|
|
@Override
|
|
|
public Boolean insertByBo(PtRoomBo bo) {
|
|
|
- if(!FJLXEnum.KF.code().equals(bo.getRoomType())){
|
|
|
+ if (!FJLXEnum.KF.code().equals(bo.getRoomType())) {
|
|
|
bo.setGuestRoomType(null);
|
|
|
}
|
|
|
PtRoom add = MapstructUtils.convert(bo, PtRoom.class);
|
|
|
@@ -249,13 +248,13 @@ public class PtRoomServiceImpl implements IPtRoomService {
|
|
|
@Override
|
|
|
public Boolean batchSet(PtRoomBatchSetBo bo) {
|
|
|
LambdaUpdateWrapper<PtRoom> lambdaUpdate = Wrappers.lambdaUpdate();
|
|
|
- lambdaUpdate.set(StringUtils.isNotBlank(bo.getRoomType()),PtRoom::getRoomType, bo.getRoomType())
|
|
|
- .set(StringUtils.isBlank(bo.getRoomType()),PtRoom::getRoomType, null)
|
|
|
- .set(FJLXEnum.KF.code().equals(bo.getRoomType()),PtRoom::getGuestRoomType, bo.getGuestRoomType())
|
|
|
- .set(!FJLXEnum.KF.code().equals(bo.getRoomType()),PtRoom::getGuestRoomType, null)
|
|
|
+ lambdaUpdate.set(StringUtils.isNotBlank(bo.getRoomType()), PtRoom::getRoomType, bo.getRoomType())
|
|
|
+ .set(StringUtils.isBlank(bo.getRoomType()), PtRoom::getRoomType, null)
|
|
|
+ .set(FJLXEnum.KF.code().equals(bo.getRoomType()), PtRoom::getGuestRoomType, bo.getGuestRoomType())
|
|
|
+ .set(!FJLXEnum.KF.code().equals(bo.getRoomType()), PtRoom::getGuestRoomType, null)
|
|
|
.in(PtRoom::getRoomId, bo.getRoomIds());
|
|
|
int update = baseMapper.update(lambdaUpdate);
|
|
|
- return update>0;
|
|
|
+ return update > 0;
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -269,13 +268,13 @@ public class PtRoomServiceImpl implements IPtRoomService {
|
|
|
@Transactional
|
|
|
@CacheEvict(cacheNames = CacheNames.PT_ROOM, key = "#bo.roomId")
|
|
|
public Boolean updateByBo(PtRoomBo bo) {
|
|
|
- if(!FJLXEnum.KF.code().equals(bo.getRoomType())){
|
|
|
+ if (!FJLXEnum.KF.code().equals(bo.getRoomType())) {
|
|
|
bo.setGuestRoomType(null);
|
|
|
}
|
|
|
PtRoom update = MapstructUtils.convert(bo, PtRoom.class);
|
|
|
validEntityBeforeSave(update);
|
|
|
int rs = baseMapper.updateById(update);
|
|
|
- if(bo.getGuestRoomType() == null){
|
|
|
+ if (bo.getGuestRoomType() == null) {
|
|
|
baseMapper.update(null, Wrappers.lambdaUpdate(PtRoom.class).set(PtRoom::getGuestRoomType, null)
|
|
|
.eq(PtRoom::getRoomId, bo.getRoomId()));
|
|
|
}
|
|
|
@@ -284,12 +283,13 @@ public class PtRoomServiceImpl implements IPtRoomService {
|
|
|
|
|
|
/**
|
|
|
* 根据条件查询区域下的房间
|
|
|
- * @param areaId 区域
|
|
|
+ *
|
|
|
+ * @param areaId 区域
|
|
|
* @param roomName
|
|
|
* @param roomCode
|
|
|
* @return
|
|
|
*/
|
|
|
- public List<PtRoomVo> queryByNameOrCode(Long areaId, String roomName, String roomCode){
|
|
|
+ public List<PtRoomVo> queryByNameOrCode(Long areaId, String roomName, String roomCode) {
|
|
|
return baseMapper.selectVoList(Wrappers.<PtRoom>lambdaQuery()
|
|
|
.eq(PtRoom::getAreaId, areaId)
|
|
|
.and(
|
|
|
@@ -299,7 +299,7 @@ public class PtRoomServiceImpl implements IPtRoomService {
|
|
|
|
|
|
@Override
|
|
|
public Long count(Collection<Long> ids) {
|
|
|
- if(CollectionUtil.isNotEmpty(ids)){
|
|
|
+ if (CollectionUtil.isNotEmpty(ids)) {
|
|
|
return baseMapper.selectCount(Wrappers.<PtRoom>lambdaQuery().in(PtRoom::getRoomId, ids));
|
|
|
}
|
|
|
return 0L;
|
|
|
@@ -324,11 +324,11 @@ public class PtRoomServiceImpl implements IPtRoomService {
|
|
|
Map<String, Long> mapList = list.stream().collect(Collectors.groupingBy(PtRoomVo::getStatus, Collectors.counting()));
|
|
|
|
|
|
HotelRoomStatusEnum[] values = HotelRoomStatusEnum.values();
|
|
|
- if (mapList.isEmpty()){
|
|
|
+ if (mapList.isEmpty()) {
|
|
|
for (HotelRoomStatusEnum value : values) {
|
|
|
map.put(value.code(), 0L);
|
|
|
}
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
for (HotelRoomStatusEnum value : values) {
|
|
|
map.put(value.code(), mapList.getOrDefault(value.code(), 0L));
|
|
|
}
|
|
|
@@ -341,19 +341,19 @@ public class PtRoomServiceImpl implements IPtRoomService {
|
|
|
/**
|
|
|
* 保存前的数据校验
|
|
|
*/
|
|
|
- private void validEntityBeforeSave(PtRoom entity){
|
|
|
+ private void validEntityBeforeSave(PtRoom entity) {
|
|
|
//做一些数据校验,如唯一约束
|
|
|
//同一个楼栋 不能有相同的名称和门牌号
|
|
|
- if(StringUtils.isNotBlank(entity.getRoomName())){
|
|
|
+ if (StringUtils.isNotBlank(entity.getRoomName())) {
|
|
|
Long aLong = baseMapper.selectCount(Wrappers.<PtRoom>lambdaQuery()
|
|
|
// .eq(PtRoom::getAreaId, entity.getAreaId())
|
|
|
- .and(
|
|
|
- queryWrapper -> queryWrapper.eq(PtRoom::getRoomName, entity.getRoomName()).or().eq(PtRoom::getRoomCode, entity.getRoomCode())
|
|
|
- )
|
|
|
- .ne(entity.getRoomId() != null, PtRoom::getRoomId, entity.getRoomId())
|
|
|
+ .and(
|
|
|
+ queryWrapper -> queryWrapper.eq(PtRoom::getRoomName, entity.getRoomName()).or().eq(PtRoom::getRoomCode, entity.getRoomCode())
|
|
|
+ )
|
|
|
+ .ne(entity.getRoomId() != null, PtRoom::getRoomId, entity.getRoomId())
|
|
|
);
|
|
|
- if(aLong != null && aLong>0){
|
|
|
- throw new RuntimeException("房间名称或者房间编号重复");
|
|
|
+ if (aLong != null && aLong > 0) {
|
|
|
+ throw new RuntimeException("房间名称或者房间编号重复");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -368,11 +368,12 @@ public class PtRoomServiceImpl implements IPtRoomService {
|
|
|
@Override
|
|
|
@CacheEvict(cacheNames = CacheNames.PT_ROOM)
|
|
|
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
|
|
- if(isValid){
|
|
|
+ if (isValid) {
|
|
|
//做一些业务上的校验,判断是否需要校验
|
|
|
}
|
|
|
return baseMapper.deleteByIds(ids) > 0;
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* 更新客房的状态
|
|
|
*
|
|
|
@@ -384,14 +385,16 @@ public class PtRoomServiceImpl implements IPtRoomService {
|
|
|
@Override
|
|
|
public Boolean updateGuestRoomStatus(String roomCode, String tenantId, String roomStatus) {
|
|
|
LambdaUpdateWrapper<PtRoom> luw = new LambdaUpdateWrapper<>();
|
|
|
- luw.set(PtRoom::getStatus,roomStatus);
|
|
|
+ luw.set(PtRoom::getStatus, roomStatus);
|
|
|
luw.eq(PtRoom::getRoomCode, roomCode);
|
|
|
luw.eq(PtRoom::getTenantId, tenantId);
|
|
|
|
|
|
- return baseMapper.update(null,luw)>0;
|
|
|
+ return baseMapper.update(null, luw) > 0;
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* 查询酒店下的所有客房
|
|
|
+ *
|
|
|
* @param hotelId 客房区域id
|
|
|
* @return 客房集合
|
|
|
*/
|
|
|
@@ -400,11 +403,22 @@ public class PtRoomServiceImpl implements IPtRoomService {
|
|
|
List<PtRoomVo> rs = new ArrayList<>();
|
|
|
//先查询楼层,在查询楼层下面的房间
|
|
|
List<PtAreaVo> ptAreaVos = areaService.queryListLD(hotelId);
|
|
|
- if(CollectionUtil.isNotEmpty(ptAreaVos)){
|
|
|
+ if (CollectionUtil.isNotEmpty(ptAreaVos)) {
|
|
|
LambdaQueryWrapper<PtRoom> lqw = Wrappers.lambdaQuery();
|
|
|
- List<Long> areaIds = ptAreaVos.stream().map(PtAreaVo::getAreaId).toList();;
|
|
|
+ List<Long> areaIds = ptAreaVos.stream().map(PtAreaVo::getAreaId).toList();
|
|
|
rs = baseMapper.selectHotelRoomList(areaIds);
|
|
|
}
|
|
|
return rs;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询所有的客房数据
|
|
|
+ *
|
|
|
+ * @return 客房集合
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<PtRoomVo> queryHotelRoomList() {
|
|
|
+ return baseMapper.selectHotelRoomList();
|
|
|
+ }
|
|
|
+
|
|
|
}
|