From 064c8bbbbfddb866307356d62f30dbc9e5710e96 Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期三, 17 九月 2025 16:01:18 +0800
Subject: [PATCH] feat(collaborativeApproval): 新增会议管理相关功能
---
src/main/resources/mapper/collaborativeApproval/MeetingRoomMapper.xml | 28 +
src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetingMinutesMapper.java | 18
src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingApplicationVo.java | 16
src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingUseVo.java | 19
src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetingRoom.java | 91 ++++
src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetApplication.java | 140 ++++++
src/main/resources/mapper/collaborativeApproval/MeetingMinutesMapper.xml | 24 +
src/main/java/com/ruoyi/collaborativeApproval/service/impl/MeetingServiceImpl.java | 243 +++++++++++
src/main/java/com/ruoyi/collaborativeApproval/service/MeetingService.java | 72 +++
src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingRoomVo.java | 23 +
src/main/resources/mapper/collaborativeApproval/MeetApplicationMapper.xml | 80 +++
src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingDraftVo.java | 23 +
src/main/java/com/ruoyi/collaborativeApproval/dto/MeetingSimpleDto.java | 23 +
src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetingRoomMapper.java | 18
src/main/java/com/ruoyi/collaborativeApproval/dto/MeetSummaryDto.java | 24 +
src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetDraftMapper.java | 18
src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetingMinutes.java | 79 +++
src/main/java/com/ruoyi/collaborativeApproval/dto/MeetingItem.java | 24 +
src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetApplicationMapper.java | 26 +
src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetDraft.java | 128 +++++
src/main/resources/mapper/collaborativeApproval/MeetDraftMapper.xml | 34 +
src/main/java/com/ruoyi/collaborativeApproval/controller/MeetingController.java | 120 +++++
src/main/java/com/ruoyi/collaborativeApproval/dto/MeetUseDto.java | 21
23 files changed, 1,292 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/controller/MeetingController.java b/src/main/java/com/ruoyi/collaborativeApproval/controller/MeetingController.java
new file mode 100644
index 0000000..dcc42ff
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/controller/MeetingController.java
@@ -0,0 +1,120 @@
+package com.ruoyi.collaborativeApproval.controller;
+
+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.framework.web.domain.R;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 鍏充簬浼氳controller
+ *
+ * @author buhuazhen
+ * @date 2025/9/15
+ * @email 3038525872@qq.com
+ */
+@RestController
+@RequestMapping("/meeting")
+@RequiredArgsConstructor
+public class MeetingController {
+ private final MeetingService meetingService;
+
+ @PostMapping("/roomList")
+ public R getMeetingRoomList(@RequestBody SearchMeetingRoomVo vo) {
+
+ return R.ok(meetingService.getMeetingRoomList(vo));
+ }
+
+ @PostMapping("/saveRoom")
+ public R saveRoom(@RequestBody MeetingRoom meetingRoom) {
+ meetingService.saveMeetRoom(meetingRoom);
+ return R.ok();
+ }
+
+ @GetMapping("/room/{id}")
+ public R getRoomById(@PathVariable Long id) {
+ return R.ok(meetingService.findMeetRoomById(id));
+ }
+
+ @DeleteMapping("/delRoom/{id}")
+ public R deleteRoom(@PathVariable Long id) {
+ meetingService.deleteMeetingRoom(id);
+ return R.ok();
+ }
+
+ @GetMapping("/roomEnum")
+ public R getRoomEnum() {
+ return R.ok(meetingService.getRoomEnum());
+ }
+
+ @PostMapping("/draftList")
+ public R getMeetingDraftList(@RequestBody SearchMeetingDraftVo vo) {
+ return R.ok(meetingService.getMeetingDraftList(vo));
+ }
+
+ @PostMapping("/saveDraft")
+ public R saveMeetingDraft(@RequestBody MeetDraft meetDraft) {
+ meetingService.saveMeetDraft(meetDraft);
+ return R.ok();
+ }
+
+ @DeleteMapping("/delDraft/{id}")
+ public R deleteMeetingDraft(@PathVariable Long id) {
+ meetingService.deleteMeetingDraft(id);
+ return R.ok();
+ }
+
+ @PostMapping("/saveMeetingApplication")
+ public R saveMeetApplication(@RequestBody MeetApplication meetApplication) {
+ meetingService.saveMeetApplication(meetApplication);
+ return R.ok();
+ }
+
+ @PostMapping("/applicationList")
+ public R getMeetingApplicationList(@RequestBody SearchMeetingApplicationVo vo) {
+ return R.ok(meetingService.getMeetingApplicationList(vo));
+ }
+
+
+
+ @PostMapping("/meetingUseList")
+ public R meetingUseList(@RequestBody SearchMeetingUseVo vo) {
+ return R.ok(meetingService.meetingUseList(vo));
+ }
+
+
+ @PostMapping("/meetingPublishList")
+ public R meetingPublishList(@RequestBody SearchMeetingApplicationVo vo) {
+ return R.ok(meetingService.getMeetingPublishList(vo));
+ }
+
+
+ @GetMapping("/getMeetingMinutesByMeetingId/{id}")
+ public R getMeetingMinutes(@PathVariable Long id) {
+ return R.ok(meetingService.getMeetingMinutesById(id));
+ }
+
+ @PostMapping("/saveMeetingMinutes")
+ public R saveMeetingMinutes(@RequestBody MeetingMinutes meetingMinutes) {
+ meetingService.saveMeetingMinutes(meetingMinutes);
+ return R.ok();
+ }
+
+ @GetMapping("/getMeetSummary")
+ public R getMeetSummary() {
+ return R.ok(meetingService.getMeetSummary());
+ }
+
+ @GetMapping("/getMeetSummaryItems")
+ public R getMeetSummaryItems() {
+ return R.ok(meetingService.getMeetSummaryItems());
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/dto/MeetSummaryDto.java b/src/main/java/com/ruoyi/collaborativeApproval/dto/MeetSummaryDto.java
new file mode 100644
index 0000000..1c43eeb
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/dto/MeetSummaryDto.java
@@ -0,0 +1,24 @@
+package com.ruoyi.collaborativeApproval.dto;
+
+import io.swagger.models.auth.In;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author buhuazhen
+ * @date 2025/9/17
+ * @email 3038525872@qq.com
+ */
+@Data
+public class MeetSummaryDto implements Serializable {
+ // 鎬讳細璁�
+ private Integer total;
+ // 杩涜涓�
+ private Integer underWay;
+ // 宸插畬鎴�
+ private Integer completed;
+ // 鍗冲皢寮�濮�
+ private Integer toStart;
+
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/dto/MeetUseDto.java b/src/main/java/com/ruoyi/collaborativeApproval/dto/MeetUseDto.java
new file mode 100644
index 0000000..68e0d68
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/dto/MeetUseDto.java
@@ -0,0 +1,21 @@
+package com.ruoyi.collaborativeApproval.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author buhuazhen
+ * @date 2025/9/16
+ * @email 3038525872@qq.com
+ */
+@Data
+public class MeetUseDto implements Serializable {
+
+ private Long id;
+ private String name;
+ private List<MeetingItem> meetings = new ArrayList<>();
+
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/dto/MeetingItem.java b/src/main/java/com/ruoyi/collaborativeApproval/dto/MeetingItem.java
new file mode 100644
index 0000000..b804076
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/dto/MeetingItem.java
@@ -0,0 +1,24 @@
+package com.ruoyi.collaborativeApproval.dto;
+
+import lombok.Data;
+
+/**
+ * @author buhuazhen
+ * @date 2025/9/16
+ * @email 3038525872@qq.com
+ */
+@Data
+public class MeetingItem {
+ private Long id;
+ private String title;
+ private String startTime;
+ private String endTime;
+ private String time;
+ private String host;
+ private Integer participants = 0;
+ private Integer status;
+ private String description;
+ private String room;
+
+
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/dto/MeetingSimpleDto.java b/src/main/java/com/ruoyi/collaborativeApproval/dto/MeetingSimpleDto.java
new file mode 100644
index 0000000..3b1aaf3
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/dto/MeetingSimpleDto.java
@@ -0,0 +1,23 @@
+package com.ruoyi.collaborativeApproval.dto;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author buhuazhen
+ * @date 2025/9/17
+ * @email 3038525872@qq.com
+ */
+@Data
+public class MeetingSimpleDto {
+ private Long id;
+ private String title;
+ private Integer status;
+ private LocalDateTime startTime;
+ private LocalDateTime endTime;
+ private String location;
+ private String host;
+ private String participants;
+ private String content;
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetApplicationMapper.java b/src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetApplicationMapper.java
new file mode 100644
index 0000000..15c1eed
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetApplicationMapper.java
@@ -0,0 +1,26 @@
+package com.ruoyi.collaborativeApproval.mapper;
+
+import com.ruoyi.collaborativeApproval.dto.MeetSummaryDto;
+import com.ruoyi.collaborativeApproval.dto.MeetingSimpleDto;
+import com.ruoyi.collaborativeApproval.pojo.MeetApplication;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+import java.util.List;
+
+/**
+* @author buhuazhen
+* @description 閽堝琛ㄣ�恗eet_application(浼氳鐢宠琛�)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-09-15 15:54:20
+* @Entity com.ruoyi.collaborativeApproval.pojo.MeetApplication
+*/
+public interface MeetApplicationMapper extends BaseMapper<MeetApplication> {
+
+ MeetSummaryDto getMeetSummary();
+
+ List<MeetingSimpleDto> getMeetSummaryItems();
+
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetDraftMapper.java b/src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetDraftMapper.java
new file mode 100644
index 0000000..e6c6835
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetDraftMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.collaborativeApproval.mapper;
+
+import com.ruoyi.collaborativeApproval.pojo.MeetDraft;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author buhuazhen
+* @description 閽堝琛ㄣ�恗eet_draft(浼氳鑽夌琛�)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-09-15 14:10:49
+* @Entity com.ruoyi.collaborativeApproval.pojo.MeetDraft
+*/
+public interface MeetDraftMapper extends BaseMapper<MeetDraft> {
+
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetingMinutesMapper.java b/src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetingMinutesMapper.java
new file mode 100644
index 0000000..14985a6
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetingMinutesMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.collaborativeApproval.mapper;
+
+import com.ruoyi.collaborativeApproval.pojo.MeetingMinutes;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author buhuazhen
+* @description 閽堝琛ㄣ�恗eeting_minutes(浼氳绾琛�)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-09-17 10:25:20
+* @Entity com.ruoyi.collaborativeApproval.pojo.MeetingMinutes
+*/
+public interface MeetingMinutesMapper extends BaseMapper<MeetingMinutes> {
+
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetingRoomMapper.java b/src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetingRoomMapper.java
new file mode 100644
index 0000000..5fd825a
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetingRoomMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.collaborativeApproval.mapper;
+
+import com.ruoyi.collaborativeApproval.pojo.MeetingRoom;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author buhuazhen
+* @description 閽堝琛ㄣ�恗eeting_room(浼氳瀹よ〃)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2025-09-15 10:32:50
+* @Entity com.ruoyi.collaborativeApproval.pojo.MeetingRoom
+*/
+public interface MeetingRoomMapper extends BaseMapper<MeetingRoom> {
+
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetApplication.java b/src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetApplication.java
new file mode 100644
index 0000000..5f9ad1d
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetApplication.java
@@ -0,0 +1,140 @@
+package com.ruoyi.collaborativeApproval.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.models.auth.In;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * 浼氳鐢宠琛�
+ * @TableName meet_application
+ */
+@TableName(value ="meet_application")
+@Data
+public class MeetApplication implements Serializable {
+ /**
+ * 鐢宠ID
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 浼氳涓婚
+ */
+ @TableField(value = "title")
+ private String title;
+
+ /**
+ * 浼氳瀹D
+ */
+ @TableField(value = "room_id")
+ private Long roomId;
+
+ /**
+ * 涓绘寔浜�
+ */
+ @TableField(value = "host")
+ private String host;
+
+ /**
+ * 浼氳鏃ユ湡
+ */
+ @TableField(value = "meeting_date")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate meetingDate;
+
+ /**
+ * 寮�濮嬫椂闂�
+ */
+ @TableField(value = "start_time")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime startTime;
+
+ /**
+ * 缁撴潫鏃堕棿
+ */
+ @TableField(value = "end_time")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime endTime;
+
+ /**
+ * 鍙備細浜哄憳锛圝SON鏍煎紡瀛樺偍ID鏁扮粍锛�
+ */
+ @TableField(value = "participants")
+ private String participants;
+
+ /**
+ * 浼氳璇存槑
+ */
+ @TableField(value = "description")
+ private String description;
+
+ /**
+ * 鐢宠绫诲瀷锛坅pproval:瀹℃壒娴佺▼, department:閮ㄩ棬绾�, notification:閫氱煡鍙戝竷锛�
+ */
+ @TableField(value = "application_type")
+ private String applicationType;
+
+ /**
+ * 鐘舵�侊紙0:寰呭鎵�, 1:宸查�氳繃, 2:宸叉嫆缁�, 3:宸插彇娑堬級
+ */
+ @TableField(value = "status")
+ private Integer status;
+
+ /**
+ * 鐢宠浜�
+ */
+ @TableField(value = "applicant")
+ private String applicant;
+
+
+ /**
+ * 鍒涘缓鑰�
+ */
+ @TableField(value = "create_user" ,fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(value = "create_time",fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ /**
+ * 鏇存柊鑰�
+ */
+ @TableField(value = "update_user",fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 鏇存柊鏃堕棿
+ */
+ @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(value = "tenant_id",fill = FieldFill.INSERT)
+ private Long tenantId;
+
+ @TableField(value = "publish_status")
+ private Integer publishStatus;
+
+ @TableField(value = "publish_comment")
+ private String publishComment;
+
+ @TableField(exist = false)
+ private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetDraft.java b/src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetDraft.java
new file mode 100644
index 0000000..07adca4
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetDraft.java
@@ -0,0 +1,128 @@
+package com.ruoyi.collaborativeApproval.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * 浼氳鑽夌琛�
+ * @TableName meet_draft
+ */
+@TableName(value ="meet_draft")
+@Data
+public class MeetDraft implements Serializable {
+ /**
+ * 鑽夌ID
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 浼氳缂栧彿
+ */
+ @TableField(value = "room_id")
+ private Long roomId;
+
+ /**
+ * 浼氳涓婚
+ */
+ @TableField(value = "title")
+ private String title;
+
+ /**
+ * 涓绘寔浜�
+ */
+ @TableField(value = "host")
+ private String host;
+
+ /**
+ * 浼氳鏃ユ湡
+ */
+ @TableField(value = "meeting_date")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private LocalDate meetingDate;
+
+ /**
+ * 寮�濮嬫椂闂�
+ */
+ @TableField(value = "start_time")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime startTime;
+
+ /**
+ * 缁撴潫鏃堕棿
+ */
+ @TableField(value = "end_time")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime endTime;
+
+ /**
+ * 鍙備細浜烘暟
+ */
+ @TableField(value = "participants")
+ private Integer participants;
+
+ /**
+ * 鍙備細浜哄憳鍒楄〃
+ */
+ @TableField(value = "participant_list")
+ private String participantList;
+
+ /**
+ * 浼氳璇存槑
+ */
+ @TableField(value = "description")
+ private String description;
+
+ /**
+ * 鍒涘缓浜�
+ */
+ @TableField(value = "creator")
+ private String creator;
+
+
+ /**
+ * 鍒涘缓鑰�
+ */
+ @TableField(value = "create_user" ,fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(value = "create_time",fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ /**
+ * 鏇存柊鑰�
+ */
+ @TableField(value = "update_user",fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 鏇存柊鏃堕棿
+ */
+ @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(value = "tenant_id",fill = FieldFill.INSERT)
+ private Long tenantId;
+
+
+ @TableField(exist = false)
+ private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetingMinutes.java b/src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetingMinutes.java
new file mode 100644
index 0000000..bd80254
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetingMinutes.java
@@ -0,0 +1,79 @@
+package com.ruoyi.collaborativeApproval.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * 浼氳绾琛�
+ * @TableName meeting_minutes
+ */
+@TableName(value ="meeting_minutes")
+@Data
+public class MeetingMinutes implements Serializable {
+ /**
+ * 绾ID
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 鍏宠仈鐨勪細璁甀D
+ */
+ @TableField(value = "meeting_id")
+ private Long meetingId;
+
+ /**
+ * 绾鏍囬
+ */
+ @TableField(value = "title")
+ private String title;
+
+ /**
+ * 绾鍐呭锛堝瘜鏂囨湰锛�
+ */
+ @TableField(value = "content")
+ private String content;
+
+
+ /**
+ * 鍒涘缓鑰�
+ */
+ @TableField(value = "create_user" ,fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(value = "create_time",fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ /**
+ * 鏇存柊鑰�
+ */
+ @TableField(value = "update_user",fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 鏇存柊鏃堕棿
+ */
+ @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(value = "tenant_id",fill = FieldFill.INSERT)
+ private Long tenantId;
+
+
+ @TableField(exist = false)
+ private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetingRoom.java b/src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetingRoom.java
new file mode 100644
index 0000000..edf603a
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetingRoom.java
@@ -0,0 +1,91 @@
+package com.ruoyi.collaborativeApproval.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * 浼氳瀹よ〃
+ * @TableName meeting_room
+ */
+@TableName(value ="meeting_room")
+@Data
+public class MeetingRoom implements Serializable {
+ /**
+ * 浼氳瀹D
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 浼氳瀹ゅ悕绉�
+ */
+ @TableField(value = "name")
+ private String name;
+
+ /**
+ * 浣嶇疆
+ */
+ @TableField(value = "location")
+ private String location;
+
+ /**
+ * 瀹圭撼浜烘暟
+ */
+ @TableField(value = "capacity")
+ private Integer capacity;
+
+ /**
+ * 璁惧閰嶇疆锛堥�楀彿鍒嗛殧锛�
+ */
+ @TableField(value = "equipment")
+ private String equipment;
+
+ /**
+ * 鐘舵�侊紙1:鍚敤 0:绂佺敤锛�
+ */
+ @TableField(value = "status")
+ private Integer status;
+
+ /**
+ * 澶囨敞
+ */
+ @TableField(value = "remark")
+ private String remark;
+
+ /**
+ * 鍒涘缓鑰�
+ */
+ @TableField(value = "create_user" ,fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @TableField(value = "create_time",fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ /**
+ * 鏇存柊鑰�
+ */
+ @TableField(value = "update_user",fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ /**
+ * 鏇存柊鏃堕棿
+ */
+ @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(value = "tenant_id",fill = FieldFill.INSERT)
+ private Long tenantId;
+
+ @TableField(exist = false)
+ private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/service/MeetingService.java b/src/main/java/com/ruoyi/collaborativeApproval/service/MeetingService.java
new file mode 100644
index 0000000..898ca94
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/service/MeetingService.java
@@ -0,0 +1,72 @@
+package com.ruoyi.collaborativeApproval.service;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ruoyi.collaborativeApproval.dto.MeetSummaryDto;
+import com.ruoyi.collaborativeApproval.dto.MeetUseDto;
+import com.ruoyi.collaborativeApproval.dto.MeetingSimpleDto;
+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.vo.SearchMeetingApplicationVo;
+import com.ruoyi.collaborativeApproval.vo.SearchMeetingDraftVo;
+import com.ruoyi.collaborativeApproval.vo.SearchMeetingRoomVo;
+import com.ruoyi.collaborativeApproval.vo.SearchMeetingUseVo;
+
+
+import java.util.List;
+
+public interface MeetingService{
+//****************浼氳瀹�********************************
+ IPage<MeetingRoom> getMeetingRoomList(SearchMeetingRoomVo vo);
+
+ void saveMeetRoom(MeetingRoom meetingRoom);
+
+ MeetingRoom findMeetRoomById(Long id);
+
+ void deleteMeetingRoom(Long id);
+
+ List<MeetingRoom> getRoomEnum();
+
+
+
+//***************鑽夌********************************
+
+ IPage<MeetDraft> getMeetingDraftList(SearchMeetingDraftVo vo);
+
+ void saveMeetDraft(MeetDraft meetDraft);
+
+ void deleteMeetingDraft(Long id);
+
+// ************鐢宠浼氳************
+
+ void saveMeetApplication(MeetApplication meetApplication);
+
+// ************鐢宠瀹℃壒************
+
+ IPage<MeetApplication> getMeetingApplicationList(SearchMeetingApplicationVo vo);
+
+
+
+ // ****************浼氳浣跨敤鏌ヨ********************************
+
+ /**
+ * 浼氳浣跨敤娓呭崟
+ */
+ List<MeetUseDto> meetingUseList(SearchMeetingUseVo vo);
+
+ // ****************浼氳鍙戝竷********************************
+ IPage<MeetApplication> getMeetingPublishList(SearchMeetingApplicationVo vo);
+
+
+ // ****************浼氳绾********************************
+ MeetingMinutes getMeetingMinutesById(Long id);
+
+ void saveMeetingMinutes(MeetingMinutes meetingMinutes);
+
+ MeetSummaryDto getMeetSummary();
+
+
+ List<MeetingSimpleDto> getMeetSummaryItems();
+}
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..ce70e50
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/service/impl/MeetingServiceImpl.java
@@ -0,0 +1,243 @@
+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();
+ }
+}
+
+
+
+
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingApplicationVo.java b/src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingApplicationVo.java
new file mode 100644
index 0000000..04fbf46
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingApplicationVo.java
@@ -0,0 +1,16 @@
+package com.ruoyi.collaborativeApproval.vo;
+
+import com.ruoyi.dto.PageDto;
+import lombok.Data;
+
+/**
+ * @author buhuazhen
+ * @date 2025/9/16
+ * @email 3038525872@qq.com
+ */
+@Data
+public class SearchMeetingApplicationVo extends PageDto {
+ private String title;
+ private String applicant;
+ private String status;
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingDraftVo.java b/src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingDraftVo.java
new file mode 100644
index 0000000..6178e1d
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingDraftVo.java
@@ -0,0 +1,23 @@
+package com.ruoyi.collaborativeApproval.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.dto.PageDto;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * @author buhuazhen
+ * @date 2025/9/15
+ * @email 3038525872@qq.com
+ */
+@Data
+public class SearchMeetingDraftVo extends PageDto {
+ private String title;
+
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private Date meetingDate;
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingRoomVo.java b/src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingRoomVo.java
new file mode 100644
index 0000000..1af4c04
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingRoomVo.java
@@ -0,0 +1,23 @@
+package com.ruoyi.collaborativeApproval.vo;
+
+import com.ruoyi.dto.PageDto;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author buhuazhen
+ * @date 2025/9/15
+ * @email 3038525872@qq.com
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SearchMeetingRoomVo extends PageDto {
+
+ private String name;
+ private String location;
+
+}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingUseVo.java b/src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingUseVo.java
new file mode 100644
index 0000000..a782b19
--- /dev/null
+++ b/src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingUseVo.java
@@ -0,0 +1,19 @@
+package com.ruoyi.collaborativeApproval.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @author buhuazhen
+ * @date 2025/9/16
+ * @email 3038525872@qq.com
+ */
+@Data
+public class SearchMeetingUseVo {
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private Date meetingDate;
+}
diff --git a/src/main/resources/mapper/collaborativeApproval/MeetApplicationMapper.xml b/src/main/resources/mapper/collaborativeApproval/MeetApplicationMapper.xml
new file mode 100644
index 0000000..a195317
--- /dev/null
+++ b/src/main/resources/mapper/collaborativeApproval/MeetApplicationMapper.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.collaborativeApproval.mapper.MeetApplicationMapper">
+
+ <resultMap id="BaseResultMap" type="com.ruoyi.collaborativeApproval.pojo.MeetApplication">
+ <id property="id" column="id" jdbcType="BIGINT"/>
+ <result property="title" column="title" jdbcType="VARCHAR"/>
+ <result property="type" column="type" jdbcType="VARCHAR"/>
+ <result property="roomId" column="room_id" jdbcType="BIGINT"/>
+ <result property="host" column="host" jdbcType="VARCHAR"/>
+ <result property="meetingDate" column="meeting_date" jdbcType="DATE"/>
+ <result property="startTime" column="start_time" jdbcType="TIMESTAMP"/>
+ <result property="endTime" column="end_time" jdbcType="TIMESTAMP"/>
+ <result property="participants" column="participants" jdbcType="VARCHAR"/>
+ <result property="description" column="description" jdbcType="VARCHAR"/>
+ <result property="applicationType" column="application_type" jdbcType="VARCHAR"/>
+ <result property="status" column="status" jdbcType="TINYINT"/>
+ <result property="applicant" column="applicant" jdbcType="VARCHAR"/>
+ <result property="createUser" column="create_user" jdbcType="BIGINT"/>
+ <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+ <result property="updateUser" column="update_user" jdbcType="BIGINT"/>
+ <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+ <result property="tenantId" column="tenant_id" jdbcType="BIGINT"/>
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ id,title,type,
+ room_id,host,meeting_date,
+ start_time,end_time,participants,
+ description,application_type,status,
+ applicant,create_user,create_time,
+ update_user,update_time,tenant_id
+ </sql>
+ <select id="getMeetSummary" resultType="com.ruoyi.collaborativeApproval.dto.MeetSummaryDto">
+ SELECT
+ COUNT(*) AS total,
+ SUM(CASE
+ WHEN meeting_date = CURDATE() AND start_time <![CDATA[<=]]> NOW() AND end_time <![CDATA[>]]> NOW()
+ THEN 1 ELSE 0
+ END) AS underWay,
+ SUM(CASE
+ WHEN (meeting_date <![CDATA[<]]> CURDATE() OR (meeting_date = CURDATE() AND end_time <![CDATA[<=]]> NOW()))
+ THEN 1 ELSE 0
+ END) AS completed,
+ SUM(CASE
+ WHEN meeting_date <![CDATA[>=]]> CURDATE() AND start_time <![CDATA[>]]> NOW()
+ THEN 1 ELSE 0
+ END) AS toStart
+ FROM meet_application as t1
+ where status = 1 OR application_type='notification'
+ </select>
+ <select id="getMeetSummaryItems" resultType="com.ruoyi.collaborativeApproval.dto.MeetingSimpleDto">
+ select t1.id as id,
+ t1.title as title,
+ (CASE
+ WHEN t1.meeting_date = CURDATE() AND t1.start_time <![CDATA[<=]]> NOW() AND t1.end_time <![CDATA[>]]> NOW()
+ THEN 2
+ WHEN t1.meeting_date <![CDATA[>=]]> CURDATE() AND t1.start_time <![CDATA[>]]> NOW() then 1
+ ELSE 0 end) as status,
+ t1.start_time as start_time,
+ t1.end_time as end_time,
+ CONCAT(t2.name, '(', t2.location, ')') as location,
+ t1.host as host,
+ t1.participants as participants,
+ t3.content as content
+ from meet_application
+ as t1
+ left join meeting_room as t2 on t1.room_id = t2.id
+ left join meeting_minutes as t3 on t1.id = t3.meeting_id
+ where t1.status = 1
+ OR t1.application_type = 'notification'
+ order by (CASE
+ WHEN t1.meeting_date = CURDATE() AND t1.start_time <![CDATA[<=]]> NOW() AND t1.end_time <![CDATA[>]]> NOW()
+ THEN 2
+ WHEN t1.meeting_date <![CDATA[>=]]> CURDATE() AND t1.start_time > NOW() then 1
+ ELSE 0 end) desc, t1.end_time desc
+ </select>
+</mapper>
diff --git a/src/main/resources/mapper/collaborativeApproval/MeetDraftMapper.xml b/src/main/resources/mapper/collaborativeApproval/MeetDraftMapper.xml
new file mode 100644
index 0000000..3b2c86a
--- /dev/null
+++ b/src/main/resources/mapper/collaborativeApproval/MeetDraftMapper.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.collaborativeApproval.mapper.MeetDraftMapper">
+
+ <resultMap id="BaseResultMap" type="com.ruoyi.collaborativeApproval.pojo.MeetDraft">
+ <id property="id" column="id" jdbcType="BIGINT"/>
+ <result property="roomId" column="room_id" jdbcType="BIGINT"/>
+ <result property="title" column="title" jdbcType="VARCHAR"/>
+ <result property="host" column="host" jdbcType="VARCHAR"/>
+ <result property="meetingDate" column="meeting_date" jdbcType="DATE"/>
+ <result property="startTime" column="start_time" jdbcType="TIMESTAMP"/>
+ <result property="endTime" column="end_time" jdbcType="TIMESTAMP"/>
+ <result property="participants" column="participants" jdbcType="INTEGER"/>
+ <result property="participantList" column="participant_list" jdbcType="VARCHAR"/>
+ <result property="description" column="description" jdbcType="VARCHAR"/>
+ <result property="creator" column="creator" jdbcType="VARCHAR"/>
+ <result property="createUser" column="create_user" jdbcType="VARCHAR"/>
+ <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+ <result property="updateUser" column="update_user" jdbcType="VARCHAR"/>
+ <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+ <result property="tenantId" column="tenant_id" jdbcType="BIGINT"/>
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ id,room_id,title,
+ host,meeting_date,start_time,
+ end_time,participants,participant_list,
+ description,creator,create_user,
+ create_time,update_user,update_time,
+ tenant_id
+ </sql>
+</mapper>
diff --git a/src/main/resources/mapper/collaborativeApproval/MeetingMinutesMapper.xml b/src/main/resources/mapper/collaborativeApproval/MeetingMinutesMapper.xml
new file mode 100644
index 0000000..5904e3a
--- /dev/null
+++ b/src/main/resources/mapper/collaborativeApproval/MeetingMinutesMapper.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.collaborativeApproval.mapper.MeetingMinutesMapper">
+
+ <resultMap id="BaseResultMap" type="com.ruoyi.collaborativeApproval.pojo.MeetingMinutes">
+ <id property="id" column="id" jdbcType="BIGINT"/>
+ <result property="meetingId" column="meeting_id" jdbcType="BIGINT"/>
+ <result property="title" column="title" jdbcType="VARCHAR"/>
+ <result property="content" column="content" jdbcType="VARCHAR"/>
+ <result property="createUser" column="create_user" jdbcType="BIGINT"/>
+ <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+ <result property="updateUser" column="update_user" jdbcType="BIGINT"/>
+ <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+ <result property="tenantId" column="tenant_id" jdbcType="BIGINT"/>
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ id,meeting_id,title,
+ content,create_user,create_time,
+ update_user,update_time,tenant_id
+ </sql>
+</mapper>
diff --git a/src/main/resources/mapper/collaborativeApproval/MeetingRoomMapper.xml b/src/main/resources/mapper/collaborativeApproval/MeetingRoomMapper.xml
new file mode 100644
index 0000000..feac888
--- /dev/null
+++ b/src/main/resources/mapper/collaborativeApproval/MeetingRoomMapper.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.collaborativeApproval.mapper.MeetingRoomMapper">
+
+ <resultMap id="BaseResultMap" type="com.ruoyi.collaborativeApproval.pojo.MeetingRoom">
+ <id property="id" column="id" jdbcType="BIGINT"/>
+ <result property="name" column="name" jdbcType="VARCHAR"/>
+ <result property="location" column="location" jdbcType="VARCHAR"/>
+ <result property="capacity" column="capacity" jdbcType="INTEGER"/>
+ <result property="equipment" column="equipment" jdbcType="VARCHAR"/>
+ <result property="status" column="status" jdbcType="TINYINT"/>
+ <result property="remark" column="remark" jdbcType="VARCHAR"/>
+ <result property="createUser" column="create_user" jdbcType="VARCHAR"/>
+ <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+ <result property="updateUser" column="update_user" jdbcType="VARCHAR"/>
+ <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+ <result property="tenantId" column="tenant_id" jdbcType="BIGINT"/>
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ id,name,location,
+ capacity,equipment,status,
+ remark,create_user,create_time,
+ update_user,update_time,tenant_id
+ </sql>
+</mapper>
--
Gitblit v1.9.3