| | |
| | | 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; |
| | |
| | | bookings.setIsdeleted(MeetConstants.ZERO); |
| | | bookings.setStatus(MeetConstants.ZERO); |
| | | bookingsMapper.insert(bookings); |
| | | bookings.setManagerInfo(user.getRealname()); |
| | | //更新会议室预定时间段 |
| | | updateBookingTimes(bookings, user); |
| | | //添加管理人员 |
| | |
| | | //发送会议预约成功通知 |
| | | 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()); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | //发送微信订阅通知 |
| | | // sendWxMessage.bookingsReservation(systemUserMapper.selectById(bookings.getCreator()), bookings, roomsMapper.selectById(bookings.getRoomId())); |
| | | |
| | | return bookings.getId(); |
| | | } |
| | |
| | | /* ||org.apache.commons.collections4.CollectionUtils.isEmpty(bookings.getSysList())*/ |
| | | ) { |
| | | 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"); |
| | |
| | | if(dbBookings.getStatus().equals(MeetConstants.ONE)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "本次操作失败,预约状态已流转"); |
| | | } |
| | | 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); |
| | | //添加管理人员 |
| | |
| | | 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 |
| | |
| | | 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 |
| | |
| | | SimpleDateFormat format = new SimpleDateFormat("MM-dd HH:mm"); |
| | | SimpleDateFormat format1 = new SimpleDateFormat("HH:mm"); |
| | | IPage<Bookings> result = bookingsJoinMapper.selectJoinPage(page, Bookings.class, queryWrapper); |
| | | |
| | | String configMinute = systemDictDataBiz.queryByCode(MeetConstants.SYSTEM, MeetConstants.EARLY_START).getCode(); |
| | | Integer minute = StringUtils.isNotBlank(configMinute) ? Integer.valueOf(configMinute) : 120; |
| | | result.getRecords().stream().forEach(s -> { |
| | | |
| | | if(Constants.equalsInteger(s.getStatus(),Constants.ZERO)&&Constants.equalsInteger(s.getMeetingStatus(),Constants.ONE)){ |
| | | //开始前120分钟 大于当前时间 则显示即将开始 |
| | | if( |
| | | DateUtil.afterMinutesDate(s.getStartTime(),-minute).getTime()<=System.currentTimeMillis() |
| | | ){ |
| | | s.setMeetingStatus(4); |
| | | } |
| | | } |
| | | |
| | | |
| | | if(s.getMeetingStatus().equals(Constants.ZERO)){ |
| | | if(s.getMeetingStatus()==Constants.ONE){ |
| | |
| | | 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); |
| | |
| | | bookings.setStatus(MeetConstants.ONE); |
| | | bookings.setEditDate(new Date()); |
| | | 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); |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | 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(); |
| | | 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()){ |
| | | if( |
| | | DateUtil.afterMinutesDate(m.getStartTime(),-minute).getTime()<=System.currentTimeMillis() |
| | | ){ |
| | | m.setMeetingStatus(4); |
| | | } |
| | | } |
| | |
| | | bookings.setEditDate(new Date()); |
| | | bookingsMapper.updateById(bookings); |
| | | this.sendNotice(bookings, MeetConstants.ONE); |
| | | |
| | | //发送微信通知 |
| | | // sendWxMessage.bookingsStart(systemUserMapper.selectById(bookings.getCreator()), bookings, roomsMapper.selectById(bookings.getRoomId())); |
| | | } |
| | |
| | | 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, |
| | |
| | | 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,""))); |
| | |
| | | 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){ |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | ) |
| | | .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() |