jiangping
2024-05-10 dab5db84055a7f6a8fea3b61099d85d34ea7a706
server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java
@@ -1,6 +1,5 @@
package com.doumee.service.business.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -15,23 +14,26 @@
import com.doumee.core.utils.DESUtil;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.core.wx.MeetConstants;
import com.doumee.core.wx.SendWxMessage;
import com.doumee.dao.admin.request.QrOpenDoorDto;
import com.doumee.dao.admin.response.DevWgResponseParam;
import com.doumee.dao.business.*;
import com.doumee.dao.business.join.*;
import com.doumee.dao.business.model.*;
import com.doumee.dao.business.vo.RoomStatisticsVo;
import com.doumee.dao.system.MultifileMapper;
import com.doumee.dao.system.SystemUserMapper;
import com.doumee.dao.system.dto.UserStatisticsDTO;
import com.doumee.dao.system.model.SystemDepartment;
import com.doumee.dao.system.model.SystemDepartmentUser;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.dao.system.vo.RoomStatisticsVo;
import com.doumee.dao.system.join.NoticesJoinMapper;
import com.doumee.dao.system.model.*;
import com.doumee.dao.system.vo.UserStatisticsVo;
import com.doumee.dao.web.request.BookingsRequest;
import com.doumee.dao.web.request.MeetingPageRequest;
import com.doumee.dao.web.response.*;
import com.doumee.service.business.*;
import com.doumee.service.business.BookingsService;
import com.doumee.service.business.DevicesService;
import com.doumee.service.business.ProjectsService;
import com.doumee.service.system.SystemUserService;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
@@ -44,20 +46,11 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.awt.print.Book;
import java.text.SimpleDateFormat;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;
import java.util.*;
import java.util.stream.Collectors;
@@ -110,7 +103,7 @@
    private MultifileMapper multifileMapper;
    @Autowired
    private NoticeService noticeService;
    private NoticesJoinMapper noticesMapper;
    @Autowired
    private UserRelMapper userRelMapper;
@@ -132,8 +125,8 @@
        isCreateParamValid(bookings, user);
        bookings.setCreateDate(new Date());
        bookings.setCreator(user.getId());
        bookings.setIsdeleted(Constants.ZERO);
        bookings.setStatus(Constants.ZERO);
        bookings.setIsdeleted(MeetConstants.ZERO);
        bookings.setStatus(MeetConstants.ZERO);
        bookingsMapper.insert(bookings);
        //更新会议室预定时间段
        updateBookingTimes(bookings, user);
@@ -143,7 +136,7 @@
        updateProjectRel(bookings, user);
        handleFile(bookings, user);
        //发送会议预约成功通知
        this.sendNotice(bookings, Constants.TWO);
        this.sendNotice(bookings, MeetConstants.TWO);
        //发送微信订阅通知
        sendWxMessage.bookingsReservation(systemUserMapper.selectById(bookings.getCreator()), bookings, roomsMapper.selectById(bookings.getRoomId()));
@@ -152,17 +145,17 @@
    public void handleFile(Bookings bookings, LoginUserInfo user) {
        QueryWrapper<Multifile> bookquery = new QueryWrapper<>();
        bookquery.lambda().eq(Multifile::getIsdeleted, Constants.ZERO);
        bookquery.lambda().eq(Multifile::getIsdeleted, MeetConstants.ZERO);
        bookquery.lambda().eq(Multifile::getObjId, bookings.getId());
        multifileJoinMapper.delete(bookquery);
        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(bookings.getFileList())) {
            bookings.getFileList().stream().forEach(s -> {
                s.setIsdeleted(Constants.ZERO);
                s.setIsdeleted(MeetConstants.ZERO);
                s.setCreateDate(new Date());
                s.setCreator(user.getId());
                s.setObjId(bookings.getId());
                s.setType(Constants.TWO);
                s.setObjType(Constants.ZERO);
                s.setType(MeetConstants.TWO);
                s.setObjType(MeetConstants.ZERO);
                multifileJoinMapper.insert(s);
            });
        }
@@ -191,9 +184,9 @@
        bookquery.selectAll(Bookings.class);
        bookquery.selectAs(BookingTime::getTimeId, Bookings::getRoomTimeId);
        bookquery.selectAs(BookingTime::getId, Bookings::getBookingTimeId);
        bookquery.eq(Bookings::getIsdeleted, Constants.ZERO);
        bookquery.eq(Bookings::getIsdeleted, MeetConstants.ZERO);
        bookquery.eq(Bookings::getRoomId, bookings.getRoomId());
        bookquery.eq(Bookings::getStatus, Constants.ZERO);
        bookquery.eq(Bookings::getStatus, MeetConstants.ZERO);
        //bookquery.ge(Bookings::getStartTime, bookings.getStartTime());
        bookquery.apply(" t.START_TIME like  '" + DateUtil.dateToString(bookings.getStartTime(), "yyyy-MM-dd") + "%'  ");
@@ -203,10 +196,10 @@
        List<Bookings> bookList = bookingsJoinMapper.selectJoinList(Bookings.class, bookquery);
        for (int i = 0; i < bookings.getBookingTimeList().size(); i++) {
            BookingTime s = bookings.getBookingTimeList().get(i);
            if (!Objects.isNull(bookList) && bookList.size() > Constants.ZERO) {
            if (!Objects.isNull(bookList) && bookList.size() > MeetConstants.ZERO) {
                List<Bookings> detailDataDtoStream =
                        bookList.stream().filter(a -> Constants.equalsInteger(s.getTimeId(), a.getRoomTimeId())
                        bookList.stream().filter(a -> MeetConstants.equalsInteger(s.getTimeId(), a.getRoomTimeId())
                        ).collect(Collectors.toList());
                if (detailDataDtoStream.size() > 0) {
@@ -214,8 +207,8 @@
                        //编辑
                        List<Bookings> chriList =
                                detailDataDtoStream.stream()
                                        .filter(a -> !Constants.equalsInteger(a.getId(), bookings.getId()))
                                        .filter(a -> Constants.equalsInteger(a.getRoomTimeId(), s.getTimeId()))
                                        .filter(a -> !MeetConstants.equalsInteger(a.getId(), bookings.getId()))
                                        .filter(a -> MeetConstants.equalsInteger(a.getRoomTimeId(), s.getTimeId()))
                                        .collect(Collectors.toList());
                        if (chriList.size() > 0) {
                            RoomTime roomTime = roomTimeJoinMapper.selectById(s.getTimeId());
@@ -225,7 +218,7 @@
                        //插入
                        List<Bookings> chriList =
                                detailDataDtoStream.stream()
                                        .filter(a -> Constants.equalsInteger(a.getRoomTimeId(), s.getTimeId()))
                                        .filter(a -> MeetConstants.equalsInteger(a.getRoomTimeId(), s.getTimeId()))
                                        .collect(Collectors.toList());
                        if (chriList.size() > 0) {
                            RoomTime roomTime = roomTimeJoinMapper.selectById(s.getTimeId());
@@ -242,17 +235,17 @@
    public void updateBookingTimes(Bookings bookings, LoginUserInfo user) {
        QueryWrapper<BookingTime> updateWrapper = new QueryWrapper<BookingTime>();
        updateWrapper.eq("ISDELETED", Constants.ZERO);
        updateWrapper.eq("ISDELETED", MeetConstants.ZERO);
        updateWrapper.eq("BOOKING_ID", bookings.getId());
        BookingTime bookingTime = new BookingTime();
        bookingTime.setIsdeleted(Constants.ONE);
        bookingTime.setIsdeleted(MeetConstants.ONE);
        bookingTimeJoinMapper.update(bookingTime, updateWrapper);
        bookings.getBookingTimeList().stream().forEach(s -> {
            s.setCreator(user.getId());
            s.setCreateDate(new Date());
            s.setIsdeleted(Constants.ZERO);
            s.setIsdeleted(MeetConstants.ZERO);
            s.setBookingId(bookings.getId());
            bookingTimeJoinMapper.insert(s);
        });
@@ -263,20 +256,20 @@
    public void updateManager(Bookings bookings, LoginUserInfo user) {
        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(bookings.getSysList())) {
            QueryWrapper<UserRel> updateWrapper = new QueryWrapper<>();
            updateWrapper.lambda().eq(UserRel::getIsdeleted, Constants.ZERO);
            updateWrapper.lambda().eq(UserRel::getIsdeleted, MeetConstants.ZERO);
            updateWrapper.lambda().eq(UserRel::getObjId, bookings.getId());
            updateWrapper.lambda().eq(UserRel::getObjType, Constants.ONE);
            updateWrapper.lambda().eq(UserRel::getObjType, MeetConstants.ONE);
            UserRel userRel = new UserRel();
            userRel.setIsdeleted(Constants.ONE);
            userRel.setIsdeleted(MeetConstants.ONE);
            userRelJoinMapper.update(userRel, updateWrapper);
        }
        bookings.getSysList().stream().forEach(s -> {
            s.setIsdeleted(Constants.ZERO);
            s.setIsdeleted(MeetConstants.ZERO);
            s.setCreateDate(new Date());
            s.setCreator(user.getId());
            s.setUserId(s.getUserId());
            s.setObjId(bookings.getId());
            s.setObjType(Constants.ONE);
            s.setObjType(MeetConstants.ONE);
            userRelJoinMapper.insert(s);
        });
@@ -285,21 +278,21 @@
    public void updateProjectRel(Bookings rooms, LoginUserInfo user) {
        if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(rooms.getProjectList())) {
            QueryWrapper<ProjectRel> updateWrapper = new QueryWrapper<>();
            updateWrapper.lambda().eq(ProjectRel::getIsdeleted, Constants.ZERO);
            updateWrapper.lambda().eq(ProjectRel::getIsdeleted, MeetConstants.ZERO);
            updateWrapper.lambda().eq(ProjectRel::getObjId, rooms.getId());
            updateWrapper.lambda().eq(ProjectRel::getObjType, Constants.ONE);
            updateWrapper.lambda().eq(ProjectRel::getObjType, MeetConstants.ONE);
            ProjectRel projectRel = new ProjectRel();
            projectRel.setIsdeleted(Constants.ONE);
            projectRel.setIsdeleted(MeetConstants.ONE);
            projectRelJoinMapper.update(projectRel, updateWrapper);
            rooms.getProjectList().stream().forEach(s -> {
                s.setIsdeleted(Constants.ZERO);
                s.setIsdeleted(MeetConstants.ZERO);
                s.setCreateDate(new Date());
                s.setCreator(user.getId());
                s.setProjectId(s.getProjectId());
                s.setObjId(rooms.getId());
                s.setObjType(Constants.ONE);
                s.setObjType(MeetConstants.ONE);
                projectRelJoinMapper.insert(s);
            });
        }
@@ -310,7 +303,7 @@
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        Bookings bookings = new Bookings();
        bookings.setId(id);
        bookings.setIsdeleted(Constants.ONE);
        bookings.setIsdeleted(MeetConstants.ONE);
        bookings.setEditDate(new Date());
        bookings.setEditor(user.getId());
        bookingsMapper.updateById(bookings);
@@ -341,7 +334,7 @@
               throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "会议已开始,无法删除");
           }
            bookings.setId(s);
            bookings.setIsdeleted(Constants.ONE);
            bookings.setIsdeleted(MeetConstants.ONE);
            bookings.setEditDate(new Date());
            bookings.setEditor(user.getId());
            bookingsMapper.updateById(bookings);
@@ -353,7 +346,7 @@
    @Transactional(rollbackFor = {BusinessException.class, Exception.class})
    public void updateById(Bookings bookings) {
        Bookings dbBookings = bookingsMapper.selectById(bookings.getId());
        if(dbBookings.getStatus().equals(Constants.ONE)){
        if(dbBookings.getStatus().equals(MeetConstants.ONE)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "本次操作失败,预约状态已流转");
        }
        LoginUserInfo user = new LoginUserInfo();
@@ -370,7 +363,7 @@
        updateProjectRel(bookings, user);
        handleFile(bookings, user);
        //发送会议通知
        this.sendNotice(bookings, Constants.TWO);
        this.sendNotice(bookings, MeetConstants.TWO);
    }
    @Override
@@ -400,7 +393,7 @@
        if(Objects.isNull(query)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), ResponseStatus.DATA_EMPTY.getMessage());
        }
        if(Constants.equalsInteger(query.getStatus(),Constants.ONE)){
        if(MeetConstants.equalsInteger(query.getStatus(),MeetConstants.ONE)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "状态已流转,禁止操作");
        }
        if (System.currentTimeMillis() > query.getStartTime().getTime()) {
@@ -408,7 +401,7 @@
        }
        bookings.setCancelTime(new Date());
        bookings.setCancelUser(user.getId());
        bookings.setStatus(Constants.ONE);
        bookings.setStatus(MeetConstants.ONE);
        bookings.setEditDate(new Date());
        bookings.setEditor(user.getId());
@@ -422,12 +415,12 @@
        if (System.currentTimeMillis() > bookings.getStartTime().getTime()) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "会议已开始,无法进行取消");
        }
        if(bookings.getStatus().equals(Constants.ONE)){
        if(bookings.getStatus().equals(MeetConstants.ONE)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "本次操作失败,预约状态已流转");
        }
        bookings.setCancelTime(new Date());
        bookings.setCancelUser(user.getId());
        bookings.setStatus(Constants.ONE);
        bookings.setStatus(MeetConstants.ONE);
        bookings.setEditDate(new Date());
        bookings.setEditor(user.getId());
        bookingsMapper.updateById(bookings);
@@ -468,7 +461,7 @@
        queryWrapper.leftJoin(SystemDepartment.class, SystemDepartment::getId, SystemDepartmentUser::getDepartmentId);
        queryWrapper.orderByDesc(Bookings::getCreateDate);
        queryWrapper.eq(Bookings::getIsdeleted, Constants.ZERO);
        queryWrapper.eq(Bookings::getIsdeleted, MeetConstants.ZERO);
        queryWrapper.eq(pageWrap.getModel().getRoomId() != null, Bookings::getRoomId, pageWrap.getModel().getRoomId());
        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getName()), Bookings::getName, pageWrap.getModel().getName());
@@ -485,14 +478,14 @@
        }
        queryWrapper.orderByDesc(Bookings::getCreateDate);
        String path = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.FILE_DIR).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.PROJECTS).getCode();
        String path = systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.FTP_RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode();
        SimpleDateFormat format = new SimpleDateFormat("MM-dd HH:mm");
        SimpleDateFormat format1 = new SimpleDateFormat("HH:mm");
        IPage<Bookings> result = bookingsJoinMapper.selectJoinPage(page, Bookings.class, queryWrapper);
        result.getRecords().stream().forEach(s -> {
            MPJLambdaWrapper<Multifile> bookquery = new MPJLambdaWrapper<>();
            bookquery.eq(Multifile::getIsdeleted, Constants.ZERO);
            bookquery.eq(Multifile::getIsdeleted, MeetConstants.ZERO);
            bookquery.eq(Multifile::getObjId, s.getId());
            List<Multifile> filelist = multifileJoinMapper.selectList(bookquery);
            filelist.stream().forEach(a -> {
@@ -509,7 +502,7 @@
            //参会人员列表
            MPJLambdaWrapper<UserRel> urquery = new MPJLambdaWrapper<>();
            urquery.selectAll(UserRel.class);
            urquery.eq(UserRel::getIsdeleted, Constants.ZERO);
            urquery.eq(UserRel::getIsdeleted, MeetConstants.ZERO);
            urquery.eq(UserRel::getObjId, s.getId());
            urquery.select("(select REALNAME from system_user s where t.USER_ID = s.id and s.DELETED = 0  ) as realName");
            List<UserRel> userrelList = userRelJoinMapper.selectJoinList(UserRel.class, urquery);
@@ -518,15 +511,15 @@
            //服务项
            MPJLambdaWrapper<ProjectRel> prquery = new MPJLambdaWrapper<>();
            prquery.selectAll(ProjectRel.class);
            prquery.eq(ProjectRel::getIsdeleted, Constants.ZERO);
            prquery.eq(ProjectRel::getIsdeleted, MeetConstants.ZERO);
            prquery.eq(ProjectRel::getObjId, s.getId());
            prquery.select("(select p.name from projects p where t.PROJECT_ID = p.id and p.ISDELETED = 0  ) as projectName");
            List<ProjectRel> prList = projectRelJoinMapper.selectJoinList(ProjectRel.class, prquery);
            s.setProjectList(prList);
            s.setFlag(Constants.ZERO);
            s.setFlag(MeetConstants.ZERO);
            if (System.currentTimeMillis() > s.getStartTime().getTime()) {
                s.setFlag(Constants.ONE);
                s.setFlag(MeetConstants.ONE);
            }
        });
@@ -545,7 +538,7 @@
        queryWrapper.leftJoin(SystemUser.class, SystemUser::getId, Bookings::getCreator);
        queryWrapper.leftJoin(SystemDepartmentUser.class, SystemDepartmentUser::getUserId, Bookings::getCreator);
        queryWrapper.leftJoin(SystemDepartment.class, SystemDepartment::getId, SystemDepartmentUser::getDepartmentId);
        queryWrapper.eq(Bookings::getIsdeleted, Constants.ZERO);
        queryWrapper.eq(Bookings::getIsdeleted, MeetConstants.ZERO);
        queryWrapper.eq(queryParam.getId() != null, Bookings::getId, queryParam.getId());
        queryWrapper.eq(queryParam.getRoomId() != null, Bookings::getRoomId, queryParam.getRoomId());
        if (queryParam.getStartTime() != null) {
@@ -557,13 +550,13 @@
        }
        queryWrapper.orderByDesc(Bookings::getCreateDate);
//        String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.PROJECTS).getCode();
        String path = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.FILE_DIR).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.PROJECTS).getCode();
//        String path = systemDictDataBiz.queryByCode(MeetConstants.OSS, MeetConstants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(MeetConstants.OSS, MeetConstants.PROJECTS).getCode();
        String path = systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.FTP_RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode();
        Bookings result = bookingsJoinMapper.selectOne(queryWrapper.last("limit 1"));
        if (result != null) {
            MPJLambdaWrapper<Multifile> bookquery = new MPJLambdaWrapper<>();
            bookquery.eq(Multifile::getIsdeleted, Constants.ZERO);
            bookquery.eq(Multifile::getIsdeleted, MeetConstants.ZERO);
            bookquery.eq(Multifile::getObjId, result.getId());
            List<Multifile> filelist = multifileJoinMapper.selectList(bookquery);
            filelist.stream().forEach(a -> {
@@ -599,10 +592,10 @@
        if (user == null || user.getDeleted()) {
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "读头扫码:无效用户");
        }
        if (Constants.equalsInteger(param.getType(), Constants.ZERO)) {
        if (MeetConstants.equalsInteger(param.getType(), MeetConstants.ZERO)) {
            //会议开门
            bookOpenDoor(user, param);
        } else if (Constants.equalsInteger(param.getType(), Constants.ONE)) {
        } else if (MeetConstants.equalsInteger(param.getType(), MeetConstants.ONE)) {
            //会议室管理员开门
            roomManagerOpenDoor(user, param);
        }
@@ -618,7 +611,7 @@
        Long time = param.getTimestamp();
        Long validTime = 0l;
        try {
            validTime = Long.parseLong(systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.QR_OPENROOM_VALIDTIME).getCode());
            validTime = Long.parseLong(systemDictDataBiz.queryByCode(MeetConstants.SYSTEM, MeetConstants.QR_OPENROOM_VALIDTIME).getCode());
        } catch (Exception e) {
        }
        if (validTime > 0 && System.currentTimeMillis() - time > validTime * 60*1000) {
@@ -626,28 +619,28 @@
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "读头扫码:该二维码已过期!");
        }
        Devices devices = new Devices();
        devices.setIsdeleted(Constants.ZERO);
        devices.setStatus(Constants.ZERO);
        devices.setIsdeleted(MeetConstants.ZERO);
        devices.setStatus(MeetConstants.ZERO);
        devices.setCode(param.getDeviceCode());
        devices = devicesService.findOne(devices);
        if(devices == null){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "读头扫码:无效设备");
        }
        if(!Constants.equalsInteger(param.getObjId(),devices.getRoomId())){
        if(!MeetConstants.equalsInteger(param.getObjId(),devices.getRoomId())){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "读头扫码:无效设备绑定");
        }
        //查询会议室记录
        Rooms rooms = roomsMapper.selectById(param.getObjId());
        if (rooms == null || Constants.equalsInteger(rooms.getIsdeleted(), Constants.ONE)) {
        if (rooms == null || MeetConstants.equalsInteger(rooms.getIsdeleted(), MeetConstants.ONE)) {
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "读头扫码:无效会议室");
        }
        UserRel rel = new UserRel();
        rel.setIsdeleted(Constants.ZERO);
        rel.setIsdeleted(MeetConstants.ZERO);
        rel.setObjId(rooms.getId());
        rel.setUserId(user.getId());
        rel.setObjType(Constants.UserRelObjType.objTypeRoom);
        rel.setObjType(MeetConstants.UserRelObjType.objTypeRoom);
        //查询是否参会人员
        rel = userRelJoinMapper.selectOne(new QueryWrapper<>(rel).last("limit 1"));
        if (rel == null) {
@@ -656,12 +649,12 @@
        }
        RoomRecord record = new RoomRecord();
        record.setCreateDate(new Date());
        record.setIsdeleted(Constants.ZERO);
        record.setIsdeleted(MeetConstants.ZERO);
        record.setCreator(user.getId());
        record.setObjId(rooms.getId());
        record.setUserId(user.getId());
        record.setRoomId(rooms.getId());
        record.setObjType(Constants.RoomRecordObjType.objTypeRoom);
        record.setObjType(MeetConstants.RoomRecordObjType.objTypeRoom);
        //开门记录
        roomRecordMapper.insert(record);
    }
@@ -677,7 +670,7 @@
        Long time = param.getTimestamp();
        Long validTime = 0l;
        try {
            validTime = Long.parseLong(systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.QR_OPENBOOK_VALIDTIME).getCode());
            validTime = Long.parseLong(systemDictDataBiz.queryByCode(MeetConstants.SYSTEM, MeetConstants.QR_OPENBOOK_VALIDTIME).getCode());
        } catch (Exception e) {
        }
        if (validTime > 0 && System.currentTimeMillis() - time > validTime * 60*1000) {
@@ -685,30 +678,30 @@
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "读头扫码:二维码已失效");
        }
        Devices devices = new Devices();
        devices.setIsdeleted(Constants.ZERO);
        devices.setStatus(Constants.ZERO);
        devices.setIsdeleted(MeetConstants.ZERO);
        devices.setStatus(MeetConstants.ZERO);
        devices.setCode(param.getDeviceCode());
        devices = devicesService.findOne(devices);
        if(devices == null){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "读头扫码:无效设备");
        }
        Bookings book = findById(param.getObjId());
        if (book == null || Constants.equalsInteger(book.getIsdeleted(), Constants.ONE)) {
        if (book == null || MeetConstants.equalsInteger(book.getIsdeleted(), MeetConstants.ONE)) {
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "读头扫码:无效会议");
        }
        if(!Constants.equalsInteger(book.getRoomId(),devices.getRoomId())){
        if(!MeetConstants.equalsInteger(book.getRoomId(),devices.getRoomId())){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "读头扫码:无效设备绑定");
        }
        if (!Constants.equalsInteger(book.getStatus(), Constants.ZERO)) {
        if (!MeetConstants.equalsInteger(book.getStatus(), MeetConstants.ZERO)) {
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "读头扫码:会议状态错误");
        }
        if (book.getStartTime() == null || book.getEndTime() == null) {
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "读头扫码:会议时间溢出");
        }
        //提前进入时间
        Long advanceInTime = Long.parseLong(systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.ADVANCE_IN).getCode());
        Long advanceInTime = Long.parseLong(systemDictDataBiz.queryByCode(MeetConstants.SYSTEM, MeetConstants.ADVANCE_IN).getCode());
        if ((book.getStartTime().getTime() - advanceInTime * 60L * 1000L) > System.currentTimeMillis()) {
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "读头扫码:会议未开始");
        }
@@ -717,24 +710,24 @@
        }
        RoomRecord record = new RoomRecord();
        record.setCreateDate(new Date());
        record.setIsdeleted(Constants.ZERO);
        record.setIsdeleted(MeetConstants.ZERO);
        record.setCreator(user.getId());
        record.setObjId(book.getId());
        record.setUserId(user.getId());
        record.setRoomId(book.getRoomId());
        UserRel rel = new UserRel();
        rel.setIsdeleted(Constants.ZERO);
        rel.setIsdeleted(MeetConstants.ZERO);
        rel.setObjId(book.getId());
        rel.setUserId(user.getId());
        rel.setObjType(Constants.UserRelObjType.objTypeBook);
        rel.setObjType(MeetConstants.UserRelObjType.objTypeBook);
        //查询是否参会人员
        rel = userRelJoinMapper.selectOne(new QueryWrapper<>(rel).last("limit 1"));
        if (rel == null) {
            //访客
            record.setObjType(Constants.RoomRecordObjType.objTypeBook_out);
            record.setObjType(MeetConstants.RoomRecordObjType.objTypeBook_out);
        } else {
            //参会人员
            record.setObjType(Constants.RoomRecordObjType.objTypeBook_in);
            record.setObjType(MeetConstants.RoomRecordObjType.objTypeBook_in);
        }
        //开门记录
        roomRecordMapper.insert(record);
@@ -752,8 +745,8 @@
    public List<Bookings> getMyBookings(Integer userId, String dateMsg) {
        return bookingsMapper.selectList(new QueryWrapper<Bookings>()
                .apply(" id in ( select u.OBJ_ID from user_rel u where u.USER_ID = '" + userId + "' and u.ISDELETED = 0 and OBJ_TYPE = 1  ) ")
                .eq("ISDELETED",Constants.ZERO)
//                .eq("STATUS",Constants.ZERO)
                .eq("ISDELETED",MeetConstants.ZERO)
//                .eq("STATUS",MeetConstants.ZERO)
                .apply(" ROOM_ID in ( select r.id from rooms r where r.ISDELETED = 0 and r.STATUS = 0  )")
                .like(StringUtils.isNotBlank(dateMsg), "START_TIME", dateMsg));
    }
@@ -771,25 +764,24 @@
                .and(StringUtils.isNotBlank(pageWrap.getModel().getRoomsName()),
                        j -> j.like("a.NAME",pageWrap.getModel().getRoomsName()).or()
                                .like(" b.NAME", pageWrap.getModel().getRoomsName()))
                        .exists(pageWrap.getModel().getQueryType().equals(Constants.ONE) && !Objects.isNull(pageWrap.getModel().getUserId()),
                        .exists(pageWrap.getModel().getQueryType().equals(MeetConstants.ONE) && !Objects.isNull(pageWrap.getModel().getUserId()),
                                " select 1 from user_rel u where a.id = u.OBJ_ID and  u.USER_ID = '" + pageWrap.getModel().getUserId() + "' and u.ISDELETED = 0 and OBJ_TYPE = 1  ")
                        .eq(pageWrap.getModel().getQueryType().equals(Constants.TWO) && !Objects.isNull(pageWrap.getModel().getUserId()), "a.CREATOR", pageWrap.getModel().getUserId())
                        .eq(pageWrap.getModel().getQueryType().equals(MeetConstants.TWO) && !Objects.isNull(pageWrap.getModel().getUserId()), "a.CREATOR", pageWrap.getModel().getUserId())
                        .like(StringUtils.isNotBlank(pageWrap.getModel().getQueryDate()), "a.START_TIME", pageWrap.getModel().getQueryDate())
                        .eq(!Objects.isNull(pageWrap.getModel().getRoomsId()), "b.id", pageWrap.getModel().getRoomsId())
                        .apply(!Objects.isNull(pageWrap.getModel().getStatus()) && pageWrap.getModel().getStatus().equals(Constants.ONE), " now() < a.END_TIME and a.STATUS = 0   ")
                        .and(!Objects.isNull(pageWrap.getModel().getStatus()) && pageWrap.getModel().getStatus().equals(Constants.TWO),
                        .apply(!Objects.isNull(pageWrap.getModel().getStatus()) && pageWrap.getModel().getStatus().equals(MeetConstants.ONE), " now() < a.END_TIME and a.STATUS = 0   ")
                        .and(!Objects.isNull(pageWrap.getModel().getStatus()) && pageWrap.getModel().getStatus().equals(MeetConstants.TWO),
                                j -> j.apply("now() >= a.END_TIME ").or()
                                        .eq(" a.STATUS", Constants.ONE))
                        .eq("b.ISDELETED",Constants.ZERO)
                        .eq("b.STATUS",Constants.ZERO)
                        .eq("a.ISDELETED",Constants.ZERO)
                        .orderByDesc(!Objects.isNull(pageWrap.getModel().getStatus())&&pageWrap.getModel().getStatus().equals(Constants.TWO),"a.START_TIME")
                        .orderByAsc(Objects.isNull(pageWrap.getModel().getStatus())||pageWrap.getModel().getStatus().equals(Constants.ONE),"a.START_TIME")
                                        .eq(" a.STATUS", MeetConstants.ONE))
                        .eq("b.ISDELETED",MeetConstants.ZERO)
                        .eq("b.STATUS",MeetConstants.ZERO)
                        .eq("a.ISDELETED",MeetConstants.ZERO)
                        .orderByDesc(!Objects.isNull(pageWrap.getModel().getStatus())&&pageWrap.getModel().getStatus().equals(MeetConstants.TWO),"a.START_TIME")
                        .orderByAsc(Objects.isNull(pageWrap.getModel().getStatus())||pageWrap.getModel().getStatus().equals(MeetConstants.ONE),"a.START_TIME")
        );
        String prefixUrl = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.FILE_DIR).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.PROJECTS).getCode();
        ;
        String path = systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.FTP_RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode();
        page.getRecords().forEach(i -> {
            i.setPrefixUrl(prefixUrl);
            i.setPrefixUrl(path);
        });
        return page;
    }
@@ -807,30 +799,33 @@
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "未查询到会议详情");
        }
        //预约人
        meetingDetailResponse.setBookingUser(systemUserService.getUserInfo(meetingDetailResponse.getBookingUserId()));
        meetingDetailResponse.setBookingUser(systemUserService.findById(meetingDetailResponse.getBookingUserId()));
        //时间段列表
        meetingDetailResponse.setBookingTimeList(bookingTimeMapper.selectList(new QueryWrapper<BookingTime>()
                .eq("BOOKING_ID", id)
                .eq("ISDELETED", Constants.ZERO)
                .eq("ISDELETED", MeetConstants.ZERO)
        ));
        //参会人员列表
        List<UserResponse> userResponseList = systemUserService.getUserList(id);
        String avatarPath = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.FILE_DIR).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.PROJECTS).getCode();
        SystemUser param = new SystemUser();
        List<SystemUser> userResponseList = systemUserService.findList(param);
        String avatarPath = systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.FTP_RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.MEMBER_IMG).getCode();
        userResponseList.forEach(i -> {
            i.setPrefixUrl(avatarPath);
            if(StringUtils.isNotBlank(i.getAvatar())){
                i.setAvatar(avatarPath+i.getAvatar());
            }
        });
        meetingDetailResponse.setUserResponseList(userResponseList);
        //服务项
        String projectsPath = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.FILE_DIR).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.PROJECTS).getCode();
        List<ProjectsResponse> projectsResponseList = projectsService.getProjectsList(id, Constants.ONE);
        String projectsPath = systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.FTP_RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode();
        List<ProjectsResponse> projectsResponseList = projectsService.getProjectsList(id, MeetConstants.ONE);
        projectsResponseList.forEach(i -> {
            i.setPrefixUrl(projectsPath);
        });
        meetingDetailResponse.setProjectsResponseList(projectsResponseList);
        List<Multifile> multiFileList = multifileMapper.selectList(new QueryWrapper<Multifile>()
                .eq("OBJ_ID", id)
                .eq("OBJ_TYPE", Constants.ZERO)
                .eq("OBJ_TYPE", MeetConstants.ZERO)
        );
        multiFileList.forEach(i -> {
            i.setFileFullUrl(projectsPath);
@@ -839,12 +834,12 @@
        meetingDetailResponse.setMultiFileList(multiFileList);
        //会议室管理人员
        List<UserRel> userRelList = userRelMapper.selectList(new QueryWrapper<UserRel>()
                .eq("ISDELETED",Constants.ZERO)
                .eq("ISDELETED",MeetConstants.ZERO)
                .eq("OBJ_ID", meetingDetailResponse.getRoomId())
                .eq("OBJ_TYPE",Constants.ZERO)
                .eq("OBJ_TYPE",MeetConstants.ZERO)
        );
        if (!Objects.isNull(userRelList) && userRelList.size() > 0) {
            meetingDetailResponse.setRoomUser(systemUserService.getUserInfo(userRelList.get(Constants.ZERO).getUserId()));
            meetingDetailResponse.setRoomUser(systemUserService.findById(userRelList.get(MeetConstants.ZERO).getUserId()));
        }
        return meetingDetailResponse;
    }
@@ -859,11 +854,11 @@
    @Override
    public String getQrCode(Integer id, Integer userId) {
        Bookings model = bookingsMapper.selectById(id);
        if (model == null || !Constants.equalsInteger(model.getIsdeleted(), Constants.ZERO)) {
        if (model == null || !MeetConstants.equalsInteger(model.getIsdeleted(), MeetConstants.ZERO)) {
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "未查询到会议详情");
        }
        QrOpenDoorDto dto = new QrOpenDoorDto();
        dto.setType(Constants.ZERO);
        dto.setType(MeetConstants.ZERO);
        dto.setUserId(userId);
        dto.setTimestamp(System.currentTimeMillis());
        dto.setObjId(id);
@@ -909,12 +904,12 @@
        if (System.currentTimeMillis() > bookings.getStartTime().getTime()) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "会议已开始,无法进行取消");
        }
        if(bookings.getStatus().equals(Constants.ONE)){
        if(bookings.getStatus().equals(MeetConstants.ONE)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "本次操作失败,预约状态已流转");
        }
        bookings.setCancelTime(new Date());
        bookings.setCancelUser(userId);
        bookings.setStatus(Constants.ONE);
        bookings.setStatus(MeetConstants.ONE);
        bookings.setEditDate(new Date());
        bookings.setEditor(userId);
        bookingsMapper.updateById(bookings);
@@ -931,21 +926,21 @@
    @Override
    public void sendBookingsNotice() {
        //查询配置
        String configMinute = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.NOTICE_TIME).getCode();
        String configMinute = systemDictDataBiz.queryByCode(MeetConstants.SYSTEM, MeetConstants.NOTICE_TIME).getCode();
        Integer minute = StringUtils.isNotBlank(configMinute) ? Integer.valueOf(configMinute) : 30;
        //查询会议开始三十分钟前的会议
        List<Bookings> bookingsList = bookingsMapper.selectList(new QueryWrapper<Bookings>()
                .eq("STATUS",Constants.ZERO)
                .eq("ISDELETED",Constants.ZERO)
                .eq("SEND_NOTICE", Constants.ZERO)
                .eq("STATUS",MeetConstants.ZERO)
                .eq("ISDELETED",MeetConstants.ZERO)
                .eq("SEND_NOTICE", MeetConstants.ZERO)
                .apply(" now() >= SUBDATE(START_TIME,interval + " + minute + " minute) ")
                .apply(" ROOM_ID in ( select r.id from rooms r where r.ISDELETED = 0 and r.STATUS = 0  )")
                .apply(" ROOM_ID in ( select r.id from meeting_rooms r where r.ISDELETED = 0 and r.STATUS = 0  )")
        );
        for (Bookings bookings : bookingsList) {
            bookings.setSendNotice(Constants.ONE);
            bookings.setSendNotice(MeetConstants.ONE);
            bookings.setEditDate(new Date());
            bookingsMapper.updateById(bookings);
            this.sendNotice(bookings, Constants.ONE);
            this.sendNotice(bookings, MeetConstants.ONE);
            //发送微信通知
            sendWxMessage.bookingsStart(systemUserMapper.selectById(bookings.getCreator()), bookings, roomsMapper.selectById(bookings.getRoomId()));
        }
@@ -963,26 +958,28 @@
        //2、会议预定成功,给所有参会人员与预约人都发送
        //3、会议取消 会议取消,给所有参会人员都发送
        List<UserRel> userRelList = userRelMapper.selectList(new QueryWrapper<UserRel>()
                .eq("OBJ_TYPE", Constants.ONE)
                .eq("OBJ_TYPE", MeetConstants.ONE)
                .eq("OBJ_ID", bookings.getId())
                .eq("ISDELETED", Constants.ZERO)
                .eq("ISDELETED", MeetConstants.ZERO)
        );
        for (UserRel i : userRelList) {
            noticeService.sendNotice(sendType, i.getUserId(), bookings.getId(), bookings.getCreator());
        List<Notices> noticeList = new ArrayList<>();
        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.MEETING_START;
        if (sendType.equals(MeetConstants.THREE)){
            noticeObjectType = Constants.NoticeObjectType.MEETING_CACEL;
        }else   if (sendType.equals(MeetConstants.TWO)){
            noticeObjectType = Constants.NoticeObjectType.MEETING_BOOK_SUCCESS;
        }
        if (sendType.equals(Constants.ONE)) {
            noticeService.sendNotice(Constants.ZERO, bookings.getUserId(), bookings.getId(), bookings.getUserId());
        } else if (sendType.equals(Constants.TWO) || sendType.equals(3)) {
            Boolean flag = true;
        if(userRelList!=null && userRelList.size()>0){
            for (UserRel i : userRelList) {
                if (i.getUserId().equals(bookings.getCreator())) {
                    flag = false;
                    break;
                }
                Notices notices = new Notices(noticeObjectType,i.getId(),noticeObjectType.getInfo(), i.getUserId(), Constants.ZERO);
                noticeList.add(notices);
            }
            if (flag) {
                noticeService.sendNotice(sendType, bookings.getCreator(), bookings.getId(), bookings.getCreator());
            }
        }
        //给参会人员插入
        Notices notices = new Notices(noticeObjectType,bookings.getId(),noticeObjectType.getInfo(),bookings.getCreator(), Constants.ZERO);
        noticeList.add(notices);
        if(noticeList.size()>0){
            noticesMapper.insertBatchSomeColumn(noticeList);
        }
    }
@@ -1016,10 +1013,10 @@
                .leftJoin(SystemDepartmentUser.class, SystemDepartmentUser::getUserId, Bookings::getCreator)
                .leftJoin(SystemDepartment.class, SystemDepartment::getId, SystemDepartmentUser::getDepartmentId)
                .eq(Objects.nonNull(roomId), Bookings::getRoomId, roomId)
                .eq(Bookings::getIsdeleted, Constants.ZERO)
                .eq(Bookings::getStatus, Constants.ZERO)
              //  .eq(BookingTime::getIsdeleted, Constants.ZERO)
               // .eq(RoomTime::getIsdeleted, Constants.ZERO)
                .eq(Bookings::getIsdeleted, MeetConstants.ZERO)
                .eq(Bookings::getStatus, MeetConstants.ZERO)
              //  .eq(BookingTime::getIsdeleted, MeetConstants.ZERO)
               // .eq(RoomTime::getIsdeleted, MeetConstants.ZERO)
                .apply("DATE_FORMAT(t.START_TIME,'%Y-%m-%d') between '" + start + "' and '" + end + "'")
                // .between(Bookings::getStartTime,start,end )
              //  .orderByAsc(Bookings::getRoomId)