From 113cd73922b9b67c261c19c744e46eb2822d7b41 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期五, 14 十一月 2025 14:54:11 +0800
Subject: [PATCH] Merge branch 'prod' into dev_tide

---
 src/main/java/com/ruoyi/collaborativeApproval/service/impl/MeetingServiceImpl.java |  244 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 244 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/collaborativeApproval/service/impl/MeetingServiceImpl.java b/src/main/java/com/ruoyi/collaborativeApproval/service/impl/MeetingServiceImpl.java
new file mode 100644
index 0000000..c269b1a
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/service/impl/MeetingServiceImpl.java
@@ -0,0 +1,244 @@
+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();
+    }
+}
+
+
+
+

--
Gitblit v1.9.3