| package com.doumee.service.business.impl; | 
|   | 
| import com.baomidou.mybatisplus.core.toolkit.Wrappers; | 
| import com.doumee.biz.system.SystemDictDataBiz; | 
| import com.doumee.core.constants.ResponseStatus; | 
| import com.doumee.core.exception.BusinessException; | 
| import com.doumee.service.business.third.model.LoginUserInfo; | 
| import com.doumee.service.business.third.model.PageData; | 
| import com.doumee.service.business.third.model.PageWrap; | 
| import com.doumee.core.utils.Constants; | 
| 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.dao.admin.request.QrOpenDoorDto; | 
| import com.doumee.dao.business.RoomsMapper; | 
| import com.doumee.dao.business.join.*; | 
| import com.doumee.dao.business.model.*; | 
| import com.doumee.dao.system.model.Multifile; | 
| import com.doumee.dao.system.model.SystemUser; | 
| import com.doumee.dao.web.request.RoomsRequest; | 
| import com.doumee.dao.web.response.RoomsResponse; | 
| import com.doumee.service.business.RoomsService; | 
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
| import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; | 
| import com.baomidou.mybatisplus.core.metadata.IPage; | 
| import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 
| import com.github.yulichang.wrapper.MPJLambdaWrapper; | 
| import org.apache.commons.lang3.StringUtils; | 
| import org.apache.shiro.SecurityUtils; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.beans.factory.annotation.Value; | 
| import org.springframework.stereotype.Service; | 
| import org.springframework.transaction.annotation.Transactional; | 
| import org.springframework.util.CollectionUtils; | 
|   | 
| import java.util.*; | 
| import java.util.stream.Collectors; | 
|   | 
| /** | 
|  * 会议室信息表Service实现 | 
|  * | 
|  * @author 江蹄蹄 | 
|  * @date 2023/05/04 18:18 | 
|  */ | 
| @Service | 
| public class RoomsServiceImpl implements RoomsService { | 
|   | 
|     @Value("${des_pwd}") | 
|     private String desPwd; | 
|     @Autowired | 
|     private RoomsMapper roomsMapper; | 
|     @Autowired | 
|     private RoomsJoinMapper roomsJoinMapper; | 
|     @Autowired | 
|     private MultifileJoinMapper multifileJoinMapper; | 
|   | 
|   | 
|     @Autowired | 
|     private RoomTimeJoinMapper roomTimeJoinMapper; | 
|     @Autowired | 
|     private BookingsJoinMapper bookingsJoinMapper; | 
|   | 
|     @Autowired | 
|     private ProjectRelJoinMapper projectRelJoinMapper; | 
|     @Autowired | 
|     private UserRelJoinMapper userRelJoinMapper; | 
|   | 
|     @Autowired | 
|     private SystemDictDataBiz systemDictDataBiz; | 
|     @Override | 
|     @Transactional(rollbackFor = {BusinessException.class, Exception.class}) | 
|     public Integer create(Rooms rooms) { | 
|         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); | 
|         if(user ==null){ | 
|             user = rooms.getLoginUserInfo(); | 
|         } | 
|         isCreateParamValid(rooms, user); | 
|   | 
|         Calendar starttime = Calendar.getInstance(); | 
|         starttime.set(Calendar.HOUR_OF_DAY, timeFormat(rooms.getStartTime(), "HH")); | 
|         starttime.set(Calendar.MINUTE, timeFormat(rooms.getStartTime(), "mm")); | 
|         starttime.set(Calendar.MILLISECOND, 1); | 
|   | 
|         Calendar endtime = Calendar.getInstance(); | 
|         endtime.set(Calendar.HOUR_OF_DAY, timeFormat(rooms.getEndTime(), "HH")); | 
|         endtime.set(Calendar.MINUTE, timeFormat(rooms.getEndTime(), "mm")); | 
|         endtime.set(Calendar.MILLISECOND, 1); | 
|         if (starttime.after(endtime) || starttime.equals(endtime)) { | 
|             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "日期区间错误"); | 
|         } | 
|         if(!Constants.equalsInteger(rooms.getFileType(),Constants.TWO)&&CollectionUtils.isEmpty(rooms.getMultifileList())){ | 
|             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"未上传文件图片"); | 
|         } | 
|   | 
|         rooms.setCreateDate(new Date()); | 
|         rooms.setIsdeleted(Constants.ZERO); | 
|         rooms.setCreator(user.getId()); | 
|         rooms.setStatus(Constants.ZERO); | 
|         rooms.setEditDate(rooms.getCreateDate()); | 
|         roomsMapper.insert(rooms); | 
|         if(!Constants.equalsInteger(rooms.getFileType(),Constants.TWO)){ | 
|             List<Multifile> multifileList = rooms.getMultifileList(); | 
|             if(CollectionUtils.isEmpty(multifileList)){ | 
|                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"请上传附件信息"); | 
|             } | 
|             for (Multifile multifile:multifileList) { | 
|                 if(Objects.isNull(multifile) | 
|                     || StringUtils.isBlank(multifile.getFileurl())){ | 
|                     throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"附件参数错误"); | 
|                 } | 
|                 multifile.setCreateDate(new Date()); | 
|                 multifile.setObjId(rooms.getId()); | 
|                 multifile.setObjType(Constants.FOUR); | 
|                 multifile.setIsdeleted(Constants.ZERO); | 
|                 multifile.setCreator(user.getId()); | 
|             } | 
|             multifileJoinMapper.insert(multifileList); | 
|         } | 
|         rooms.setStartTime(rooms.getStartTime()+":00"); | 
|         rooms.setEndTime(rooms.getEndTime()+":00"); | 
|         rooms.setStartTime(DateUtil.formatDate(starttime.getTime(), "yyyy-MM-dd HH:mm:ss")); | 
|         rooms.setEndTime(DateUtil.formatDate(endtime.getTime(), "yyyy-MM-dd HH:mm:ss")); | 
|   | 
|         //  更新会议室时间段 | 
|         updateRoomTimes(rooms, user); | 
|         //  添加管理人员 | 
|         updateManager(rooms, user); | 
|         //  添加管服务项目 | 
|         updateProjectRel(rooms, user); | 
|         return rooms.getId(); | 
|     } | 
|   | 
|     public void isCreateParamValid(Rooms rooms, LoginUserInfo user) { | 
|         if (StringUtils.isBlank(rooms.getName()) || | 
|                 StringUtils.isBlank(rooms.getStartTime()) || | 
|                 StringUtils.isBlank(rooms.getEndTime()) || | 
|                 Objects.isNull(rooms.getFileType()) || | 
|                 rooms.getIntervalTime() == null | 
|         ) { | 
|             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage()); | 
|         } | 
|   | 
|   | 
|   | 
|         MPJLambdaWrapper<Rooms> queryWrapper = new MPJLambdaWrapper<>(); | 
|         queryWrapper.eq(Rooms::getIsdeleted, Constants.ZERO); | 
|         queryWrapper.eq(Rooms::getName, rooms.getName()); | 
|         queryWrapper.last("limit 1"); | 
|         Rooms result = roomsJoinMapper.selectJoinOne(Rooms.class, queryWrapper); | 
|         if (Objects.nonNull(result)) { | 
|             if (rooms.getId() != null) { | 
|                 //编辑时判断 | 
|           /*      Integer re = recordisExist(rooms.getId()); | 
|                 if (Constants.equalsInteger(re, Constants.ONE)) { | 
|                     //存下预约记录不允许更新开放时间和粒度分钟 | 
|                     throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "会议室存在预约中的记录,不允许修改"); | 
|                 } | 
| */ | 
|                 if (!Constants.equalsInteger(rooms.getId(), result.getId())) { | 
|                     throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "会议室名称已存在,不允许重复!"); | 
|                 } | 
|   | 
|   | 
|             } else { | 
|                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "会议室名称已存在,不允许重复!"); | 
|             } | 
|   | 
|         } | 
|   | 
|   | 
|     } | 
|   | 
|     @Override | 
|     public Integer recordisExist(Integer roomsId) { | 
|         MPJLambdaWrapper<Bookings> queryBooke = new MPJLambdaWrapper<>(); | 
|         queryBooke.eq(Bookings::getIsdeleted, Constants.ZERO); | 
|         queryBooke.eq(Bookings::getRoomId, roomsId); | 
|         queryBooke.eq(Bookings::getStatus, Constants.ZERO); | 
|         List<Bookings> bookList = bookingsJoinMapper.selectList(queryBooke); | 
|         for (Bookings res : bookList) { | 
|             Calendar bj = Calendar.getInstance(); | 
|             bj.setTime(res.getEndTime()); | 
|             Calendar bjnow = Calendar.getInstance(); | 
|             if (bjnow.before(bj)) { | 
|                 return Constants.ONE; | 
|             } | 
|         } | 
|         return Constants.ZERO; | 
|     } | 
|   | 
|     public static Integer timeFormat(String time, String mark) { | 
|         if (StringUtils.equals(mark, "HH")) { | 
|             if (time.contains(":")) { | 
|                 String[] res = time.split(":"); | 
|                 return Integer.parseInt(res[0]); | 
|             } | 
|         } | 
|   | 
|         if (StringUtils.equals(mark, "mm")) { | 
|             if (time.contains(":")) { | 
|                 String[] res = time.split(":"); | 
|                 return Integer.parseInt(res[1]); | 
|             } | 
|         } | 
|   | 
|         return 0; | 
|     } | 
|   | 
|     public void updateRoomTimes(Rooms rooms, LoginUserInfo user) { | 
|         Calendar starttime = Calendar.getInstance(); | 
|         starttime.setTime(DateUtil.StringToDate(rooms.getStartTime())); | 
|         Calendar endtime = Calendar.getInstance(); | 
|         endtime.setTime(DateUtil.StringToDate(rooms.getEndTime())); | 
|   | 
|         List<Map<String, Date>> list = new ArrayList<>(); | 
|         while (starttime.before(endtime)) { | 
|             Map<String, Date> map = new HashMap<>(); | 
|             map.put("start", starttime.getTime()); | 
|   | 
|             starttime.add(Calendar.MINUTE, rooms.getIntervalTime()); | 
|             map.put("end", starttime.getTime()); | 
|             list.add(map); | 
|         } | 
|         RoomTime roomTime = new RoomTime(); | 
|   | 
|         UpdateWrapper<RoomTime> updateWrapper = new UpdateWrapper<>(); | 
|         updateWrapper.lambda().eq(RoomTime::getIsdeleted, Constants.ZERO); | 
|         updateWrapper.lambda().eq(RoomTime::getRoomId, rooms.getId()); | 
|   | 
|         RoomTime rt = new RoomTime(); | 
|         rt.setIsdeleted(Constants.ONE); | 
|         roomTimeJoinMapper.update(rt, updateWrapper); | 
|   | 
|         list.stream().forEach(s -> { | 
|             if (s.get("end").before(endtime.getTime()) || s.get("end").equals(endtime.getTime())) { | 
|                 roomTime.setId(null); | 
|                 roomTime.setIsdeleted(Constants.ZERO); | 
|                 roomTime.setCreator(user.getId()); | 
|                 roomTime.setCreateDate(new Date()); | 
|                 roomTime.setRoomId(rooms.getId()); | 
|                 roomTime.setStatus(Constants.ZERO); | 
|                 roomTime.setStartTime(DateUtil.formatDate(s.get("start"), "HH:mm")); | 
|                 roomTime.setEndTime(DateUtil.formatDate(s.get("end"), "HH:mm")); | 
|                 roomTimeJoinMapper.insert(roomTime); | 
|             } | 
|         }); | 
|   | 
|     } | 
|   | 
|   | 
|     public void updateManager(Rooms rooms, LoginUserInfo user){ | 
|         QueryWrapper<UserRel> updateWrapper = new QueryWrapper<>(); | 
|         updateWrapper.lambda().eq(UserRel::getIsdeleted,Constants.ZERO); | 
|         updateWrapper.lambda().eq(UserRel::getObjId,rooms.getId()); | 
|         updateWrapper.lambda().eq(UserRel::getObjType,Constants.ZERO); | 
|         UserRel userRel=new UserRel(); | 
|         userRel.setIsdeleted(Constants.ONE); | 
|         userRelJoinMapper.update(userRel,updateWrapper); | 
|         if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(rooms.getSysList())){ | 
|   | 
|             rooms.getSysList().stream().forEach(s ->{ | 
|   | 
|                 s.setIsdeleted(Constants.ZERO); | 
|                 s.setCreateDate(new Date()); | 
|                 s.setCreator(user.getId()); | 
|                 s.setUserId(s.getUserId()); | 
|                 s.setObjId(rooms.getId()); | 
|                 s.setObjType(Constants.ZERO); | 
|                 userRelJoinMapper.insert(s); | 
|             }); | 
|   | 
|         } | 
|   | 
|   | 
|     } | 
|   | 
|     public void updateProjectRel(Rooms rooms, LoginUserInfo user){ | 
|   | 
|         QueryWrapper<ProjectRel> updateWrapper = new QueryWrapper<>(); | 
|         updateWrapper.lambda().eq(ProjectRel::getIsdeleted,Constants.ZERO); | 
|         updateWrapper.lambda().eq(ProjectRel::getObjId,rooms.getId()); | 
|         updateWrapper.lambda().eq(ProjectRel::getObjType,Constants.ZERO); | 
|         ProjectRel projectRel=new ProjectRel(); | 
|         projectRel.setIsdeleted(Constants.ONE); | 
|         projectRelJoinMapper.update(projectRel,updateWrapper); | 
|         if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(rooms.getProjectList())){ | 
|             rooms.getProjectList().stream().forEach(s ->{ | 
|   | 
|                 s.setIsdeleted(Constants.ZERO); | 
|                 s.setCreateDate(new Date()); | 
|                 s.setCreator(user.getId()); | 
|                 s.setProjectId(s.getProjectId()); | 
|                 s.setObjId(rooms.getId()); | 
|                 s.setObjType(Constants.ZERO); | 
|                 projectRelJoinMapper.insert(s); | 
|             }); | 
|         } | 
|     } | 
|   | 
|     @Override | 
|     public void deleteById(Integer id) { | 
|   | 
|         Integer re = recordisExist(id); | 
|         if (Constants.equalsInteger(re, Constants.ONE)) { | 
|             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "会议室存在预约中的记录,不允许删除"); | 
|         } | 
|         Rooms rooms=new Rooms(); | 
|         rooms.setId(id); | 
|         rooms.setIsdeleted(Constants.ONE); | 
|         roomsMapper.updateById(rooms); | 
|     } | 
|   | 
|     @Override | 
|     public void delete(Rooms rooms) { | 
|         UpdateWrapper<Rooms> deleteWrapper = new UpdateWrapper<>(rooms); | 
|         roomsMapper.delete(deleteWrapper); | 
|     } | 
|   | 
|     @Override | 
|     public void deleteByIdInBatch(List<Integer> ids) { | 
|         if (CollectionUtils.isEmpty(ids)) { | 
|             return; | 
|         } | 
|        // roomsMapper.deleteBatchIds(ids); | 
|   | 
|         for(Integer id:ids){ | 
|             Rooms res=  roomsMapper.selectById(id); | 
|             Integer re = recordisExist(id); | 
|             if (Constants.equalsInteger(re, Constants.ONE)) { | 
|                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), res.getName()+":会议室存在预约中的记录,不允许删除"); | 
|             } | 
|             Rooms rooms=new Rooms(); | 
|             rooms.setId(id); | 
|             rooms.setIsdeleted(Constants.ONE); | 
|             roomsMapper.updateById(rooms); | 
|         } | 
|     } | 
|   | 
|   | 
|   | 
|     @Override | 
|     @Transactional(rollbackFor = {BusinessException.class, Exception.class}) | 
|     public void updateById(Rooms rooms) { | 
|   | 
|         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); | 
|         if(user ==null){ | 
|             user = rooms.getLoginUserInfo(); | 
|         } | 
|         isCreateParamValid(rooms, user); | 
|   | 
|         Calendar starttime = Calendar.getInstance(); | 
|         starttime.set(Calendar.HOUR_OF_DAY, timeFormat(rooms.getStartTime(), "HH")); | 
|         starttime.set(Calendar.MINUTE, timeFormat(rooms.getStartTime(), "mm")); | 
|         starttime.set(Calendar.MILLISECOND, 1); | 
|   | 
|         Calendar endtime = Calendar.getInstance(); | 
|         endtime.set(Calendar.HOUR_OF_DAY, timeFormat(rooms.getEndTime(), "HH")); | 
|         endtime.set(Calendar.MINUTE, timeFormat(rooms.getEndTime(), "mm")); | 
|         endtime.set(Calendar.MILLISECOND, 1); | 
|         if (starttime.after(endtime) || starttime.equals(endtime)) { | 
|             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "日期区间错误"); | 
|         } | 
|   | 
|         Integer re = recordisExist(rooms.getId()); | 
|         if (Constants.equalsInteger(re, Constants.ONE)) { | 
|             //存下预约记录不允许更新开放时间和粒度分钟 | 
| //            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "会议室存在预约中的记录,不允许修改"); | 
|             rooms.setStartTime(null); | 
|             rooms.setEndTime(null); | 
|             rooms.setIntervalTime(null); | 
|         } | 
|   | 
|         rooms.setEditDate(new Date()); | 
|         rooms.setEditor(user.getId()); | 
|   | 
| //        if(!Constants.equalsInteger(rooms.getFileType(),Constants.TWO)&&StringUtils.isBlank(rooms.getImgurl())){ | 
| //            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"未上传文件图片"); | 
| //        } | 
| //        if(Constants.equalsInteger(rooms.getFileType(),Constants.TWO)){ | 
| //            rooms.setImgurl(null); | 
| //        } | 
|   | 
|         roomsMapper.update(rooms, Wrappers.<Rooms>lambdaUpdate() | 
|                 .set(Rooms::getFileType, rooms.getFileType()) | 
| //                .set(Rooms::getEndTime, rooms.getEndTime()) | 
| //                .set(Rooms::getStartTime, rooms.getStartTime()) | 
|                 .set(Rooms::getLimitNum, rooms.getLimitNum()) | 
|                 .set(Rooms::getTips, rooms.getTips()) | 
|                 .set(Rooms::getIntervalTime, rooms.getIntervalTime()) | 
|                 .set(Rooms::getImgurl, rooms.getImgurl()) | 
|                 .eq(Rooms::getId, rooms.getId())); | 
|   | 
|         multifileJoinMapper.delete(new QueryWrapper<Multifile>().lambda() | 
|                 .eq(Multifile::getObjId,rooms.getId()) | 
|                 .eq(Multifile::getObjType,Constants.FOUR) | 
|         ); | 
|   | 
|         if(!Constants.equalsInteger(rooms.getFileType(),Constants.TWO)){ | 
|             List<Multifile> multifileList = rooms.getMultifileList(); | 
|             if(CollectionUtils.isEmpty(multifileList)){ | 
|                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"请上传附件信息"); | 
|             } | 
|             for (Multifile multifile:multifileList) { | 
|                 if(Objects.isNull(multifile) | 
|                         || StringUtils.isBlank(multifile.getFileurl())){ | 
|                     throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"附件参数错误"); | 
|                 } | 
|                 multifile.setCreateDate(new Date()); | 
|                 multifile.setObjId(rooms.getId()); | 
|                 multifile.setObjType(Constants.FOUR); | 
|                 multifile.setIsdeleted(Constants.ZERO); | 
|                 multifile.setCreator(user.getId()); | 
|             } | 
|             multifileJoinMapper.insert(multifileList); | 
|         } | 
|   | 
|         rooms.setStartTime(rooms.getStartTime()+":00"); | 
|         rooms.setEndTime(rooms.getEndTime()+":00"); | 
|         rooms.setStartTime(DateUtil.formatDate(starttime.getTime(), "yyyy-MM-dd HH:mm:ss")); | 
|         rooms.setEndTime(DateUtil.formatDate(endtime.getTime(), "yyyy-MM-dd HH:mm:ss")); | 
|   | 
|   | 
|         //TODO更 新会议室时间段 | 
|         if (!Constants.equalsInteger(re, Constants.ONE)) { | 
|             updateRoomTimes(rooms, user); | 
|         } | 
|   | 
|         //TODO 添加管理人员 | 
|         updateManager(rooms, user); | 
|         //TODO 添加管服务项目 | 
|         updateProjectRel(rooms, user); | 
|     } | 
|   | 
|     @Override | 
|     public void updateByIdInBatch(List<Rooms> roomss) { | 
|         if (CollectionUtils.isEmpty(roomss)) { | 
|             return; | 
|         } | 
|         for (Rooms rooms : roomss) { | 
|          //   this.updateById(rooms); | 
|         } | 
|     } | 
|     @Override | 
|     public void updateStatusById(Rooms rooms,LoginUserInfo user) { | 
|   | 
|   | 
|         Integer re = recordisExist(rooms.getId()); | 
|         if (Constants.equalsInteger(re, Constants.ONE)) { | 
|             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "会议室存在预约中的记录,禁止操作"); | 
|         } | 
|         rooms.setEditDate(new Date()); | 
|         rooms.setEditor(user.getId()); | 
|         roomsMapper.updateById(rooms); | 
|     } | 
|   | 
|   | 
|     @Override | 
|     public Rooms findById(Integer id) { | 
|   | 
|         return roomsMapper.selectById(id); | 
|     } | 
|   | 
|     @Override | 
|     public Rooms findOne(Rooms rooms) { | 
|         QueryWrapper<Rooms> wrapper = new QueryWrapper<>(rooms); | 
|         return roomsMapper.selectOne(wrapper); | 
|     } | 
|   | 
|     @Override | 
|     public List<Rooms> findList(Rooms rooms) { | 
|   | 
|         MPJLambdaWrapper<Rooms> wrapper = new MPJLambdaWrapper<>(); | 
|         wrapper.eq(Rooms::getIsdeleted,Constants.ZERO); | 
|         wrapper.eq(rooms.getStatus()!=null,Rooms::getStatus,rooms.getStatus()); | 
|         wrapper.orderByDesc(Rooms::getCreateDate); | 
|        List<Rooms>  list=roomsJoinMapper.selectList(wrapper); | 
|     /*   if(list!=null){ | 
|            list.stream().forEach(s ->{ | 
|                MPJLambdaWrapper<RoomTime> findrt = new MPJLambdaWrapper<>(); | 
|                findrt.eq(RoomTime::getIsdeleted, Constants.ZERO); | 
|                findrt.eq(RoomTime::getRoomId, s.getId()); | 
|               List<RoomTime> list1= roomTimeJoinMapper.selectList(findrt); | 
|               s.setRoomTimeList(list1); | 
|            }); | 
|        }*/ | 
|         return list; | 
|     } | 
|   | 
|     @Override | 
|     public PageData<Rooms> findPage(PageWrap<Rooms> pageWrap) { | 
|         IPage<Rooms> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); | 
|         MPJLambdaWrapper<Rooms> queryWrapper = new MPJLambdaWrapper<>(); | 
|         Utils.MP.blankToNull(pageWrap.getModel()); | 
|         queryWrapper.selectAll(Rooms.class); | 
|         queryWrapper.select("(select count(a.id) from meeting_book a where a.room_id=t.id and a.isdeleted=0 and a.status=0)",Rooms::getBookingNum); | 
|         queryWrapper.orderByDesc(Rooms::getCreateDate); | 
|         queryWrapper.eq(Rooms::getIsdeleted, Constants.ZERO); | 
|         queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getName()),Rooms::getName, pageWrap.getModel().getName()); | 
|   | 
|         if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(pageWrap.getModel().getSysList())){ | 
|          //   queryWrapper.leftJoin(UserRel.class,UserRel::getObjId,Rooms::getId); | 
|             List<Integer> collect = pageWrap.getModel().getSysList().stream().map(UserRel::getUserId).collect(Collectors.toList()); | 
|             queryWrapper.exists("select u.id from meeting_user_rel u where u.ISDELETED=0 and u.OBJ_ID =t.id and  u.USER_ID in (" +     StringUtils.strip(collect.toString(),"[]")+" )"); | 
|         } | 
|   | 
|         String path = systemDictDataBiz.queryByCode(Constants.FTP, Constants.FTP_RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode(); | 
|   | 
|         IPage<Rooms> result = roomsJoinMapper.selectJoinPage(page, Rooms.class, queryWrapper); | 
|         result.getRecords().stream().forEach(s ->{ | 
|   | 
|             if(StringUtils.isNotBlank(s.getImgurl())){ | 
|                 s.setImgFullUrl(path+s.getImgurl()); | 
|             } | 
|   | 
|             MPJLambdaWrapper<UserRel> finduser = new MPJLambdaWrapper<>(); | 
|             finduser.selectAll(UserRel.class); | 
|             finduser.selectAs(SystemUser::getRealname,UserRel::getRealName); | 
|             finduser.eq(UserRel::getIsdeleted,Constants.ZERO); | 
|             finduser.eq(UserRel::getObjId,s.getId()); | 
|             finduser.eq(UserRel::getObjType,Constants.ZERO); | 
|             finduser.leftJoin(SystemUser.class,SystemUser::getId,UserRel::getUserId); | 
|             finduser.orderByDesc(UserRel::getCreateDate); | 
|             List<UserRel> sysList=userRelJoinMapper.selectJoinList(UserRel.class,finduser); | 
|             s.setSysList(sysList); | 
|   | 
|   | 
|             MPJLambdaWrapper<ProjectRel> findpr = new MPJLambdaWrapper<>(); | 
|             findpr.selectAll(ProjectRel.class); | 
|             findpr.selectAs(Projects::getName,ProjectRel::getProjectName); | 
|             findpr.eq(ProjectRel::getIsdeleted,Constants.ZERO); | 
|             findpr.eq(ProjectRel::getObjId,s.getId()); | 
|             findpr.eq(ProjectRel::getObjType,Constants.ZERO); | 
|             findpr.leftJoin(Projects.class,Projects::getId,ProjectRel::getProjectId); | 
|             List<ProjectRel> projectLisr=  projectRelJoinMapper.selectJoinList(ProjectRel.class,findpr); | 
|             s.setProjectList(projectLisr); | 
|   | 
|             if(!Constants.equalsInteger(s.getFileType(),Constants.TWO)){ | 
|                 List<Multifile > multifileList = multifileJoinMapper.selectList(new QueryWrapper<Multifile>().lambda() | 
|                         .eq(Multifile::getObjId,s.getId()) | 
|                         .eq(Multifile::getObjType,Constants.FOUR) | 
|                 ); | 
|                 if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){ | 
|                     for (Multifile multifile:multifileList) { | 
|                         multifile.setFileurlFull(path + multifile.getFileurl()); | 
|                     } | 
|                     s.setMultifileList(multifileList); | 
|                 } | 
|             } | 
|         }); | 
|   | 
|         return PageData.from(result); | 
|     } | 
|   | 
|     @Override | 
|     public long count(Rooms rooms) { | 
|         QueryWrapper<Rooms> wrapper = new QueryWrapper<>(rooms); | 
|         return roomsMapper.selectCount(wrapper); | 
|     } | 
|   | 
|   | 
|   | 
|   | 
|     /****************************************移动端接口开始********************************************************************/ | 
|   | 
|     @Override | 
|     public List<RoomsResponse> getRoomsList() { | 
|         return roomsMapper.getRoomsList(new QueryWrapper<RoomsResponse>() | 
|                 .eq("ISDELETED",Constants.ZERO) | 
|                 .eq("STATUS",Constants.ZERO) | 
|                 .orderByDesc(" CREATE_DATE ") | 
|         ); | 
|     } | 
|   | 
|     /** | 
|      * 获取开门二维码 | 
|      * @param id | 
|      * @param userId | 
|      * @return | 
|      */ | 
|     @Override | 
|     public   String getQrCode(Integer id,Integer userId){ | 
|         Rooms model =  roomsMapper.selectById(id); | 
|         if(model == null || !Constants.equalsInteger(model.getIsdeleted(),Constants.ZERO)){ | 
|             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到会议室详情"); | 
|         } | 
|         QrOpenDoorDto dto = new QrOpenDoorDto(); | 
|         dto.setType(Constants.ONE); | 
|         dto.setUserId(userId); | 
|         dto.setTimestamp(System.currentTimeMillis()); | 
|         dto.setObjId(id); | 
|         return DESUtil.encrypt(desPwd,QrOpenDoorDto.getParamFromObject(dto)); | 
|     } | 
|   | 
|   | 
|   | 
|     @Override | 
|     public IPage<RoomsResponse> getRoomsPage(PageWrap<RoomsRequest> pageWrap) { | 
|         IPage<RoomsResponse> page = roomsMapper.myRoomsPage(pageWrap.toPage(),new QueryWrapper<RoomsResponse>() | 
|                 .eq("STATUS",Constants.ZERO) | 
|                 .eq("ISDELETED",Constants.ZERO) | 
|                 .like(StringUtils.isNotBlank(pageWrap.getModel().getRoomsName()),"NAME",pageWrap.getModel().getRoomsName()) | 
|                 .exists(" select 1 from meeting_user_rel u where u.USER_ID = "+pageWrap.getModel().getUserId()+" and u.ISDELETED = 0 and u.OBJ_ID = rooms.id and u.OBJ_TYPE = 0  ") | 
|                 .orderByDesc("CREATE_DATE") | 
|         ); | 
|         String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP, Constants.FTP_RESOURCE_PATH).getCode() | 
|                 + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode(); | 
|         page.getRecords().forEach(s->{ | 
|             s.setPrefixUrl(prefixUrl); | 
|   | 
|             MPJLambdaWrapper<UserRel> findUser = new MPJLambdaWrapper<>(); | 
|             findUser.selectAll(UserRel.class); | 
|             findUser.selectAs(SystemUser::getRealname,UserRel::getRealName); | 
|             findUser.eq(UserRel::getIsdeleted,Constants.ZERO); | 
|             findUser.eq(UserRel::getObjId,s.getId()); | 
|             findUser.eq(UserRel::getObjType,Constants.ZERO); | 
|             findUser.leftJoin(SystemUser.class,SystemUser::getId,UserRel::getUserId); | 
|             findUser.orderByDesc(UserRel::getCreateDate); | 
|             List<UserRel> sysList=userRelJoinMapper.selectJoinList(UserRel.class,findUser); | 
|             s.setSysList(sysList); | 
|   | 
|             MPJLambdaWrapper<ProjectRel> findProjectRel = new MPJLambdaWrapper<>(); | 
|             findProjectRel.selectAll(ProjectRel.class); | 
|             findProjectRel.selectAs(Projects::getName,ProjectRel::getProjectName); | 
|             findProjectRel.eq(ProjectRel::getIsdeleted,Constants.ZERO); | 
|             findProjectRel.eq(ProjectRel::getObjId,s.getId()); | 
|             findProjectRel.eq(ProjectRel::getObjType,Constants.ZERO); | 
|             findProjectRel.leftJoin(Projects.class,Projects::getId,ProjectRel::getProjectId); | 
|             List<ProjectRel> projectList=  projectRelJoinMapper.selectJoinList(ProjectRel.class,findProjectRel); | 
|             s.setProjectList(projectList); | 
|   | 
|         }); | 
|         return page; | 
|     } | 
|   | 
|     @Override | 
|     public RoomsResponse getRoomDetail(Integer roomId) { | 
|         RoomsResponse roomsResponse = roomsMapper.myRoomsDetail(roomId); | 
|         if(Objects.isNull(roomsResponse)){ | 
|             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到会议室信息"); | 
|         } | 
|   | 
|         String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP, Constants.FTP_RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode(); | 
|   | 
|         roomsResponse.setPrefixUrl(prefixUrl); | 
|   | 
|         MPJLambdaWrapper<ProjectRel> findProjectRel = new MPJLambdaWrapper<>(); | 
|         findProjectRel.selectAll(ProjectRel.class); | 
|         findProjectRel.selectAs(Projects::getName,ProjectRel::getProjectName); | 
|         findProjectRel.eq(ProjectRel::getIsdeleted,Constants.ZERO); | 
|         findProjectRel.eq(ProjectRel::getObjId,roomsResponse.getId()); | 
|         findProjectRel.eq(ProjectRel::getObjType,Constants.ZERO); | 
|         findProjectRel.innerJoin(Projects.class,Projects::getId,ProjectRel::getProjectId); | 
|         findProjectRel.orderByAsc(Projects::getSortnum); | 
|         List<ProjectRel> projectList=  projectRelJoinMapper.selectJoinList(ProjectRel.class,findProjectRel); | 
|   | 
|         roomsResponse.setProjectList(projectList); | 
|         if(Objects.nonNull(roomsResponse.getFileType()) && !Constants.equalsInteger(roomsResponse.getFileType(),Constants.TWO)){ | 
|             roomsResponse.setMultifileList( | 
|                      multifileJoinMapper.selectList(new QueryWrapper<Multifile>().lambda().eq(Multifile::getObjId,roomsResponse.getId()) | 
|                              .eq(Multifile::getObjType,Constants.FOUR)) | 
|             ); | 
|         } | 
|   | 
|   | 
|         return roomsResponse; | 
|     } | 
|   | 
|   | 
| } |