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.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 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();
|
}
|
}
|