Browse Source

1、7591校验会议时间重叠

dongpo 6 months ago
parent
commit
6e77f9b9f2

+ 23 - 15
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/meeting/reserve/OaMeetingReserveServiceImpl.java

@@ -12,8 +12,8 @@ import cn.iocoder.yudao.module.bpm.controller.admin.meeting.reserve.vo.OaMeeting
 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 cn.iocoder.yudao.module.employee.api.EmployeeApi;
+import cn.iocoder.yudao.module.employee.api.dto.EmployeeRespDTO;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import org.springframework.stereotype.Service;
@@ -47,12 +47,13 @@ public class OaMeetingReserveServiceImpl implements OaMeetingReserveService {
     private OaMeetingReserveMapper oaMeetingReserveMapper;
 
     @Resource
-    private AdminUserApi adminUserApi;
+    private EmployeeApi employeeApi;
 
     @Override
     public Long createOaMeetingReserve(OaMeetingReserveSaveReqVO createReqVO) {
         Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
-        AdminUserRespDTO user = adminUserApi.getUser(loginUserId);
+        // AdminUserRespDTO user = adminUserApi.getUser(loginUserId);
+        EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
 
         // 校验时间
         String startTime = createReqVO.getStartTime();
@@ -69,21 +70,24 @@ public class OaMeetingReserveServiceImpl implements OaMeetingReserveService {
         // 校验时间是否已占用
         LambdaQueryWrapper<OaMeetingReserveDO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
         lambdaQueryWrapper.eq(OaMeetingReserveDO::getRoomId, createReqVO.getRoomId())
-                .ne(OaMeetingReserveDO::getStatus, MeetingReserveStatusEnum.ENDED.getStatus())
+                // .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));
+                        .or().between(OaMeetingReserveDO::getEndTime, startTime, endTime)
+                        .or(wrapper2 -> wrapper2.lt(OaMeetingReserveDO::getStartTime, startTime)
+                                .gt(OaMeetingReserveDO::getEndTime, endTime))
+                        );
         if (oaMeetingReserveMapper.selectCount(lambdaQueryWrapper) > 0) {
             throw exception(OA_MEETING_RESERVE_TIME_OCCUPIED);
         }
         // 插入
         OaMeetingReserveDO oaMeetingReserve = BeanUtils.toBean(createReqVO, OaMeetingReserveDO.class);
         oaMeetingReserve.setReserveUuid(IdUtil.fastSimpleUUID());
-        oaMeetingReserve.setApplyEmployeeId(user.getId());
-        oaMeetingReserve.setDeptId(user.getDeptId());
-        oaMeetingReserve.setApplyEmployeePhone(user.getMobile());
+        oaMeetingReserve.setApplyEmployeeId(loginEmployee.getId());
+        oaMeetingReserve.setDeptId(loginEmployee.getDeptId());
+        oaMeetingReserve.setApplyEmployeePhone(loginEmployee.getPhone());
         List<Long> participantsIdList = createReqVO.getParticipants();
         if (CollUtil.isNotEmpty(participantsIdList)) {
             String participants = participantsIdList.stream().map(String::valueOf).collect(Collectors.joining(","));
@@ -102,7 +106,8 @@ public class OaMeetingReserveServiceImpl implements OaMeetingReserveService {
     @Override
     public void updateOaMeetingReserve(OaMeetingReserveSaveReqVO updateReqVO) {
         Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
-        AdminUserRespDTO user = adminUserApi.getUser(loginUserId);
+        // AdminUserRespDTO user = adminUserApi.getUser(loginUserId);
+        EmployeeRespDTO loginEmployee = employeeApi.getEmployeeByUserId(loginUserId);
 
         // 校验存在
         OaMeetingReserveDO oaMeetingReserveDOOld = validateOaMeetingReserveExists(updateReqVO.getId());
@@ -131,22 +136,25 @@ public class OaMeetingReserveServiceImpl implements OaMeetingReserveService {
         // 校验时间是否已占用
         LambdaQueryWrapper<OaMeetingReserveDO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
         lambdaQueryWrapper.eq(OaMeetingReserveDO::getRoomId, updateReqVO.getRoomId())
-                .ne(OaMeetingReserveDO::getStatus, MeetingReserveStatusEnum.ENDED.getStatus())
+                // .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));
+                        .or().between(OaMeetingReserveDO::getEndTime, startTime, endTime)
+                        .or(wrapper2 -> wrapper2.lt(OaMeetingReserveDO::getStartTime, startTime)
+                                .gt(OaMeetingReserveDO::getEndTime, endTime))
+                );
         if (oaMeetingReserveMapper.selectCount(lambdaQueryWrapper) > 0) {
             throw exception(OA_MEETING_RESERVE_TIME_OCCUPIED);
         }
 
         // 更新
         OaMeetingReserveDO updateObj = BeanUtils.toBean(updateReqVO, OaMeetingReserveDO.class);
-        updateObj.setApplyEmployeeId(user.getId());
-        updateObj.setDeptId(user.getDeptId());
-        updateObj.setApplyEmployeePhone(user.getMobile());
+        updateObj.setApplyEmployeeId(loginEmployee.getId());
+        updateObj.setDeptId(loginEmployee.getDeptId());
+        updateObj.setApplyEmployeePhone(loginEmployee.getPhone());
 
         List<Long> participantsIdList = updateReqVO.getParticipants();
         if (CollUtil.isNotEmpty(participantsIdList)) {