From c5a0ff2661fe362dddbe88c6a28d19c48c24c39b Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期一, 21 十月 2024 20:39:32 +0800 Subject: [PATCH] 最新版本541200007 --- server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java | 412 +++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 349 insertions(+), 63 deletions(-) diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java b/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java index d9f45e3..19d048f 100644 --- a/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java +++ b/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java @@ -16,6 +16,7 @@ import com.doumee.core.utils.Utils; import com.doumee.core.wx.MeetConstants; import com.doumee.core.wx.SendWxMessage; +import com.doumee.dao.admin.request.BusinessOverDTO; import com.doumee.dao.admin.request.QrOpenDoorDto; import com.doumee.dao.admin.response.DevWgResponseParam; import com.doumee.dao.business.*; @@ -141,7 +142,7 @@ //鍙戦�佷細璁绾︽垚鍔熼�氱煡 this.sendNotice(bookings, MeetConstants.TWO); //鍙戦�佸井淇¤闃呴�氱煡 - sendWxMessage.bookingsReservation(systemUserMapper.selectById(bookings.getCreator()), bookings, roomsMapper.selectById(bookings.getRoomId())); +// sendWxMessage.bookingsReservation(systemUserMapper.selectById(bookings.getCreator()), bookings, roomsMapper.selectById(bookings.getRoomId())); return bookings.getId(); } @@ -188,6 +189,7 @@ bookquery.selectAs(BookingTime::getTimeId, Bookings::getRoomTimeId); bookquery.selectAs(BookingTime::getId, Bookings::getBookingTimeId); bookquery.eq(Bookings::getIsdeleted, MeetConstants.ZERO); + bookquery.eq(BookingTime::getIsdeleted, MeetConstants.ZERO); bookquery.eq(Bookings::getRoomId, bookings.getRoomId()); bookquery.eq(Bookings::getStatus, MeetConstants.ZERO); //bookquery.ge(Bookings::getStartTime, bookings.getStartTime()); @@ -251,14 +253,13 @@ bookings.getBookingTimeList().stream().forEach(s -> { + s.setId(null); s.setCreator(user.getId()); s.setCreateDate(new Date()); s.setIsdeleted(MeetConstants.ZERO); s.setBookingId(bookings.getId()); bookingTimeJoinMapper.insert(s); }); - - } public void updateManager(Bookings bookings, LoginUserInfo user) { @@ -271,16 +272,18 @@ userRel.setIsdeleted(MeetConstants.ONE); userRelJoinMapper.update(userRel, updateWrapper); } - bookings.getSysList().stream().forEach(s -> { - s.setIsdeleted(MeetConstants.ZERO); - s.setCreateDate(new Date()); - s.setCreator(user.getId()); - s.setUserId(s.getUserId()); - s.setObjId(bookings.getId()); - s.setObjType(MeetConstants.ONE); - userRelJoinMapper.insert(s); - }); - + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(bookings.getSysList())){ + bookings.getSysList().stream().forEach(s -> { + s.setId(null); + s.setIsdeleted(MeetConstants.ZERO); + s.setCreateDate(new Date()); + s.setCreator(user.getId()); + s.setUserId(s.getUserId()); + s.setObjId(bookings.getId()); + s.setObjType(MeetConstants.ONE); + userRelJoinMapper.insert(s); + }); + } } public void updateProjectRel(Bookings rooms, LoginUserInfo user) { @@ -294,7 +297,7 @@ projectRelJoinMapper.update(projectRel, updateWrapper); rooms.getProjectList().stream().forEach(s -> { - + s.setId(null); s.setIsdeleted(MeetConstants.ZERO); s.setCreateDate(new Date()); s.setCreator(user.getId()); @@ -461,18 +464,59 @@ queryWrapper.selectAs(Rooms::getName, Bookings::getRoomName); queryWrapper.selectAs(SystemUser::getRealname, Bookings::getRealName); queryWrapper.selectAs(Company::getName, Bookings::getDepartmentName); - + queryWrapper.select(" CASE WHEN t.START_TIME_REAL IS NULL AND t.`STATUS` = 0 THEN 1 WHEN ( ( t.END_TIME < now() AND t.`STATUS` = 0 ) or t.`STATUS` = 2 ) THEN 3 WHEN t.`STATUS` = 1 THEN 5 ELSE 2 END meetingStatus "); queryWrapper.leftJoin(Rooms.class, Rooms::getId, Bookings::getRoomId); queryWrapper.leftJoin(SystemUser.class, SystemUser::getId, Bookings::getCreator); queryWrapper.leftJoin(Company.class,Company::getId,SystemUser::getCompanyId); queryWrapper.orderByDesc(Bookings::getCreateDate); queryWrapper.eq(Bookings::getIsdeleted, MeetConstants.ZERO); + //鏁版嵁鏉冮檺寮�濮�--------------------start---------------- + LoginUserInfo userInfo =pageWrap.getModel().getLoginUserInfo(); + if(userInfo!=null && userInfo.getCompanyIdList()!=null){ + if( userInfo.getCompanyIdList().size() ==0){ + //鍙湅鑷繁 + queryWrapper.and(wrapper ->{ + wrapper.eq(Bookings::getCreator,userInfo.getId()) + .or().exists("select rel.id from meeting_user_rel rel where rel.OBJ_TYPE=0 and rel.obj_id=t.id and rel.isdeleted=0 and rel.user_id="+userInfo.getId()); + }); + queryWrapper.eq(Bookings::getCreator,userInfo.getId()); + }else{ + //鏉冮檺鑼冨洿鍐� + queryWrapper.and(wrapper ->{ + wrapper.in(SystemUser::getCompanyId ,userInfo.getCompanyIdList()) + .or().exists("select rel.id from meeting_user_rel rel where rel.OBJ_TYPE=0 and rel.obj_id=t.id and rel.isdeleted=0 and rel.user_id="+userInfo.getId()); + }); + } + } + //鏁版嵁鏉冮檺寮�濮�--------------------end---------------- + queryWrapper.eq(pageWrap.getModel().getRoomId() != null, Bookings::getRoomId, pageWrap.getModel().getRoomId()); queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getName()), Bookings::getName, pageWrap.getModel().getName()); queryWrapper.eq(pageWrap.getModel().getStatus() != null, Bookings::getStatus, pageWrap.getModel().getStatus()); queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getRealName()), SystemUser::getRealname, pageWrap.getModel().getRealName()); - queryWrapper.eq(pageWrap.getModel().getDepartmentId() != null, SystemUser::getId, pageWrap.getModel().getDepartmentId()); + queryWrapper.eq(pageWrap.getModel().getDepartmentId() != null, Company::getId, pageWrap.getModel().getDepartmentId()); + + queryWrapper.apply(Objects.nonNull(pageWrap.getModel().getMeetingStatus()) + &&Constants.equalsInteger(pageWrap.getModel().getMeetingStatus(),Constants.ONE), + " ( now() < t.START_TIME and t.status = 0 ) " + ) + .apply(Objects.nonNull(pageWrap.getModel().getMeetingStatus()) + &&Constants.equalsInteger(pageWrap.getModel().getMeetingStatus(),Constants.TWO), + " ( now() >= t.START_TIME and t.END_TIME >= now() and t.status = 0 ) " + ) + .apply(Objects.nonNull(pageWrap.getModel().getMeetingStatus()) + &&Constants.equalsInteger(pageWrap.getModel().getMeetingStatus(),Constants.THREE), + " ( ( now() > t.END_TIME and t.`STATUS` = 0 ) or t.`STATUS` = 2 ) " + ) + .apply(Objects.nonNull(pageWrap.getModel().getMeetingStatus()) + &&Constants.equalsInteger(pageWrap.getModel().getMeetingStatus(),Constants.FOUR), + " now() < t.START_TIME AND SUBDATE( t.START_TIME, INTERVAL 120 MINUTE ) < NOW() " + ) + .apply(Objects.nonNull(pageWrap.getModel().getMeetingStatus()) + &&Constants.equalsInteger(pageWrap.getModel().getMeetingStatus(),Constants.FIVE), + " t.STATUS = 1 " + ); if (pageWrap.getModel().getStartTime() != null) { queryWrapper.ge(Bookings::getStartTime, pageWrap.getModel().getStartTime()); @@ -489,6 +533,15 @@ SimpleDateFormat format1 = new SimpleDateFormat("HH:mm"); IPage<Bookings> result = bookingsJoinMapper.selectJoinPage(page, Bookings.class, queryWrapper); result.getRecords().stream().forEach(s -> { + + if(s.getMeetingStatus().equals(Constants.ZERO)){ + if(s.getMeetingStatus()==Constants.ONE){ + //寮�濮嬪墠120鍒嗛挓 澶т簬褰撳墠鏃堕棿 鍒欐樉绀哄嵆灏嗗紑濮� + if(DateUtil.afterMinutesDate(s.getStartTime(),-120).getTime()>System.currentTimeMillis()){ + s.setMeetingStatus(4); + } + } + } MPJLambdaWrapper<Multifile> bookquery = new MPJLambdaWrapper<>(); bookquery.eq(Multifile::getIsdeleted, MeetConstants.ZERO); bookquery.eq(Multifile::getObjId, s.getId()); @@ -764,41 +817,50 @@ */ @Override public IPage<MeetingListResponse> getMyMeetingPage(PageWrap<MeetingPageRequest> pageWrap) { - IPage<MeetingListResponse> page = bookingsMapper.myMeetingPage(pageWrap.toPage(), new QueryWrapper<MeetingListResponse>() + + QueryWrapper queryWrapper = new QueryWrapper<MeetingListResponse>() .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(MeetConstants.ONE) && !Objects.isNull(pageWrap.getModel().getUserId()), - " select 1 from meeting_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(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(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", 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 path = systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.FTP_RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode(); - page.getRecords().forEach(i -> { - i.setPrefixUrl(path); - if(i.getMeetingStatus().equals(Constants.ZERO)){ - if(i.getStatus()==Constants.ONE){ - i.setMeetingStatus(5); - }else{ - //寮�濮嬪墠5鍒嗛挓 澶т簬褰撳墠鏃堕棿 鍒欐樉绀哄嵆灏嗗紑濮� - if(DateUtil.afterMinutesDate(i.getStartTime(),-5).getTime()>System.currentTimeMillis()){ - i.setMeetingStatus(4); - } - } + .exists(pageWrap.getModel().getQueryType().equals(MeetConstants.ONE) && !Objects.isNull(pageWrap.getModel().getUserId()), + " select 1 from meeting_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(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(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", MeetConstants.ONE)) + .eq("b.ISDELETED",MeetConstants.ZERO) + .eq("b.STATUS",MeetConstants.ZERO) + .eq("a.ISDELETED",MeetConstants.ZERO) + .apply(Objects.nonNull(pageWrap.getModel().getMeetingStatus()) + &&Constants.equalsInteger(pageWrap.getModel().getMeetingStatus(),Constants.ONE), + " ( now() < a.START_TIME and a.status = 0 ) " + ) + .apply(Objects.nonNull(pageWrap.getModel().getMeetingStatus()) + &&Constants.equalsInteger(pageWrap.getModel().getMeetingStatus(),Constants.TWO), + " ( now() >= a.START_TIME and a.END_TIME >= now() and a.status = 0 ) " + ) + .apply(Objects.nonNull(pageWrap.getModel().getMeetingStatus()) + &&Constants.equalsInteger(pageWrap.getModel().getMeetingStatus(),Constants.THREE), + " ( ( now() > a.END_TIME and a.`STATUS` = 0 ) or a.`STATUS` = 2 ) " + ) + .apply(Objects.nonNull(pageWrap.getModel().getMeetingStatus()) + &&Constants.equalsInteger(pageWrap.getModel().getMeetingStatus(),Constants.FOUR), + " now() < a.START_TIME AND SUBDATE( a.START_TIME, INTERVAL 120 MINUTE ) < NOW() " + ) + .apply(Objects.nonNull(pageWrap.getModel().getMeetingStatus()) + &&Constants.equalsInteger(pageWrap.getModel().getMeetingStatus(),Constants.FIVE), + " a.STATUS = 1 " + ) +// .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") + .orderByDesc(Constants.equalsInteger(pageWrap.getModel().getQueryType(),MeetConstants.TWO),"a.CREATE_DATE") + .orderByAsc(Constants.equalsInteger(pageWrap.getModel().getQueryType(),MeetConstants.ONE),"a.START_TIME"); - } - - }); + IPage<MeetingListResponse> page = bookingsMapper.myMeetingPage(pageWrap.toPage(), queryWrapper); + this.dealMeetingStatus(page.getRecords()); return page; } @@ -820,7 +882,7 @@ if(Objects.isNull(bookings)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } - return getMeetingDetail(bookings.getId()); + return getMeetingDetail(bookings.getId(),null); }catch (Exception e){ e.printStackTrace(); } @@ -837,7 +899,7 @@ * @return */ @Override - public MeetingDetailResponse getMeetingDetail(Integer id) { + public MeetingDetailResponse getMeetingDetail(Integer id,Integer sysUserId) { MeetingDetailResponse meetingDetailResponse = bookingsMapper.meetingDetail(id); if (Objects.isNull(meetingDetailResponse)) { throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "鏈煡璇㈠埌浼氳璇︽儏"); @@ -849,9 +911,7 @@ .eq("BOOKING_ID", id) .eq("ISDELETED", MeetConstants.ZERO) )); - //鍙備細浜哄憳鍒楄〃 - List<UserResponse> userResponseList = systemUserService.getUserList(id); String avatarPath = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode(); @@ -884,9 +944,18 @@ .eq("OBJ_ID", meetingDetailResponse.getRoomId()) .eq("OBJ_TYPE",MeetConstants.ZERO) ); + if(Constants.equalsInteger(sysUserId,meetingDetailResponse.getBookingUserId())){ + meetingDetailResponse.setIsAdmin(Constants.ONE); + } if (!Objects.isNull(userRelList) && userRelList.size() > 0) { meetingDetailResponse.setRoomUser(systemUserService.findById(userRelList.get(MeetConstants.ZERO).getUserId())); + if( Objects.nonNull(sysUserId) && + userRelList.stream().filter(i->Constants.equalsInteger(i.getUserId(),sysUserId)).collect(Collectors.toList()).size()>Constants.ZERO + ){ + meetingDetailResponse.setIsAdmin(Constants.ONE); + } } + return meetingDetailResponse; } @@ -934,36 +1003,253 @@ /** * 浼氳棰勭害璁板綍鍙栨秷 - * - * @param id - * @param userId */ @Override @Transactional(rollbackFor = {Exception.class,BusinessException.class}) - public void reservationCancel(Integer id, Integer userId) { - Bookings bookings = bookingsMapper.selectById(id); + public void reservationCancel(BusinessOverDTO businessOverDTO) { + Bookings bookings = bookingsMapper.selectById(businessOverDTO.getId()); if (Objects.isNull(bookings)) { throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "鏈煡璇㈠埌棰勭害璁板綍"); } - if (!bookings.getCreator().equals(userId)) { + if (!bookings.getCreator().equals(businessOverDTO.getUserId())) { throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "闈炰綘鐨勯绾﹁褰�,鏃犳硶杩涜鍙栨秷"); } - if (System.currentTimeMillis() > bookings.getStartTime().getTime()) { + if (Objects.nonNull(bookings.getStartTimeReal()) && System.currentTimeMillis() > bookings.getStartTimeReal().getTime()) { throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "浼氳宸插紑濮�,鏃犳硶杩涜鍙栨秷"); } if(bookings.getStatus().equals(MeetConstants.ONE)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鏈鎿嶄綔澶辫触,棰勭害鐘舵�佸凡娴佽浆"); } bookings.setCancelTime(new Date()); - bookings.setCancelUser(userId); + bookings.setCancelUser(businessOverDTO.getUserId()); + bookings.setCancelInfo(businessOverDTO.getBusinessRemark()); bookings.setStatus(MeetConstants.ONE); bookings.setEditDate(new Date()); - bookings.setEditor(userId); + bookings.setEditor(businessOverDTO.getUserId()); bookingsMapper.updateById(bookings); //鍙栨秷浼氳 鍙戦�佸彇娑堥�氱煡 this.sendNotice(bookings, 3); //鍙戦�佸井淇¤闃呴�氱煡 - sendWxMessage.bookingsCancel(systemUserMapper.selectById(bookings.getCreator()), bookings, roomsMapper.selectById(bookings.getRoomId())); +// sendWxMessage.bookingsCancel(systemUserMapper.selectById(bookings.getCreator()), bookings, roomsMapper.selectById(bookings.getRoomId())); + } + + + @Override + @Transactional(rollbackFor = {Exception.class,BusinessException.class}) + public void reservationOver(BusinessOverDTO businessOverDTO) { + if(Objects.isNull(businessOverDTO) + || Objects.isNull(businessOverDTO.getUserId()) + || Objects.isNull(businessOverDTO.getId()) + ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + Bookings bookings = bookingsMapper.selectById(businessOverDTO.getId()); + if (Objects.isNull(bookings)) { + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "鏈煡璇㈠埌棰勭害璁板綍"); + } + Long userRelList = userRelMapper.selectCount(new QueryWrapper<UserRel>().lambda() + .eq(UserRel::getIsdeleted,Constants.ZERO) + .eq(UserRel::getObjId,bookings.getRoomId()) + .eq(UserRel::getObjType,Constants.ZERO) + .eq(UserRel::getUserId,businessOverDTO.getUserId())); + + if (!bookings.getCreator().equals(businessOverDTO.getUserId()) && userRelList <= 0) { + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "闈炰綘鐨勯绾﹁褰�,鏃犳硶杩涜璇ユ搷浣�"); + } + if (System.currentTimeMillis() < bookings.getStartTimeReal().getTime()) { + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "浼氳鏈紑濮�,鏃犳硶杩涜缁撴潫锛屽闇�璇ユ搷浣滆浣跨敤鍙栨秷鍔熻兘"); + } + if (System.currentTimeMillis() > bookings.getEndTime().getTime()) { + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "浼氳宸茬粨鏉燂紝鏃犳硶杩涜璇ユ搷浣�"); + } + if(!bookings.getStatus().equals(MeetConstants.ZERO)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鏈鎿嶄綔澶辫触,浼氳鐘舵�佸凡娴佽浆"); + } + bookings.setDoneDate(new Date()); + bookings.setDoneUserId(businessOverDTO.getUserId()); + bookings.setStatus(MeetConstants.TWO); + bookings.setEditDate(new Date()); + bookings.setEditor(businessOverDTO.getUserId()); + bookingsMapper.updateById(bookings); + + //鏌ヨ鎵�鏈夌殑棰勭害鏃堕棿 + List<BookingTime> bookingTimeList = bookingTimeJoinMapper.selectJoinList(BookingTime.class, + new MPJLambdaWrapper<BookingTime>() + .selectAll(BookingTime.class) + .selectAs(RoomTime::getEndTime,BookingTime::getEndTime) + .leftJoin(RoomTime.class,RoomTime::getId,BookingTime::getTimeId) + .eq(BookingTime::getBookingId,bookings.getId())); + //鑾峰彇褰撳ぉ 鍙湁褰撳ぉ鏃ユ湡鍐呭彲浠ュ鐞� + String today = DateUtil.dateToString(new Date(),"yyyy-mm-dd"); + //寰幆鏍囪鏁版嵁涓哄凡鍒犻櫎 涓嶅啀鍗犵敤 + for (BookingTime bookingTime:bookingTimeList) { + if(DateUtil.getDateFromString(today + " " + bookingTime.getEndTime() +":00").getTime()>System.currentTimeMillis()){ + bookingTime.setIsdeleted(Constants.ZERO); + bookingTimeJoinMapper.updateById(bookingTime); + } + } + } + + /** + * 姝e父寮�濮� + * @param businessOverDTO + */ + @Override + @Transactional(rollbackFor = {Exception.class,BusinessException.class}) + public void start(BusinessOverDTO businessOverDTO) { + this.startEarly(businessOverDTO); + } + + /** + * 鎻愬墠寮�濮� + * @param businessOverDTO + */ + @Override + @Transactional(rollbackFor = {Exception.class,BusinessException.class}) + public void startEarly(BusinessOverDTO businessOverDTO) { + if(Objects.isNull(businessOverDTO) + || Objects.isNull(businessOverDTO.getUserId()) + || Objects.isNull(businessOverDTO.getStartType()) + || Objects.isNull(businessOverDTO.getId()) + ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + Bookings bookings = bookingsMapper.selectById(businessOverDTO.getId()); + if (Objects.isNull(bookings)) { + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "鏈煡璇㈠埌棰勭害璁板綍"); + } + Long userRelList = userRelMapper.selectCount(new QueryWrapper<UserRel>().lambda() + .eq(UserRel::getIsdeleted,Constants.ZERO) + .eq(UserRel::getObjId,bookings.getRoomId()) + .eq(UserRel::getObjType,Constants.ZERO) + .eq(UserRel::getUserId,businessOverDTO.getUserId())); + + if (!bookings.getCreator().equals(businessOverDTO.getUserId()) && userRelList <= 0) { + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "闈炰綘鐨勯绾﹁褰�,鏃犳硶杩涜璇ユ搷浣�"); + } + if(!Constants.equalsInteger(bookings.getStatus(),Constants.ZERO)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "浼氳鐘舵�佸凡娴佽浆锛屾棤娉曡繘琛岃鎿嶄綔"); + } + if(Objects.nonNull(bookings.getStartTimeReal())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "浼氳宸插紑濮嬶紝璇峰嬁閲嶅鎿嶄綔"); + } + if (System.currentTimeMillis() > bookings.getEndTime().getTime()) { + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "浼氳宸茬粨鏉燂紝鏃犳硶杩涜璇ユ搷浣�"); + } + if(Constants.equalsInteger(businessOverDTO.getStartType(),Constants.ZERO)){ + //鏍规嵁閰嶇疆鑾峰彇鎻愬墠寮�濮嬬殑鍒嗛挓鏁伴噺 + String configMinute = systemDictDataBiz.queryByCode(MeetConstants.SYSTEM, MeetConstants.EARLY_START).getCode(); + Integer beforeMinutes = StringUtils.isNotBlank(configMinute) ? Integer.valueOf(configMinute) : 120; + if(DateUtil.afterMinutesDate(bookings.getStartTime(),-beforeMinutes).getTime()>System.currentTimeMillis()){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"浼氳浠呭彲浠ユ彁鍓�"+beforeMinutes+"鍒嗛挓寮�濮�"); + } + //鏌ヨ鏄惁瀛樺湪鍏朵粬鏈紑濮嬬殑浼氳 闃叉棰楃矑搴︿笌鎻愬墠寮�濮嬬殑闂 + if(bookingsMapper.selectCount(new QueryWrapper<Bookings>() + .lambda() + .apply(" now() < START_TIME and END_TIME <= '" + DateUtil.DateToStr(bookings.getStartTime(),"yyyy-MM-dd HH:mm:ss") +"'" ) + .isNull(Bookings::getStartTimeReal) + .isNull(Bookings::getDoneDate) + .eq(Bookings::getStatus,Constants.ZERO) + .eq(Bookings::getRoomId,bookings.getRoomId()) + .ne(Bookings::getId,bookings.getId()) + )>Constants.ZERO){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀛樺湪鏈紑鍚細璁紝鏃犳硶寮�濮嬩細璁�"); + }; + + if(bookingsMapper.selectCount(new QueryWrapper<Bookings>() + .lambda() + .apply(" ( ( END_TIME > now() and START_TIME < now() ) or ( END_TIME > now() and START_TIME_REAL < now() ) ) ") + .isNotNull(Bookings::getStartTimeReal) + .isNull(Bookings::getDoneDate) + .eq(Bookings::getStatus,Constants.ZERO) + .eq(Bookings::getRoomId,bookings.getRoomId()) + )>Constants.ZERO){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠寮�鍚椂闂翠笌鍏朵粬浼氳瀛樺湪鍐茬獊锛屾棤娉曞紑濮嬩細璁�"); + }; + }else{ + if(bookings.getStartTime().getTime() > System.currentTimeMillis()){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏈埌浼氳鐢宠寮�濮嬫椂闂达紝鏃犳硶寮�濮�"); + } + } + bookings.setStartTimeReal(new Date()); + bookings.setEditDate(new Date()); + bookings.setEditor(businessOverDTO.getUserId()); + bookingsMapper.updateById(bookings); + //鏇存柊宸茬粨鏉熶絾鏈粨鏉熺殑浼氳淇℃伅涓哄凡缁撴潫 + bookingsMapper.update(null,new UpdateWrapper<Bookings>() + .lambda() + .set(Bookings::getStatus,Constants.TWO) + .set(Bookings::getDoneDate,new Date()) + .set(Bookings::getDoneInfo,"鍏朵粬浼氳寮�濮嬶紝鑷姩鍏抽棴") + .apply(" ( END_TIME < now() or ( END_TIME > now() and START_TIME < now() and START_TIME_REAL is null ) )") + .eq(Bookings::getStatus,Constants.ZERO) + .eq(Bookings::getRoomId,bookings.getRoomId()) + ); + + } + + + @Override + public RoomDetailResponse getRoomDetail(Integer roomId){ + Rooms rooms = roomsMapper.selectById(roomId); + if(Objects.isNull(rooms) || !Constants.equalsInteger(rooms.getIsdeleted(),Constants.ZERO) + || !Constants.equalsInteger(rooms.getStatus(),Constants.ZERO)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"浼氳瀹や俊鎭棤鏁堬紝璇疯仈绯荤鐞嗗憳"); + } + RoomDetailResponse response = new RoomDetailResponse(); + response.setRoomName(rooms.getName()); + response.setFileType(rooms.getFileType()); + + List<Multifile> multifileList = multifileJoinMapper.selectList(new QueryWrapper<Multifile>().lambda() + .eq(Multifile::getObjId,roomId) + .eq(Multifile::getObjType,Constants.FOUR) + ); + + String prefix = systemDictDataBiz.queryByCode(MeetConstants.SYSTEM, MeetConstants.MEET_CODE_PREFIX).getCode() ; + response.setPrefix(prefix); + + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){ + String path = systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.FTP_RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode(); + for (Multifile multifile:multifileList) { + multifile.setFileurlFull(path + multifile.getFileurl()); + } + response.setMultifileList(multifileList); + } + + //鏌ヨ浼氳鍒楄〃 + List<MeetingListResponse> meetingList = bookingsMapper.meetingList( + new QueryWrapper<Bookings>() + .eq( "b.id", rooms.getId()) + .eq("b.ISDELETED",MeetConstants.ZERO) + .eq("b.STATUS",MeetConstants.ZERO) + .eq("a.ISDELETED",MeetConstants.ZERO) + .eq("a.status",Constants.ZERO) + .ne("a.status",Constants.TWO) + .like("a.start_time",DateUtil.getCurrDate()) + .apply(" not exists ( select 1 from meeting_book mb where mb.END_TIME < now() and mb.id = a.id and START_TIME_REAL is null ) ") + .orderByAsc("a.start_time") + ); + this.dealMeetingStatus(meetingList); + response.setMeetingListResponseList(meetingList); + return response; + } + + + public void dealMeetingStatus(List<MeetingListResponse> meetingResponseList){ + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(meetingResponseList)){ + String path = systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.FTP_RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode(); + String configMinute = systemDictDataBiz.queryByCode(MeetConstants.SYSTEM, MeetConstants.SOON_START).getCode(); + Integer minute = StringUtils.isNotBlank(configMinute) ? Integer.valueOf(configMinute) : 120; + for (MeetingListResponse m:meetingResponseList) { + if(Constants.equalsInteger(m.getStatus(),Constants.ZERO)&&Constants.equalsInteger(m.getMeetingStatus(),Constants.ONE)){ + //寮�濮嬪墠120鍒嗛挓 澶т簬褰撳墠鏃堕棿 鍒欐樉绀哄嵆灏嗗紑濮� + if(DateUtil.afterMinutesDate(m.getStartTime(),-minute).getTime()>System.currentTimeMillis()){ + m.setMeetingStatus(4); + } + } + m.setPrefixUrl(path); + } + } } @@ -989,7 +1275,7 @@ bookingsMapper.updateById(bookings); this.sendNotice(bookings, MeetConstants.ONE); //鍙戦�佸井淇¢�氱煡 - sendWxMessage.bookingsStart(systemUserMapper.selectById(bookings.getCreator()), bookings, roomsMapper.selectById(bookings.getRoomId())); +// sendWxMessage.bookingsStart(systemUserMapper.selectById(bookings.getCreator()), bookings, roomsMapper.selectById(bookings.getRoomId())); } } @@ -1026,7 +1312,7 @@ Notices notices = new Notices(noticeObjectType,bookings.getId(),noticeObjectType.getInfo(),bookings.getCreator(), Constants.ZERO); noticeList.add(notices); if(noticeList.size()>0){ - noticesMapper.insertBatchSomeColumn(noticeList); + noticesMapper.insert(noticeList); } } -- Gitblit v1.9.3