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 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 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 queryBooke = new MPJLambdaWrapper<>(); queryBooke.eq(Bookings::getIsdeleted, Constants.ZERO); queryBooke.eq(Bookings::getRoomId, roomsId); queryBooke.eq(Bookings::getStatus, Constants.ZERO); List 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> list = new ArrayList<>(); while (starttime.before(endtime)) { Map 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 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 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 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 deleteWrapper = new UpdateWrapper<>(rooms); roomsMapper.delete(deleteWrapper); } @Override public void deleteByIdInBatch(List 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.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::getImgurl, rooms.getImgurl()) .eq(Rooms::getId, rooms.getId())); multifileJoinMapper.delete(new QueryWrapper().lambda() .eq(Multifile::getObjId,rooms.getId()) .eq(Multifile::getObjType,Constants.FOUR) ); if(!Constants.equalsInteger(rooms.getFileType(),Constants.TWO)){ List 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 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 wrapper = new QueryWrapper<>(rooms); return roomsMapper.selectOne(wrapper); } @Override public List findList(Rooms rooms) { MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); wrapper.eq(Rooms::getIsdeleted,Constants.ZERO); wrapper.eq(rooms.getStatus()!=null,Rooms::getStatus,rooms.getStatus()); wrapper.orderByDesc(Rooms::getCreateDate); List list=roomsJoinMapper.selectList(wrapper); /* if(list!=null){ list.stream().forEach(s ->{ MPJLambdaWrapper findrt = new MPJLambdaWrapper<>(); findrt.eq(RoomTime::getIsdeleted, Constants.ZERO); findrt.eq(RoomTime::getRoomId, s.getId()); List list1= roomTimeJoinMapper.selectList(findrt); s.setRoomTimeList(list1); }); }*/ return list; } @Override public PageData findPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); queryWrapper.selectAll(Rooms.class); 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 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 result = roomsJoinMapper.selectJoinPage(page, Rooms.class, queryWrapper); result.getRecords().stream().forEach(s ->{ if(StringUtils.isNotBlank(s.getImgurl())){ s.setImgFullUrl(path+s.getImgurl()); } MPJLambdaWrapper 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 sysList=userRelJoinMapper.selectJoinList(UserRel.class,finduser); s.setSysList(sysList); MPJLambdaWrapper 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 projectLisr= projectRelJoinMapper.selectJoinList(ProjectRel.class,findpr); s.setProjectList(projectLisr); if(!Constants.equalsInteger(s.getFileType(),Constants.TWO)){ List multifileList = multifileJoinMapper.selectList(new QueryWrapper().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 wrapper = new QueryWrapper<>(rooms); return roomsMapper.selectCount(wrapper); } /****************************************移动端接口开始********************************************************************/ @Override public List getRoomsList() { return roomsMapper.getRoomsList(new QueryWrapper() .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 getRoomsPage(PageWrap pageWrap) { IPage page = roomsMapper.myRoomsPage(pageWrap.toPage(),new QueryWrapper() .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 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 sysList=userRelJoinMapper.selectJoinList(UserRel.class,findUser); s.setSysList(sysList); MPJLambdaWrapper 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 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 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 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().lambda().eq(Multifile::getObjId,roomsResponse.getId()) .eq(Multifile::getObjType,Constants.FOUR)) ); } return roomsResponse; } }