From 10c28ce3d0b384584c77ce9111a66a0641250752 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期四, 27 二月 2025 18:30:32 +0800 Subject: [PATCH] 最新版本541200007 --- server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java | 933 +++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 819 insertions(+), 114 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 7e56c59..a97b557 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 @@ -1,5 +1,6 @@ package com.doumee.service.business.impl; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -7,18 +8,21 @@ import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; -import com.doumee.core.model.LoginUserInfo; -import com.doumee.core.model.PageData; -import com.doumee.core.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.dao.business.dao.MemberMapper; +import com.doumee.dao.business.dao.UserActionMapper; +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.*; import com.doumee.core.wx.MeetConstants; import com.doumee.core.wx.SendWxMessage; +import com.doumee.core.wx.WxPlatNotice; +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.*; +import com.doumee.dao.business.dao.SmsConfigMapper; +import com.doumee.dao.business.dao.SmsEmailMapper; import com.doumee.dao.business.join.*; import com.doumee.dao.business.model.*; import com.doumee.dao.business.vo.RoomStatisticsVo; @@ -27,15 +31,18 @@ import com.doumee.dao.system.dto.UserStatisticsDTO; import com.doumee.dao.system.join.NoticesJoinMapper; import com.doumee.dao.system.model.*; +import com.doumee.dao.system.vo.UserResponse; 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.request.UserPageRequest; import com.doumee.dao.web.response.*; 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 lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.BeanUtils; @@ -46,12 +53,14 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import java.awt.print.Book; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.temporal.TemporalAdjusters; import java.util.*; +import java.util.Date; import java.util.stream.Collectors; /** @@ -61,6 +70,7 @@ * @date 2023/05/04 18:18 */ @Service +@Slf4j public class BookingsServiceImpl implements BookingsService { @Value("${des_pwd}") @@ -68,15 +78,20 @@ @Autowired private BookingsMapper bookingsMapper; @Autowired + private SmsConfigMapper smsConfigMapper; + @Autowired private SystemUserMapper systemUserMapper; @Autowired private RoomRecordMapper roomRecordMapper; + @Autowired private BookingsJoinMapper bookingsJoinMapper; @Autowired private RoomsMapper roomsMapper; + @Autowired + private UserActionMapper userActionMapper; @Autowired private ProjectRelJoinMapper projectRelJoinMapper; @Autowired @@ -104,6 +119,8 @@ @Autowired private NoticesJoinMapper noticesMapper; + @Autowired + private SmsEmailMapper smsEmailMapper; @Autowired private UserRelMapper userRelMapper; @@ -120,14 +137,19 @@ @Override @Transactional(rollbackFor = {BusinessException.class, Exception.class}) public Integer create(Bookings bookings) { - LoginUserInfo user = new LoginUserInfo(); - user.setId(bookings.getCreator()); + LoginUserInfo user = bookings.getLoginUserInfo(); + Rooms rooms = roomsMapper.selectById(bookings.getRoomId()); + if(rooms==null ){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝璇ヤ細璁鏆傛椂鏃犳硶棰勭害"); + } + bookings.setRoomName(rooms.getName()); isCreateParamValid(bookings, user); bookings.setCreateDate(new Date()); bookings.setCreator(user.getId()); bookings.setIsdeleted(MeetConstants.ZERO); bookings.setStatus(MeetConstants.ZERO); bookingsMapper.insert(bookings); + bookings.setManagerInfo(user.getRealname()); //鏇存柊浼氳瀹ら瀹氭椂闂存 updateBookingTimes(bookings, user); //娣诲姞绠$悊浜哄憳 @@ -136,9 +158,17 @@ updateProjectRel(bookings, user); handleFile(bookings, user); //鍙戦�佷細璁绾︽垚鍔熼�氱煡 - this.sendNotice(bookings, MeetConstants.TWO); - //鍙戦�佸井淇¤闃呴�氱煡 - sendWxMessage.bookingsReservation(systemUserMapper.selectById(bookings.getCreator()), bookings, roomsMapper.selectById(bookings.getRoomId())); + if(Constants.equalsInteger(bookings.getJoinNotice(),Constants.ZERO)){ + this.sendNotice(bookings, MeetConstants.TWO); + SystemUser systemUser = systemUserMapper.selectById(user.getId()); + this.sendWxNotice(bookings,Objects.isNull(systemUser)||StringUtils.isBlank(systemUser.getOpenid())?null:systemUser.getOpenid(),Constants.ZERO); + //鍒涘缓浼氳鍗冲皢鍒版湡涓庝細璁嵆灏嗙粨鏉熺殑閫氱煡 + if(Objects.nonNull(systemUser)&&StringUtils.isNotBlank(systemUser.getOpenid())){ + WxPlatNotice wxPlatNotice = new WxPlatNotice(); + wxPlatNotice.createBeginWxNotice(systemDictDataBiz,smsEmailMapper,bookings,systemUser.getOpenid()); + wxPlatNotice.createEndWxNotice(systemDictDataBiz,smsEmailMapper,bookings,systemUser.getOpenid()); + } + } return bookings.getId(); } @@ -175,6 +205,10 @@ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage()); } + if(Objects.nonNull(bookings.getId())){ + return; + } + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd"); String gsDate = format1.format(bookings.getStartTime()); @@ -185,6 +219,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()); @@ -196,8 +231,15 @@ List<Bookings> bookList = bookingsJoinMapper.selectJoinList(Bookings.class, bookquery); for (int i = 0; i < bookings.getBookingTimeList().size(); i++) { BookingTime s = bookings.getBookingTimeList().get(i); + RoomTime roomTime = roomTimeJoinMapper.selectById(s.getTimeId()); + if(Objects.isNull(roomTime)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀛樺湪鏈煡璇㈠埌鐨勯厤缃棩鏈燂紝璇峰埛鏂伴噸璇�"); + } + String endRoomTime = gsDate + " " + roomTime.getEndTime()+":00"; + if(DateUtil.StringToDate(endRoomTime, "yyyy-MM-dd HH:mm:ss").getTime()<=System.currentTimeMillis()){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),endRoomTime + "宸茶秴杩囧綋鍓嶆椂闂达紝鏃犳硶杩涜棰勭害"); + } if (!Objects.isNull(bookList) && bookList.size() > MeetConstants.ZERO) { - List<Bookings> detailDataDtoStream = bookList.stream().filter(a -> MeetConstants.equalsInteger(s.getTimeId(), a.getRoomTimeId()) ).collect(Collectors.toList()); @@ -211,7 +253,6 @@ .filter(a -> MeetConstants.equalsInteger(a.getRoomTimeId(), s.getTimeId())) .collect(Collectors.toList()); if (chriList.size() > 0) { - RoomTime roomTime = roomTimeJoinMapper.selectById(s.getTimeId()); throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "璇ヤ細璁細" + roomTime.getStartTime() + "-" + roomTime.getEndTime() + "鏃堕棿娈靛唴宸茶浣跨敤"); } } else { @@ -221,7 +262,6 @@ .filter(a -> MeetConstants.equalsInteger(a.getRoomTimeId(), s.getTimeId())) .collect(Collectors.toList()); if (chriList.size() > 0) { - RoomTime roomTime = roomTimeJoinMapper.selectById(s.getTimeId()); throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "璇ヤ細璁細" + roomTime.getStartTime() + "-" + roomTime.getEndTime() + "鏃堕棿娈靛唴宸茶浣跨敤"); } } @@ -243,14 +283,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) { @@ -263,16 +302,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) { @@ -286,7 +327,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()); @@ -299,25 +340,50 @@ } @Override - public void deleteById(Integer id) { - LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + public void deleteById(Integer id,LoginUserInfo user) { + Bookings model = bookingsMapper.selectById(id); + if(model==null ||Constants.equalsInteger(Constants.ONE,model.getIsdeleted())) { + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + + Date date = new Date(); Bookings bookings = new Bookings(); bookings.setId(id); bookings.setIsdeleted(MeetConstants.ONE); - bookings.setEditDate(new Date()); + bookings.setEditDate(date); bookings.setEditor(user.getId()); bookingsMapper.updateById(bookings); + + String[] params = new String[3]; + params[0] = user.getRealname(); + params[1]=DateUtil.getPlusTime2(date); + params[2]=model.getName()+"-銆愪細璁锛�"+model.getRoomName()+" 銆�-銆愭椂闂达細"+DateUtil.getPlusTime2(model.getStartTime())+"-"+DateUtil.getPlusTime2(model.getEndTime())+"銆�"; + String info = Constants.UserActionType.MEET_BOOK_DEL.getInfo(); + if(params!=null){ + for (int i = 0; i < params.length; i++) { + info = info.replace("${param"+(i+1)+"}",params[i]); + } + } + UserAction userAction=new UserAction(); + userAction.setIsdeleted(Constants.ZERO); + userAction.setCreateDate(date); + userAction.setCreator(user.getId()); + userAction.setBeforeStatus(Constants.ZERO); + userAction.setType( Constants.UserActionType.MEET_BOOK_DEL.getKey()); + userAction.setContent(JSONObject.toJSONString(model)); + userAction.setRemark(info); + userAction.setMemberId(id+""); + userActionMapper.insert(userAction); } @Override - public void delete(Bookings bookings) { + public void delete(Bookings bookings,LoginUserInfo user) { UpdateWrapper<Bookings> deleteWrapper = new UpdateWrapper<>(bookings); bookingsMapper.delete(deleteWrapper); } @Override - public void deleteByIdInBatch(List<Integer> ids) { - LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + public void deleteByIdInBatch(List<Integer> ids,LoginUserInfo user) { if (CollectionUtils.isEmpty(ids)) { return; } @@ -349,12 +415,18 @@ if(dbBookings.getStatus().equals(MeetConstants.ONE)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鏈鎿嶄綔澶辫触,棰勭害鐘舵�佸凡娴佽浆"); } - LoginUserInfo user = new LoginUserInfo(); - user.setId(bookings.getCreator()); + Rooms rooms = roomsMapper.selectById(dbBookings.getRoomId()); + if(rooms==null ){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝璇ヤ細璁鏆傛椂鏃犳硶棰勭害"); + } + bookings.setRoomName(rooms.getName()); + LoginUserInfo user = bookings.getLoginUserInfo(); isCreateParamValid(bookings, user); bookings.setEditDate(new Date()); bookings.setEditor(user.getId()); bookingsMapper.updateById(bookings); + bookings.setManagerInfo(user.getRealname()); + bookings.setCreator(dbBookings.getCreator()); //鏇存柊浼氳瀹ら瀹氭椂闂存 updateBookingTimes(bookings, user); //娣诲姞绠$悊浜哄憳 @@ -363,7 +435,16 @@ updateProjectRel(bookings, user); handleFile(bookings, user); //鍙戦�佷細璁�氱煡 - this.sendNotice(bookings, MeetConstants.TWO); + if(Constants.equalsInteger(bookings.getJoinNotice(),Constants.ZERO)){ + this.sendNotice(bookings, MeetConstants.TWO); + SystemUser systemUser = systemUserMapper.selectById(bookings.getCreator()); + this.sendWxNotice(bookings,Objects.isNull(systemUser)||StringUtils.isBlank(systemUser.getOpenid())?null:systemUser.getOpenid(),Constants.ZERO); + if(Objects.nonNull(systemUser)&&StringUtils.isNotBlank(systemUser.getOpenid())){ + WxPlatNotice wxPlatNotice = new WxPlatNotice(); + wxPlatNotice.createBeginWxNotice(systemDictDataBiz,smsEmailMapper,bookings,systemUser.getOpenid()); + wxPlatNotice.createEndWxNotice(systemDictDataBiz,smsEmailMapper,bookings,systemUser.getOpenid()); + } + } } @Override @@ -385,6 +466,9 @@ @Override public void cancelById(Bookings bs) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + if(user == null){ + user = bs.getLoginUserInfo(); + } /* if(Objects.isNull(bookings)||bookings.getId()==null){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage()); @@ -424,11 +508,14 @@ bookings.setEditDate(new Date()); bookings.setEditor(user.getId()); bookingsMapper.updateById(bookings); - //鍙栨秷浼氳 鍙戦�佸彇娑堥�氱煡 - this.sendNotice(bookings, 3); - //鍙戦�佸井淇¤闃呴�氱煡 - sendWxMessage.bookingsCancel(systemUserMapper.selectById(bookings.getCreator()), bookings, roomsMapper.selectById(bookings.getRoomId())); + SystemUser systemUser = systemUserMapper.selectById(bookings.getCreator()); + bookings.setManagerInfo(systemUser.getRealname()); + //鍙栨秷浼氳 鍙戦�佸彇娑堥�氱煡 + if(Constants.equalsInteger(bookings.getJoinNotice(),Constants.ZERO)){ + this.sendNotice(bookings, 3); + this.sendWxNotice(bookings,Objects.isNull(systemUser)||StringUtils.isBlank(systemUser.getOpenid())?null:systemUser.getOpenid(),Constants.ONE); + } } @Override @@ -452,22 +539,60 @@ queryWrapper.selectAll(Bookings.class); queryWrapper.selectAs(Rooms::getName, Bookings::getRoomName); queryWrapper.selectAs(SystemUser::getRealname, Bookings::getRealName); - queryWrapper.selectAs(SystemDepartment::getName, Bookings::getDepartmentName); - + 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(SystemDepartmentUser.class, SystemDepartmentUser::getUserId, Bookings::getCreator); - queryWrapper.leftJoin(SystemDepartment.class, SystemDepartment::getId, SystemDepartmentUser::getDepartmentId); - + 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, SystemDepartment::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()); @@ -483,14 +608,16 @@ SimpleDateFormat format = new SimpleDateFormat("MM-dd HH:mm"); SimpleDateFormat format1 = new SimpleDateFormat("HH:mm"); IPage<Bookings> result = bookingsJoinMapper.selectJoinPage(page, Bookings.class, queryWrapper); + Integer minute =getNearStartMinut(); result.getRecords().stream().forEach(s -> { + dealMeetingStatusByModel(s,minute); MPJLambdaWrapper<Multifile> bookquery = new MPJLambdaWrapper<>(); bookquery.eq(Multifile::getIsdeleted, MeetConstants.ZERO); bookquery.eq(Multifile::getObjId, s.getId()); List<Multifile> filelist = multifileJoinMapper.selectList(bookquery); filelist.stream().forEach(a -> { if (StringUtils.isNotBlank(a.getFileurl())) { - a.setFileFullUrl(path + a.getFileurl()); + a.setFileurlFull(path + a.getFileurl()); } }); s.setFileList(filelist); @@ -502,20 +629,31 @@ //鍙備細浜哄憳鍒楄〃 MPJLambdaWrapper<UserRel> urquery = new MPJLambdaWrapper<>(); urquery.selectAll(UserRel.class); + urquery.eq(UserRel::getObjType, MeetConstants.ONE); 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); s.setSysList(userrelList); + //浼氳瀹ょ鐞嗗憳 + MPJLambdaWrapper<UserRel> param = new MPJLambdaWrapper<>(); + urquery.selectAll(UserRel.class); + urquery.eq(UserRel::getObjType, MeetConstants.ZERO); + urquery.eq(UserRel::getIsdeleted, MeetConstants.ZERO); + urquery.eq(UserRel::getObjId, s.getRoomId()); + List<UserRel> adminList = userRelJoinMapper.selectJoinList(UserRel.class, urquery); + s.setAdminList(adminList); - //鏈嶅姟椤� + //鏌ヨ鏄惁鏈夋潈闄� + s.setHasRole(getHasRoleByParam(s,userInfo,adminList)); + /* //鏈嶅姟椤� MPJLambdaWrapper<ProjectRel> prquery = new MPJLambdaWrapper<>(); prquery.selectAll(ProjectRel.class); 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"); + prquery.select("(select p.name from meeting_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.setProjectList(prList);*/ s.setFlag(MeetConstants.ZERO); if (System.currentTimeMillis() > s.getStartTime().getTime()) { @@ -525,6 +663,44 @@ }); return PageData.from(result); } + public int getHasRoleByParam(Bookings s,LoginUserInfo userInfo,List<UserRel> adminList){ + if(Constants.equalsInteger(userInfo.getId(),s.getCreator()) ){ + return 1; + } + if(adminList!=null){ + for(UserRel u : adminList){ + if(Constants.equalsInteger(userInfo.getId(),u.getUserId()) ){ + return 1; + } + } + } + return 0; + } + private void dealMeetingStatusByModel(Bookings s,Integer minute) { + //浼氳鐘舵��: 1=鏈紑濮嬶紱2=杩涜涓紱3=宸茬粨鏉� ; 4=鍗冲皢寮�濮�; 5=宸叉挙閿� + //status鐘舵�� 0宸查绾� 1宸叉挙閿� 2宸茬粨鏉� + if(Constants.equalsInteger(s.getStatus(),Constants.ONE)){ + //宸叉挙閿� + s.setMeetingStatus(Constants.FIVE); + }else if(Constants.equalsInteger(s.getStatus(),Constants.TWO)){ + //宸茬粨鏉� + s.setMeetingStatus(Constants.THREE); + }else if(Constants.equalsInteger(s.getStatus(),Constants.ZERO)){ + //0宸查绾� + if(s.getStartTimeReal() ==null){ + //濡傛灉鏈紑濮� + s.setMeetingStatus(Constants.ONE); + //寮�濮嬪墠120鍒嗛挓 澶т簬褰撳墠鏃堕棿 鍒欐樉绀哄嵆灏嗗紑濮� + if(DateUtil.afterMinutesDate(s.getStartTime(),-minute).getTime()<=System.currentTimeMillis() ){ + s.setMeetingStatus(Constants.FOUR);//鍒欐樉绀哄嵆灏嗗紑濮� + } + }else{ + //浼氳涓� + s.setMeetingStatus(Constants.TWO); + } + } + + } @Override public Bookings findJoinOne(Bookings queryParam) { @@ -533,11 +709,10 @@ queryWrapper.selectAll(Bookings.class); queryWrapper.selectAs(Rooms::getName, Bookings::getRoomName); queryWrapper.selectAs(SystemUser::getRealname, Bookings::getRealName); - queryWrapper.selectAs(SystemDepartment::getName, Bookings::getDepartmentName); + queryWrapper.selectAs(Company::getName, Bookings::getDepartmentName); queryWrapper.leftJoin(Rooms.class, Rooms::getId, Bookings::getRoomId); 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.leftJoin(Company.class,Company::getId,SystemUser::getCompanyId); queryWrapper.eq(Bookings::getIsdeleted, MeetConstants.ZERO); queryWrapper.eq(queryParam.getId() != null, Bookings::getId, queryParam.getId()); queryWrapper.eq(queryParam.getRoomId() != null, Bookings::getRoomId, queryParam.getRoomId()); @@ -561,7 +736,7 @@ List<Multifile> filelist = multifileJoinMapper.selectList(bookquery); filelist.stream().forEach(a -> { if (StringUtils.isNotBlank(a.getFileurl())) { - a.setFileFullUrl(path + a.getFileurl()); + a.setFileurlFull(path + a.getFileurl()); } }); result.setFileList(filelist); @@ -742,15 +917,21 @@ * @return */ @Override - 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",MeetConstants.ZERO) + public List<Bookings> getMyBookings(Integer userId, String dateMsg,Integer queryType) { + if(queryType==null ){ + queryType =1; + } + return bookingsMapper.selectJoinList(Bookings.class,new MPJLambdaWrapper<Bookings>() + .selectAll(Bookings.class) + .leftJoin(Rooms.class,Rooms::getId,Bookings::getRoomId) + .exists(queryType!=3,"( select u.OBJ_ID from meeting_user_rel u where u.OBJ_ID =t.id and u.USER_ID = '" + userId + "' and u.ISDELETED = 0 and OBJ_TYPE = 1 ) ") + .exists(queryType==3,"( select u.OBJ_ID from meeting_user_rel u where u.OBJ_ID =t1.id and u.USER_ID = '" + userId + "' and u.ISDELETED = 0 and OBJ_TYPE = 0 ) ") + .eq(Bookings::getIsdeleted,MeetConstants.ZERO) + .eq(Rooms::getIsdeleted,MeetConstants.ZERO) + .eq(Rooms::getStatus,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)); + .like(StringUtils.isNotBlank(dateMsg), Bookings::getStartTime, dateMsg)); } - /** * 鎴戠殑棰勭害/鎴戠殑浼氳 @@ -758,33 +939,144 @@ * @param pageWrap * @return */ + public IPage<Bookings> getMyMeetingPageNew(PageWrap<Bookings> pageWrap) { + IPage<Bookings> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); + MPJLambdaWrapper<Bookings> queryWrapper = new MPJLambdaWrapper<>(); + Utils.MP.blankToNull(pageWrap.getModel()); + + queryWrapper.selectAll(Bookings.class); + 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); + queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getRoomsName()), + j -> j.like(Bookings::getName,pageWrap.getModel().getRoomsName()).or().like(Rooms::getName, pageWrap.getModel().getRoomsName())) + .exists(pageWrap.getModel().getQueryType().equals(MeetConstants.ONE) && !Objects.isNull(pageWrap.getModel().getUserId()), + " select u.id from meeting_user_rel u where t.id = u.OBJ_ID and u.USER_ID = '" + pageWrap.getModel().getUserId() + "' and u.ISDELETED = 0 and u.OBJ_TYPE = 1 ") + .eq(pageWrap.getModel().getQueryType().equals(MeetConstants.TWO) + && !Objects.isNull(pageWrap.getModel().getUserId()), Bookings::getCreator, pageWrap.getModel().getUserId()) + .like(StringUtils.isNotBlank(pageWrap.getModel().getQueryDate()), Bookings::getStartTime, pageWrap.getModel().getQueryDate()) + .eq(!Objects.isNull(pageWrap.getModel().getRoomsId()), Bookings::getRoomId, pageWrap.getModel().getRoomsId()) + .apply(!Objects.isNull(pageWrap.getModel().getStatus()) && pageWrap.getModel().getStatus().equals(MeetConstants.ONE), + " now() < t.END_TIME and t.STATUS = 0 ") + .and(!Objects.isNull(pageWrap.getModel().getStatus()) && pageWrap.getModel().getStatus().equals(MeetConstants.TWO), + j -> j.apply("now() >= t.END_TIME ").or() + .eq(" t.STATUS", MeetConstants.ONE)) + .eq(Rooms::getIsdeleted,MeetConstants.ZERO) + .eq(Rooms::getStatus,MeetConstants.ZERO) + .eq(Bookings::getIsdeleted,MeetConstants.ZERO) + .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() " + ) + .eq(Objects.nonNull(pageWrap.getModel().getMeetingStatus()) + &&Constants.equalsInteger(pageWrap.getModel().getMeetingStatus(),Constants.FIVE), + Bookings::getStatus,MeetConstants.ONE + ) + .orderByDesc(Constants.equalsInteger(pageWrap.getModel().getQueryType(),MeetConstants.TWO),Bookings::getCreateDate) + .orderByAsc(Constants.equalsInteger(pageWrap.getModel().getQueryType(),MeetConstants.ONE),Bookings::getStartTime); + + IPage<Bookings> result = bookingsJoinMapper.selectJoinPage(page, Bookings.class, queryWrapper); + return result; + } @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 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); - }); + 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 ") + .exists(pageWrap.getModel().getQueryType().equals(MeetConstants.THREE) && !Objects.isNull(pageWrap.getModel().getUserId()), + " select 1 from meeting_user_rel u where b.id = u.OBJ_ID and u.USER_ID = '" + pageWrap.getModel().getUserId() + "' and u.ISDELETED = 0 and OBJ_TYPE = 0 ")//绠$悊鍛樻煡鐪� + .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) + || Constants.equalsInteger(pageWrap.getModel().getQueryType(),MeetConstants.THREE),"a.START_TIME"); + + IPage<MeetingListResponse> page = bookingsMapper.myMeetingPage(pageWrap.toPage(), queryWrapper); + this.dealMeetingStatus(page.getRecords()); return page; } + + + @Override + public MeetingDetailResponse getMeetingDetailByDate(Bookings bean){ + try { + if(Objects.isNull(bean) + || Objects.isNull(bean.getRoomId()) + || Objects.isNull(bean.getStartTime()) + || Objects.isNull(bean.getEndTime())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + Bookings bookings = bookingsMapper.selectOne(new QueryWrapper<Bookings>().lambda() + .eq(Bookings::getRoomId,bean.getRoomId()) + .ge(Bookings::getEndTime,DateUtil.getPlusTime(bean.getEndTime())) + .le(Bookings::getStartTime,DateUtil.getPlusTime(bean.getStartTime())) + ); + if(Objects.isNull(bookings)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + return getMeetingDetail(bookings.getId(),null); + }catch (Exception e){ + e.printStackTrace(); + } + return null; + } + + + /** * 浼氳璇︽儏 @@ -793,7 +1085,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(), "鏈煡璇㈠埌浼氳璇︽儏"); @@ -805,19 +1097,21 @@ .eq("BOOKING_ID", id) .eq("ISDELETED", MeetConstants.ZERO) )); - //鍙備細浜哄憳鍒楄〃 - 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(); + 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(); userResponseList.forEach(i -> { - if(StringUtils.isNotBlank(i.getAvatar())){ + if(StringUtils.isNotBlank(i.getAvatar()) && !i.getAvatar().startsWith("HKIMG") ){ i.setAvatar(avatarPath+i.getAvatar()); + }else{ + i.setAvatar(null); } }); meetingDetailResponse.setUserResponseList(userResponseList); //鏈嶅姟椤� - String projectsPath = systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.FTP_RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode(); + 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); @@ -828,7 +1122,7 @@ .eq("OBJ_TYPE", MeetConstants.ZERO) ); multiFileList.forEach(i -> { - i.setFileFullUrl(projectsPath); + i.setFileurlFull(projectsPath); }); //闄勪欢淇℃伅 meetingDetailResponse.setMultiFileList(multiFileList); @@ -838,9 +1132,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; } @@ -888,35 +1191,299 @@ /** * 浼氳棰勭害璁板綍鍙栨秷 - * - * @param id - * @param userId */ @Override - public void reservationCancel(Integer id, Integer userId) { - Bookings bookings = bookingsMapper.selectById(id); + @Transactional(rollbackFor = {Exception.class,BusinessException.class}) + 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()); + Rooms rooms = roomsMapper.selectById(bookings.getRoomId()); + if(Objects.nonNull(rooms)){ + bookings.setRoomName(rooms.getName()); + } bookingsMapper.updateById(bookings); //鍙栨秷浼氳 鍙戦�佸彇娑堥�氱煡 - this.sendNotice(bookings, 3); - //鍙戦�佸井淇¤闃呴�氱煡 - sendWxMessage.bookingsCancel(systemUserMapper.selectById(bookings.getCreator()), bookings, roomsMapper.selectById(bookings.getRoomId())); + if(Constants.equalsInteger(bookings.getJoinNotice(),Constants.ZERO)){ +// this.sendNotice(bookings, 3); + SystemUser systemUser = systemUserMapper.selectById(bookings.getCreator()); + bookings.setManagerInfo(systemUser.getRealname()); + this.sendWxNotice(bookings,Objects.isNull(systemUser)||StringUtils.isBlank(systemUser.getOpenid())?null:systemUser.getOpenid(),Constants.ONE); + + } + } + + + @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 (!Constants.equalsInteger(bookings.getCreator(),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); + + String path = systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.FTP_RESOURCE_PATH) + .getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode(); + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){ + String localPath = systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.FTP_LOCAL_RESOURCE_PATH) + .getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode(); + for (Multifile multifile:multifileList) { + multifile.setFileurlFull(path + multifile.getFileurl()); + multifile.setLocalFileurlFull(localPath + multifile.getFileurl()); + } + response.setMultifileList(multifileList); + } + + MPJLambdaWrapper<Bookings> queryWrapper = new MPJLambdaWrapper<Bookings>() + .selectAll(Bookings.class) + .selectAs(Rooms::getName, Bookings::getRoomName) + .selectAs(Rooms::getImgurl, Bookings::getImgurl) + .selectAs(Rooms::getFileType, Bookings::getFileType) + .selectAs(SystemUser::getRealname, Bookings::getRealName) + .leftJoin(Rooms.class, Rooms::getId, Bookings::getRoomId) + .leftJoin(SystemUser.class, SystemUser::getId, Bookings::getCreator) + .eq(Bookings::getIsdeleted, MeetConstants.ZERO) + .eq(Bookings::getStatus, MeetConstants.ZERO) + .eq(Rooms::getId, rooms.getId()) + .apply("to_days(t.start_time) = to_days(now()) and t.end_time > now()")//瀛愭煡璇㈠綋澶╃殑 + .orderByAsc(Bookings::getStartTime); + Integer minute =getNearStartMinut(); + List<Bookings> meetingList =bookingsMapper.selectJoinList(Bookings.class,queryWrapper); + List<MeetingListResponse> rList= new ArrayList<>(); + if(meetingList!=null){ + log.error(JSONObject.toJSONString(meetingList)); + for(Bookings s : meetingList){ + dealMeetingStatusByModel(s,minute); + MeetingListResponse d = new MeetingListResponse(); + d.setId(s.getId()); + d.setRoomName(s.getRoomName()); + d.setBookingUser(s.getRealName()); + d.setMeetingStatus(s.getMeetingStatus()); + d.setPrefixUrl(path); + d.setImgUrl(s.getImgurl()); + d.setFileType(s.getFileType()); + d.setMeetingDate(DateUtil.getShortTime(s.getStartTime()));// + //CONCAT(date_format(a.START_TIME,'%H:%i') , ' ~ ',date_format(a.END_TIME,'%H:%i')) as meetingTime + d.setMeetingTime(DateUtil.formatDate(s.getStartTime(),"HH:mm")+"~"+DateUtil.formatDate(s.getEndTime(),"HH:mm")); + d.setMeetingName(s.getName()); + d.setRemark(s.getRemark()); + d.setStartTime(s.getStartTime()); + rList.add(d); + } + } + response.setMeetingListResponseList(rList); + return response; + } + + private Integer getNearStartMinut() { + String configMinute = systemDictDataBiz.queryByCode(MeetConstants.SYSTEM, MeetConstants.EARLY_START).getCode(); + try { + return StringUtils.isNotBlank(configMinute) ? Integer.valueOf(configMinute) : 120; + }catch (Exception e){ + e.printStackTrace(); + } + return 120; + } + + + 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.EARLY_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); + } + } } @@ -941,8 +1508,9 @@ bookings.setEditDate(new Date()); 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())); } } @@ -957,30 +1525,132 @@ //1銆佸弬涓庝細璁細鍙備笌浼氳鍗冲皢寮�濮� 缁欐瘡涓弬浼氫汉鍛樺彂閫佷細璁�氱煡骞朵笖缁欎細璁绾︿汉鍙戦�侀瀹氱殑浼氳鍗冲皢寮�濮� 濡傛灉棰勮浜轰篃鍙備笌浼氳锛屽垯浼氭湁2鏉′細璁�氱煡 //2銆佷細璁瀹氭垚鍔燂紝缁欐墍鏈夊弬浼氫汉鍛樹笌棰勭害浜洪兘鍙戦�� //3銆佷細璁彇娑� 浼氳鍙栨秷锛岀粰鎵�鏈夊弬浼氫汉鍛橀兘鍙戦�� - List<UserRel> userRelList = userRelMapper.selectList(new QueryWrapper<UserRel>() - .eq("OBJ_TYPE", MeetConstants.ONE) - .eq("OBJ_ID", bookings.getId()) - .eq("ISDELETED", MeetConstants.ZERO) + List<UserRel> userRelList = userRelMapper.selectJoinList(UserRel.class,new MPJLambdaWrapper<UserRel>() + .selectAll(UserRel.class) + .selectAs(SystemUser::getRealname,UserRel::getRealName) + .selectAs(SystemUser::getMobile,UserRel::getUserPhone) + .leftJoin(SystemUser.class,SystemUser::getId,UserRel::getUserId) + .eq(UserRel::getObjType, MeetConstants.ONE) + .eq(UserRel::getObjId, bookings.getId()) + .eq(UserRel::getIsdeleted, MeetConstants.ZERO) ); + List<SmsEmail> smsEmailList = new ArrayList<>(); List<Notices> noticeList = new ArrayList<>(); + SmsConfig smsConfig = null; Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.MEETING_START; if (sendType.equals(MeetConstants.THREE)){ noticeObjectType = Constants.NoticeObjectType.MEETING_CACEL; + smsConfig = smsConfigMapper.selectOne(new QueryWrapper<SmsConfig>().lambda().eq(SmsConfig::getCode, + SmsConstants.meetingContent.meetingBookCancel) + .eq(SmsConfig::getIsdeleted,Constants.ZERO) + .last(" limit 1 ")); }else if (sendType.equals(MeetConstants.TWO)){ noticeObjectType = Constants.NoticeObjectType.MEETING_BOOK_SUCCESS; + smsConfig = smsConfigMapper.selectOne(new QueryWrapper<SmsConfig>().lambda().eq(SmsConfig::getCode, + SmsConstants.meetingContent.meetingBookJoinUser) + .eq(SmsConfig::getIsdeleted,Constants.ZERO) + .last(" limit 1 ")); } if(userRelList!=null && userRelList.size()>0){ for (UserRel i : userRelList) { Notices notices = new Notices(noticeObjectType,i.getId(),noticeObjectType.getInfo(), i.getUserId(), Constants.ZERO); noticeList.add(notices); + if (smsConfig!=null && Constants.equalsInteger(smsConfig.getStatus(),Constants.ZERO)){ + SmsEmail smsEmail = new SmsEmail(); + //{鍙備細浜哄憳濮撳悕}锛屾偍濂斤紒鎮ㄦ湁涓�涓柊鐨勪細璁紝浼氳涓婚锛歿浼氳涓婚}锛屼細璁湴鐐癸細{浼氳瀹ゅ悕绉皚锛屼細璁椂闂达細{浼氳鏃堕棿娈祡锛岃鎸夋椂鍙傚姞 + String timeInfo =DateUtil.getFomartDate( bookings.getStartTime(),"MM/dd HH:mm")+"-" + +DateUtil.getFomartDate( bookings.getEndTime(),"HH:mm"); + smsEmail.setPhone(i.getUserPhone()); + smsEmail.setRemark("绛夊緟鍙戦��"); + smsEmail.setStatus(Constants.TWO);// + smsEmail.setIsdeleted(Constants.ZERO); + smsEmail.setType(Constants.ZERO); + smsEmail.setObjType(Constants.FIVE.toString()); + smsEmail.setObjId(bookings.getId()); + smsEmail.setCreateDate(new Date()); + smsEmail.setTitle("浼氳瀹ょ敵璇峰弬浼氶�氱煡"); + smsEmail.setContent(StringUtils.defaultString(smsConfig.getContent(),"") + .replace("{鍙備細浜哄憳濮撳悕}",StringUtils.defaultString(i.getRealName(),"")) + .replace("{浼氳涓婚}",StringUtils.defaultString(bookings.getName(),"")) + .replace("{浼氳瀹ゅ悕绉皚",StringUtils.defaultString(bookings.getRoomName(),"")) + .replace("{浼氳鏃堕棿娈祡",StringUtils.defaultString(timeInfo,""))); + smsEmailList.add(smsEmail); + } + } + } + //缁欏垱寤轰汉鍙戦�佺煭淇′俊鎭� + SystemUser systemUser = systemUserMapper.selectById(bookings.getCreator()); + if(Objects.nonNull(systemUser)){ + if(userRelList.stream().filter(i->Constants.equalsInteger(i.getUserId(),systemUser.getId())).collect(Collectors.toList()).size()==Constants.ZERO){ + if (smsConfig!=null && Constants.equalsInteger(smsConfig.getStatus(),Constants.ZERO)){ + SmsEmail smsEmail = new SmsEmail(); + //{鍙備細浜哄憳濮撳悕}锛屾偍濂斤紒鎮ㄦ湁涓�涓柊鐨勪細璁紝浼氳涓婚锛歿浼氳涓婚}锛屼細璁湴鐐癸細{浼氳瀹ゅ悕绉皚锛屼細璁椂闂达細{浼氳鏃堕棿娈祡锛岃鎸夋椂鍙傚姞 + String timeInfo =DateUtil.getFomartDate( bookings.getStartTime(),"MM/dd HH:mm")+"-" + +DateUtil.getFomartDate( bookings.getEndTime(),"HH:mm"); + smsEmail.setPhone(systemUser.getMobile()); + smsEmail.setRemark("绛夊緟鍙戦��"); + smsEmail.setStatus(Constants.TWO);// + smsEmail.setIsdeleted(Constants.ZERO); + smsEmail.setType(Constants.ZERO); + smsEmail.setObjId(bookings.getId()); + smsEmail.setCreateDate(new Date()); + smsEmail.setTitle("浼氳瀹ょ敵璇峰弬浼氶�氱煡"); + smsEmail.setContent(StringUtils.defaultString(smsConfig.getContent(),"") + .replace("{鍙備細浜哄憳濮撳悕}",StringUtils.defaultString(systemUser.getRealname(),"")) + .replace("{浼氳涓婚}",StringUtils.defaultString(bookings.getName(),"")) + .replace("{浼氳瀹ゅ悕绉皚",StringUtils.defaultString(bookings.getRoomName(),"")) + .replace("{浼氳鏃堕棿娈祡",StringUtils.defaultString(timeInfo,""))); + smsEmailList.add(smsEmail); + } } } //缁欏弬浼氫汉鍛樻彃鍏� 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); } + if(smsEmailList.size()>0){ + smsEmailMapper.insert(smsEmailList);//寰呭彂鐭俊鏁版嵁 + } + } + + + @Async + public void sendWxNotice(Bookings bookings,String openid, Integer sendType) { + try{ + List<UserRel> userRelList = userRelMapper.selectJoinList(UserRel.class,new MPJLambdaWrapper<UserRel>() + .selectAll(UserRel.class) + .selectAs(SystemUser::getRealname,UserRel::getRealName) + .selectAs(SystemUser::getMobile,UserRel::getUserPhone) + .selectAs(SystemUser::getOpenid,UserRel::getOpenid) + .leftJoin(SystemUser.class,SystemUser::getId,UserRel::getUserId) + .eq(UserRel::getObjType, MeetConstants.ONE) + .eq(UserRel::getObjId, bookings.getId()) + .eq(UserRel::getIsdeleted, MeetConstants.ZERO) + .isNotNull(SystemUser::getOpenid) + ); + List<String> openIdList = userRelList.stream().map(i->i.getOpenid()).collect(Collectors.toList()); + openIdList.add(openid); + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(openIdList)){ + return; + } + Set<String> openIds = new HashSet<String>(openIdList); + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(openIds)){ + WxPlatNotice wxPlatNotice = new WxPlatNotice(); + if(Constants.equalsInteger(sendType,Constants.ZERO)){ + wxPlatNotice.sendMeetingBookTemplateNotice(systemDictDataBiz,bookings,"CuoDoxOl6SFwi4NhNgOQgKSJVjDD4VCIaPYlnbv_zdY", + systemDictDataBiz.queryByCode(Constants.WX_PLATFORM, Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(),openIds); + }else if(Constants.equalsInteger(sendType,Constants.ONE)){ + wxPlatNotice.sendMeetingBookCancelTemplateNotice(systemDictDataBiz,bookings,"CiB6vCT2InovAoQfudY-lvzLSV0-3lfz3a5GsSFCzd8", + systemDictDataBiz.queryByCode(Constants.WX_PLATFORM, Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(),openIds); + } + } + }catch (Exception e){ + + } + + } @@ -996,7 +1666,7 @@ lambdaWrapper.selectAll(Bookings.class) .selectAs(SystemUser::getRealname, Bookings::getRealName) - .selectAs(SystemDepartment::getName, Bookings::getDepartmentName) + .selectAs(Company::getName, Bookings::getDepartmentName) .selectAs(Rooms::getName, Bookings::getRoomName) .select("CASE DAYOFWEEK(t.START_TIME)\n" + "\tWHEN 1 THEN \t\"鏄熸湡鏃" \tWHEN 2 THEN \"鏄熸湡涓�\"\n" + @@ -1010,8 +1680,7 @@ // .leftJoin(RoomTime.class, RoomTime::getId, BookingTime::getTimeId) .leftJoin(SystemUser.class, SystemUser::getId, Bookings::getCreator) .leftJoin(Rooms.class, Rooms::getId, Bookings::getRoomId) - .leftJoin(SystemDepartmentUser.class, SystemDepartmentUser::getUserId, Bookings::getCreator) - .leftJoin(SystemDepartment.class, SystemDepartment::getId, SystemDepartmentUser::getDepartmentId) + .leftJoin(Company.class,Company::getId,SystemUser::getCompanyId) .eq(Objects.nonNull(roomId), Bookings::getRoomId, roomId) .eq(Bookings::getIsdeleted, MeetConstants.ZERO) .eq(Bookings::getStatus, MeetConstants.ZERO) @@ -1082,5 +1751,41 @@ return PageData.from(userStatistics); } + /** + * 鏌ヨ鍙備細浜哄憳鍒嗛〉 + * @param pageWrap + * @return + */ + @Override + public IPage<UserResponse> getUserPage(PageWrap<UserPageRequest> pageWrap) { + IPage<UserResponse> page = systemUserMapper.getUserPage(pageWrap.toPage(),new QueryWrapper<UserResponse>() + .and(StringUtils.isNotBlank(pageWrap.getModel().getKeyword()), i -> i.like("c.realName", pageWrap.getModel().getKeyword()) + .or().like("d.COMPANY_NAME_PATH", pageWrap.getModel().getKeyword()) + ) + .eq("c.DELETED",0) + .eq("c.status",0) + .eq("m.WORK_STATUS",0) + .orderByAsc("c.id") + ); + String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() + +systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode(); + //鏌ヨ鏄惁澶勪簬浼氳涓� + page.getRecords().forEach(j->{ + j.setPrefixUrl(path); + if(bookingsMapper.selectCount(new QueryWrapper<Bookings>() + .exists(" select 1 from meeting_user_rel u where u.OBJ_ID = meeting_book.id and u.USER_ID = '"+j.getId()+"' and u.OBJ_TYPE = 1 ") + .and(i -> i.between("START_TIME", pageWrap.getModel().getStartTime()+":00",pageWrap.getModel().getEndTime()+":00") + .or().between("END_TIME", pageWrap.getModel().getStartTime()+":00",pageWrap.getModel().getEndTime()+":00") + ) + )>Constants.ZERO){ + j.setStatus(Constants.ONE); + }else{ + j.setStatus(Constants.ZERO); + } + }); + return page; + } + + } -- Gitblit v1.9.3