|
|
@@ -2,23 +2,21 @@ package cn.iocoder.yudao.module.bpm.service.meeting.reserve;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.util.IdUtil;
|
|
|
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
|
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
|
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
|
|
import cn.iocoder.yudao.module.bpm.controller.admin.meeting.reserve.vo.OaMeetingReservePageReqVO;
|
|
|
import cn.iocoder.yudao.module.bpm.controller.admin.meeting.reserve.vo.OaMeetingReserveSaveReqVO;
|
|
|
+import cn.iocoder.yudao.module.bpm.dal.dataobject.meeting.reserve.OaMeetingReserveDO;
|
|
|
+import cn.iocoder.yudao.module.bpm.dal.mysql.meeting.reserve.OaMeetingReserveMapper;
|
|
|
import cn.iocoder.yudao.module.bpm.enums.MeetingReserveStatusEnum;
|
|
|
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
|
|
|
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
-import javax.annotation.Resource;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
|
-import cn.iocoder.yudao.module.bpm.dal.dataobject.meeting.reserve.OaMeetingReserveDO;
|
|
|
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
|
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
|
-
|
|
|
-import cn.iocoder.yudao.module.bpm.dal.mysql.meeting.reserve.OaMeetingReserveMapper;
|
|
|
-
|
|
|
-import java.time.LocalDate;
|
|
|
+import javax.annotation.Resource;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.time.temporal.ChronoUnit;
|
|
|
@@ -60,6 +58,18 @@ public class OaMeetingReserveServiceImpl implements OaMeetingReserveService {
|
|
|
if (startTime.compareTo(nowTime) < 0) {
|
|
|
throw exception(OA_MEETING_RESERVE_START_TIME_MORE_THAN_NOW);
|
|
|
}
|
|
|
+ // 校验时间是否已占用
|
|
|
+ LambdaQueryWrapper<OaMeetingReserveDO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ lambdaQueryWrapper.eq(OaMeetingReserveDO::getRoomId, createReqVO.getRoomId())
|
|
|
+ .ne(OaMeetingReserveDO::getStatus, MeetingReserveStatusEnum.ENDED.getStatus())
|
|
|
+ .ne(OaMeetingReserveDO::getStatus, MeetingReserveStatusEnum.CANCELED.getStatus())
|
|
|
+ .and(wrapper -> wrapper.eq(OaMeetingReserveDO::getStartTime, startTime)
|
|
|
+ .or().eq(OaMeetingReserveDO::getEndTime, endTime)
|
|
|
+ .or().between(OaMeetingReserveDO::getStartTime, startTime, endTime)
|
|
|
+ .or().between(OaMeetingReserveDO::getEndTime, startTime, endTime));
|
|
|
+ if (oaMeetingReserveMapper.selectCount(lambdaQueryWrapper) > 0) {
|
|
|
+ throw exception(OA_MEETING_RESERVE_TIME_OCCUPIED);
|
|
|
+ }
|
|
|
// 插入
|
|
|
OaMeetingReserveDO oaMeetingReserve = BeanUtils.toBean(createReqVO, OaMeetingReserveDO.class);
|
|
|
oaMeetingReserve.setReserveUuid(IdUtil.fastSimpleUUID());
|
|
|
@@ -110,6 +120,20 @@ public class OaMeetingReserveServiceImpl implements OaMeetingReserveService {
|
|
|
throw exception(OA_MEETING_RESERVE_START_TIME_MORE_THAN_FIVE_MINUTES);
|
|
|
}
|
|
|
|
|
|
+ // 校验时间是否已占用
|
|
|
+ LambdaQueryWrapper<OaMeetingReserveDO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ lambdaQueryWrapper.eq(OaMeetingReserveDO::getRoomId, updateReqVO.getRoomId())
|
|
|
+ .ne(OaMeetingReserveDO::getStatus, MeetingReserveStatusEnum.ENDED.getStatus())
|
|
|
+ .ne(OaMeetingReserveDO::getStatus, MeetingReserveStatusEnum.CANCELED.getStatus())
|
|
|
+ .ne(OaMeetingReserveDO::getId, updateReqVO.getId())
|
|
|
+ .and(wrapper -> wrapper.eq(OaMeetingReserveDO::getStartTime, startTime)
|
|
|
+ .or().eq(OaMeetingReserveDO::getEndTime, endTime)
|
|
|
+ .or().between(OaMeetingReserveDO::getStartTime, startTime, endTime)
|
|
|
+ .or().between(OaMeetingReserveDO::getEndTime, startTime, endTime));
|
|
|
+ if (oaMeetingReserveMapper.selectCount(lambdaQueryWrapper) > 0) {
|
|
|
+ throw exception(OA_MEETING_RESERVE_TIME_OCCUPIED);
|
|
|
+ }
|
|
|
+
|
|
|
// 更新
|
|
|
OaMeetingReserveDO updateObj = BeanUtils.toBean(updateReqVO, OaMeetingReserveDO.class);
|
|
|
updateObj.setApplyEmployeeId(user.getId());
|
|
|
@@ -154,4 +178,24 @@ public class OaMeetingReserveServiceImpl implements OaMeetingReserveService {
|
|
|
return oaMeetingReserveMapper.selectPage(pageReqVO);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void cancelOaMeetingReserve(Long id) {
|
|
|
+ OaMeetingReserveDO oaMeetingReserveDO = validateOaMeetingReserveExists(id);
|
|
|
+ String status = oaMeetingReserveDO.getStatus();
|
|
|
+ if (!MeetingReserveStatusEnum.WAITING.getStatus().equals(status)) {
|
|
|
+ throw exception(OA_MEETING_RESERVE_STATUS_NOT_WAITING_CAN_NOT_CANCEL);
|
|
|
+ }
|
|
|
+ oaMeetingReserveMapper.updateById(OaMeetingReserveDO.builder().id(id).status(MeetingReserveStatusEnum.CANCELED.getStatus()).build());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void endOaMeetingReserve(Long id) {
|
|
|
+ OaMeetingReserveDO oaMeetingReserveDO = validateOaMeetingReserveExists(id);
|
|
|
+ String status = oaMeetingReserveDO.getStatus();
|
|
|
+ if (!MeetingReserveStatusEnum.IN_PROGRESS.getStatus().equals(status)) {
|
|
|
+ throw exception(OA_MEETING_RESERVE_STATUS_NOT_IN_PROGRESS_CAN_NOT_ENDED);
|
|
|
+ }
|
|
|
+ oaMeetingReserveMapper.updateById(OaMeetingReserveDO.builder().id(id).status(MeetingReserveStatusEnum.ENDED.getStatus()).build());
|
|
|
+ }
|
|
|
+
|
|
|
}
|