| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ruoyi.collaborativeApproval.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.github.xiaoymin.knife4j.core.util.StrUtil; |
| | | import com.ruoyi.collaborativeApproval.dto.MeetSummaryDto; |
| | | import com.ruoyi.collaborativeApproval.dto.MeetUseDto; |
| | | import com.ruoyi.collaborativeApproval.dto.MeetingItem; |
| | | import com.ruoyi.collaborativeApproval.dto.MeetingSimpleDto; |
| | | import com.ruoyi.collaborativeApproval.mapper.MeetApplicationMapper; |
| | | import com.ruoyi.collaborativeApproval.mapper.MeetDraftMapper; |
| | | import com.ruoyi.collaborativeApproval.mapper.MeetingMinutesMapper; |
| | | import com.ruoyi.collaborativeApproval.mapper.MeetingRoomMapper; |
| | | import com.ruoyi.collaborativeApproval.pojo.MeetApplication; |
| | | import com.ruoyi.collaborativeApproval.pojo.MeetDraft; |
| | | import com.ruoyi.collaborativeApproval.pojo.MeetingMinutes; |
| | | import com.ruoyi.collaborativeApproval.pojo.MeetingRoom; |
| | | import com.ruoyi.collaborativeApproval.service.MeetingService; |
| | | import com.ruoyi.collaborativeApproval.vo.SearchMeetingApplicationVo; |
| | | import com.ruoyi.collaborativeApproval.vo.SearchMeetingDraftVo; |
| | | import com.ruoyi.collaborativeApproval.vo.SearchMeetingRoomVo; |
| | | import com.ruoyi.collaborativeApproval.vo.SearchMeetingUseVo; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | |
| | | @Service |
| | | @RequiredArgsConstructor |
| | | public class MeetingServiceImpl extends ServiceImpl<MeetingRoomMapper, MeetingRoom> implements MeetingService { |
| | | private final MeetingRoomMapper meetingRoomMapper; |
| | | |
| | | private final MeetDraftMapper meetDraftMapper; |
| | | |
| | | private final MeetApplicationMapper meetApplicationMapper; |
| | | |
| | | private final MeetingMinutesMapper meetingMinutesMapper; |
| | | |
| | | @Override |
| | | public IPage<MeetingRoom> getMeetingRoomList(SearchMeetingRoomVo vo) { |
| | | LambdaQueryWrapper<MeetingRoom> queryWrapper = new LambdaQueryWrapper<>(); |
| | | if (StrUtil.isNotBlank(vo.getName())) { |
| | | queryWrapper.like(MeetingRoom::getName, vo.getName()); |
| | | } |
| | | if (StrUtil.isNotBlank(vo.getLocation())) { |
| | | queryWrapper.like(MeetingRoom::getLocation, vo.getLocation()); |
| | | } |
| | | queryWrapper.orderByDesc(MeetingRoom::getId); |
| | | return meetingRoomMapper.selectPage(new Page<MeetingRoom>(vo.getCurrent(), vo.getSize()), queryWrapper); |
| | | } |
| | | |
| | | @Override |
| | | public void saveMeetRoom(MeetingRoom meetingRoom) { |
| | | if (meetingRoom.getId() != null) { |
| | | meetingRoomMapper.updateById(meetingRoom); |
| | | } else { |
| | | meetingRoomMapper.insert(meetingRoom); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public MeetingRoom findMeetRoomById(Long id) { |
| | | return meetingRoomMapper.selectById(id); |
| | | } |
| | | |
| | | @Override |
| | | public void deleteMeetingRoom(Long id) { |
| | | meetingRoomMapper.deleteById(id); |
| | | } |
| | | |
| | | @Override |
| | | public List<MeetingRoom> getRoomEnum() { |
| | | LambdaQueryWrapper<MeetingRoom> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.select(MeetingRoom::getName, MeetingRoom::getId, MeetingRoom::getLocation); |
| | | queryWrapper.eq(MeetingRoom::getStatus, 1); |
| | | queryWrapper.orderByDesc(MeetingRoom::getId); |
| | | return meetingRoomMapper.selectList(queryWrapper); |
| | | } |
| | | |
| | | @Override |
| | | public IPage<MeetDraft> getMeetingDraftList(SearchMeetingDraftVo vo) { |
| | | |
| | | LambdaQueryWrapper<MeetDraft> queryWrapper = new LambdaQueryWrapper<>(); |
| | | if (StrUtil.isNotBlank(vo.getTitle())) { |
| | | queryWrapper.like(MeetDraft::getTitle, vo.getTitle()); |
| | | } |
| | | if (Objects.nonNull(vo.getMeetingDate())) { |
| | | queryWrapper.eq(MeetDraft::getMeetingDate, vo.getMeetingDate()); |
| | | } |
| | | |
| | | queryWrapper.orderByDesc(MeetDraft::getId); |
| | | |
| | | return meetDraftMapper.selectPage(new Page<>(vo.getCurrent(), vo.getSize()), queryWrapper); |
| | | } |
| | | |
| | | @Override |
| | | public void saveMeetDraft(MeetDraft meetDraft) { |
| | | if (meetDraft.getId() != null) { |
| | | meetDraftMapper.updateById(meetDraft); |
| | | } else { |
| | | meetDraftMapper.insert(meetDraft); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void deleteMeetingDraft(Long id) { |
| | | meetDraftMapper.deleteById(id); |
| | | } |
| | | |
| | | @Override |
| | | public void saveMeetApplication(MeetApplication meetApplication) { |
| | | meetApplication.setApplicant(SecurityUtils.getUsername()); |
| | | if (meetApplication.getId() != null) { |
| | | meetApplicationMapper.updateById(meetApplication); |
| | | } else { |
| | | meetApplicationMapper.insert(meetApplication); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public IPage<MeetApplication> getMeetingApplicationList(SearchMeetingApplicationVo vo) { |
| | | LambdaQueryWrapper<MeetApplication> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.in(MeetApplication::getApplicationType, "approval", "department"); |
| | | if (StrUtil.isNotBlank(vo.getTitle())) { |
| | | queryWrapper.like(MeetApplication::getTitle, vo.getTitle()); |
| | | } |
| | | if (StrUtil.isNotBlank(vo.getApplicant())) { |
| | | queryWrapper.like(MeetApplication::getApplicant, vo.getApplicant()); |
| | | } |
| | | if (StrUtil.isNotBlank(vo.getStatus())) { |
| | | queryWrapper.eq(MeetApplication::getStatus, vo.getStatus()); |
| | | } |
| | | queryWrapper.orderByDesc(MeetApplication::getId); |
| | | return meetApplicationMapper.selectPage(new Page<>(vo.getCurrent(), vo.getSize()), queryWrapper); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public List<MeetUseDto> meetingUseList(SearchMeetingUseVo vo) { |
| | | // æ¥è¯¢ä¼è®®å表 |
| | | LambdaQueryWrapper<MeetApplication> alWrapper = new LambdaQueryWrapper<>(); |
| | | alWrapper.and(wrapper -> { |
| | | wrapper.eq(MeetApplication::getStatus, 1) |
| | | .or() |
| | | .eq(MeetApplication::getApplicationType, "notification"); |
| | | }); |
| | | if (Objects.nonNull(vo.getMeetingDate())) { |
| | | alWrapper.and(wrapper -> { |
| | | wrapper.eq(MeetApplication::getMeetingDate, vo.getMeetingDate()); |
| | | }); |
| | | } |
| | | alWrapper.orderByAsc(MeetApplication::getStartTime); |
| | | List<MeetApplication> meetApplicationList = meetApplicationMapper.selectList(alWrapper); |
| | | |
| | | // æ ¹æ® roomId è¿è¡åç» |
| | | Map<Long, List<MeetApplication>> roomGroup = meetApplicationList.stream().collect(Collectors.groupingBy(MeetApplication::getRoomId)); |
| | | // æ¥è¯¢roomä¿¡æ¯ |
| | | List<MeetingRoom> roomList = meetingRoomMapper.selectList(new LambdaUpdateWrapper<MeetingRoom>().orderByAsc(MeetingRoom::getId)); |
| | | |
| | | List<MeetUseDto> meetUseDtoList = new ArrayList<>(); |
| | | |
| | | roomList.forEach(r -> { |
| | | MeetUseDto dto = new MeetUseDto(); |
| | | MeetingRoom meetingRoom = roomList.stream().filter(room -> room.getId().equals(r.getId())).findFirst().orElse(new MeetingRoom()); |
| | | dto.setId(meetingRoom.getId()); |
| | | dto.setName(meetingRoom.getName()); |
| | | List<MeetingItem> collect = roomGroup.getOrDefault(r.getId(), new ArrayList<>()).stream().map(it -> { |
| | | MeetingItem item = new MeetingItem(); |
| | | item.setId(it.getId()); |
| | | item.setHost(it.getHost()); |
| | | item.setStatus(1); |
| | | item.setTitle(it.getTitle()); |
| | | item.setStartTime(it.getStartTime().format(DateTimeFormatter.ofPattern("HH:mm"))); |
| | | item.setEndTime(it.getEndTime().format(DateTimeFormatter.ofPattern("HH:mm"))); |
| | | item.setTime(item.getStartTime() + "ï½" + item.getEndTime()); |
| | | item.setParticipants(it.getParticipants().split(",").length); |
| | | item.setDescription(it.getDescription()); |
| | | item.setRoom(meetingRoom.getName() + "(" + meetingRoom.getLocation() + ")"); |
| | | return item; |
| | | }).collect(Collectors.toList()); |
| | | dto.setMeetings(collect); |
| | | meetUseDtoList.add(dto); |
| | | }); |
| | | return meetUseDtoList; |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public IPage<MeetApplication> getMeetingPublishList(SearchMeetingApplicationVo vo) { |
| | | LambdaQueryWrapper<MeetApplication> queryWrapper = new LambdaQueryWrapper<>(); |
| | | if (StrUtil.isNotBlank(vo.getTitle())) { |
| | | queryWrapper.like(MeetApplication::getTitle, vo.getTitle()); |
| | | } |
| | | if (StrUtil.isNotBlank(vo.getApplicant())) { |
| | | queryWrapper.like(MeetApplication::getApplicant, vo.getApplicant()); |
| | | } |
| | | if (StrUtil.isNotBlank(vo.getStatus())) { |
| | | queryWrapper.eq(MeetApplication::getPublishStatus, vo.getStatus()); |
| | | } |
| | | queryWrapper.and(wrapper -> { |
| | | wrapper.eq(MeetApplication::getStatus, 1) |
| | | .or() |
| | | .eq(MeetApplication::getApplicationType, "notification"); |
| | | }); |
| | | queryWrapper.orderByDesc(MeetApplication::getId); |
| | | return meetApplicationMapper.selectPage(new Page<>(vo.getCurrent(), vo.getSize()), queryWrapper); |
| | | } |
| | | |
| | | @Override |
| | | public MeetingMinutes getMeetingMinutesById(Long id) { |
| | | return meetingMinutesMapper.selectOne(new LambdaUpdateWrapper<MeetingMinutes>().eq(MeetingMinutes::getMeetingId,id)); |
| | | } |
| | | |
| | | @Override |
| | | public void saveMeetingMinutes(MeetingMinutes meetingMinutes) { |
| | | if (meetingMinutes.getId() != null){ |
| | | meetingMinutesMapper.updateById(meetingMinutes); |
| | | }else { |
| | | meetingMinutesMapper.insert(meetingMinutes); |
| | | } |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public MeetSummaryDto getMeetSummary() { |
| | | return meetApplicationMapper.getMeetSummary(); |
| | | } |
| | | |
| | | @Override |
| | | public List<MeetingSimpleDto> getMeetSummaryItems() { |
| | | return meetApplicationMapper.getMeetSummaryItems(); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |