buhuazhen
2025-09-17 064c8bbbbfddb866307356d62f30dbc9e5710e96
feat(collaborativeApproval): 新增会议管理相关功能

- 添加会议室管理功能,包括会议室列表、保存、删除等操作
- 实现会议草稿管理,支持草稿列表展示和保存功能
- 新增会议申请和审批相关功能- 实现会议使用查询和会议发布功能
- 添加会议纪要管理,包括纪要保存和查询功能
- 实现会议统计和会议简要信息展示
已添加23个文件
1292 ■■■■■ 文件已修改
src/main/java/com/ruoyi/collaborativeApproval/controller/MeetingController.java 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/collaborativeApproval/dto/MeetSummaryDto.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/collaborativeApproval/dto/MeetUseDto.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/collaborativeApproval/dto/MeetingItem.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/collaborativeApproval/dto/MeetingSimpleDto.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetApplicationMapper.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetDraftMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetingMinutesMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/collaborativeApproval/mapper/MeetingRoomMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetApplication.java 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetDraft.java 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetingMinutes.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/collaborativeApproval/pojo/MeetingRoom.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/collaborativeApproval/service/MeetingService.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/collaborativeApproval/service/impl/MeetingServiceImpl.java 243 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingApplicationVo.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingDraftVo.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingRoomVo.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/collaborativeApproval/vo/SearchMeetingUseVo.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/collaborativeApproval/MeetApplicationMapper.xml 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/collaborativeApproval/MeetDraftMapper.xml 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/collaborativeApproval/MeetingMinutesMapper.xml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/collaborativeApproval/MeetingRoomMapper.xml 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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());
    }
}
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;
}
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<>();
}
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;
}
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;
}
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 é’ˆå¯¹è¡¨ã€meet_application(会议申请表)】的数据库操作Mapper
* @createDate 2025-09-15 15:54:20
* @Entity com.ruoyi.collaborativeApproval.pojo.MeetApplication
*/
public interface MeetApplicationMapper extends BaseMapper<MeetApplication> {
    MeetSummaryDto getMeetSummary();
    List<MeetingSimpleDto> getMeetSummaryItems();
}
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 é’ˆå¯¹è¡¨ã€meet_draft(会议草稿表)】的数据库操作Mapper
* @createDate 2025-09-15 14:10:49
* @Entity com.ruoyi.collaborativeApproval.pojo.MeetDraft
*/
public interface MeetDraftMapper extends BaseMapper<MeetDraft> {
}
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 é’ˆå¯¹è¡¨ã€meeting_minutes(会议纪要表)】的数据库操作Mapper
* @createDate 2025-09-17 10:25:20
* @Entity com.ruoyi.collaborativeApproval.pojo.MeetingMinutes
*/
public interface MeetingMinutesMapper extends BaseMapper<MeetingMinutes> {
}
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 é’ˆå¯¹è¡¨ã€meeting_room(会议室表)】的数据库操作Mapper
* @createDate 2025-09-15 10:32:50
* @Entity com.ruoyi.collaborativeApproval.pojo.MeetingRoom
*/
public interface MeetingRoomMapper extends BaseMapper<MeetingRoom> {
}
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;
    /**
     * ä¼šè®®å®¤ID
     */
    @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;
    /**
     * å‚会人员(JSON格式存储ID数组)
     */
    @TableField(value = "participants")
    private String participants;
    /**
     * ä¼šè®®è¯´æ˜Ž
     */
    @TableField(value = "description")
    private String description;
    /**
     * ç”³è¯·ç±»åž‹ï¼ˆapproval:审批流程, 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;
}
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;
}
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;
    /**
     * å…³è”的会议ID
     */
    @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;
}
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 {
    /**
     * ä¼šè®®å®¤ID
     */
    @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;
}
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();
}
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();
    }
}
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;
}
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;
}
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;
}
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;
}
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>
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>
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>
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>