gongchunyi
9 天以前 e941512cb0145a11421ef4cf44bfe2c52cf84aa6
fix: 新增和更新时校验会议室时间占用冲突
已修改3个文件
69 ■■■■ 文件已修改
src/main/java/com/ruoyi/collaborativeApproval/controller/MeetingController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/collaborativeApproval/service/MeetingService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/collaborativeApproval/service/impl/MeetingServiceImpl.java 63 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/collaborativeApproval/controller/MeetingController.java
@@ -83,8 +83,7 @@
    @PostMapping("/saveMeetingApplication")
    public R saveMeetApplication(@RequestBody MeetApplication meetApplication) {
        meetingService.saveMeetApplication(meetApplication);
        return R.ok();
       return meetingService.saveMeetApplication(meetApplication);
    }
    @PostMapping("/applicationList")
src/main/java/com/ruoyi/collaborativeApproval/service/MeetingService.java
@@ -14,6 +14,7 @@
import com.ruoyi.collaborativeApproval.vo.SearchMeetingDraftVo;
import com.ruoyi.collaborativeApproval.vo.SearchMeetingRoomVo;
import com.ruoyi.collaborativeApproval.vo.SearchMeetingUseVo;
import com.ruoyi.framework.web.domain.R;
import java.util.List;
@@ -42,7 +43,7 @@
// ************申请会议************
    void saveMeetApplication(MeetApplication meetApplication);
    R<Void> saveMeetApplication(MeetApplication meetApplication);
// ************申请审批************
src/main/java/com/ruoyi/collaborativeApproval/service/impl/MeetingServiceImpl.java
@@ -26,6 +26,7 @@
import com.ruoyi.collaborativeApproval.vo.SearchMeetingRoomVo;
import com.ruoyi.collaborativeApproval.vo.SearchMeetingUseVo;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.framework.web.domain.R;
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.mapper.SysUserMapper;
import com.ruoyi.project.system.service.ISysNoticeService;
@@ -125,42 +126,72 @@
    }
    @Override
    public void saveMeetApplication(MeetApplication meetApplication) {
    public R<Void> saveMeetApplication(MeetApplication meetApplication) {
        meetApplication.setApplicant(SecurityUtils.getUsername());
        //  时间冲突校验
        LambdaQueryWrapper<MeetApplication> meetApplicationLambdaQueryWrapper = Wrappers.<MeetApplication>lambdaQuery()
                .eq(MeetApplication::getRoomId, meetApplication.getRoomId())
                // 如果id不为null则排除自己
                .ne(meetApplication.getId() != null, MeetApplication::getId, meetApplication.getId())
                // 时间冲突判断
                .lt(MeetApplication::getStartTime, meetApplication.getEndTime())
                .gt(MeetApplication::getEndTime, meetApplication.getStartTime());
        Long count = meetApplicationMapper.selectCount(meetApplicationLambdaQueryWrapper);
        if (count > 0) {
            return R.fail("所选会议室在该时间段已有其他会议,请调整时间或更换会议室");
        }
        if (meetApplication.getId() != null) {
            // 更新
            meetApplicationMapper.updateById(meetApplication);
        } else {
            // 新增
            meetApplicationMapper.insert(meetApplication);
        }
        if (ObjectUtils.isNotNull(meetApplication.getPublishStatus()) && meetApplication.getPublishStatus() == 1){
        /*会议发布的消息通知*/
        //参会人员id(人员台账和用户表通过人员编号和用户名称(登录账号)做匹配)
        if (Integer.valueOf(1).equals(meetApplication.getPublishStatus())) {
            MeetApplication application = meetApplicationMapper.selectById(meetApplication.getId());
            /*会议发布的消息通知*/
            //参会人员id(人员台账和用户表通过人员编号和用户名称(登录账号)做匹配)
            String cleanStr = application.getParticipants().trim()
            String cleanStr = application.getParticipants()
                    .replaceAll("^\\[|\\]$", "")
                    .trim();
            List<Long> ids = Arrays.stream(cleanStr.split(","))
            List<Long> userIds = Arrays.stream(cleanStr.split(","))
                    .map(String::trim)
                    .filter(s -> !s.isEmpty())
                    .map(s -> {
                        StaffJoinLeaveRecord staffJoinLeaveRecord = staffJoinLeaveRecordMapper.selectById(Long.valueOf(s));
                        List<SysUser> users = userMapper.selectList(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getUserName,staffJoinLeaveRecord.getStaffNo()));
                        if (users.size() > 0){
                            return users.get(0).getUserId();
                        }else return null;
                    .map(Long::valueOf)
                    .map(staffId -> {
                        StaffJoinLeaveRecord record = staffJoinLeaveRecordMapper.selectById(staffId);
                        if (record == null) {
                            return null;
                        }
                        return userMapper.selectOne(
                                Wrappers.<SysUser>lambdaQuery()
                                        .eq(SysUser::getUserName, record.getStaffNo())
                        );
                    })
                    .filter(Objects::nonNull)
                    .map(SysUser::getUserId)
                    .collect(Collectors.toList());
            if (ids.size() > 0) {
                sysNoticeService.simpleNoticeByUser("会议通知",
            if (!userIds.isEmpty()) {
                sysNoticeService.simpleNoticeByUser(
                        "会议通知",
                        "会议主题:" + application.getTitle() + "\n" +
                                "会议时间:" + application.getStartTime() + "-" + application.getEndTime() + "\n" +
                                "发起人:" + application.getApplicant(),
                        ids,
                        userIds,
                        application.getTenantId(),
                        "");
                        ""
                );
            }
        }
        return R.ok();
    }
    @Override