-- ============================================================================ -- Migration: 部门会议管理功能 - 数据库变更 -- Description: 部门会议登记、参会人员管理、会议工时生成 -- 1. 新建 plat_meeting 会议主表 -- 2. 新建 plat_meeting_attendee 参会人员表 -- 3. 新建 plat_meeting_work_hour 会议工时记录表 -- ============================================================================ -- 1. 会议主表 CREATE TABLE `plat_meeting` ( `id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '主键', `meeting_title` VARCHAR(256) NOT NULL COMMENT '会议标题', `meeting_content` TEXT NULL COMMENT '会议内容/议题', `meeting_date` DATETIME NOT NULL COMMENT '会议开始时间', `meeting_date_end` DATETIME NULL COMMENT '会议结束时间', `duration` DECIMAL(8,2) NULL COMMENT '会议时长(小时)', `organizer_id` INT NOT NULL COMMENT '会议负责人ID', `organizer_name` VARCHAR(64) NOT NULL COMMENT '会议负责人姓名', `status` VARCHAR(10) NOT NULL DEFAULT '10' COMMENT '状态: 10=待开始, 20=进行中, 30=已结束', `dept_id` INT NULL COMMENT '所属部门ID', `remark` TEXT NULL COMMENT '备注', `created_by` INT NOT NULL COMMENT '创建者', `created_name` VARCHAR(64) NOT NULL COMMENT '创建人', `created_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_by` INT NULL COMMENT '更新者', `updated_name` VARCHAR(64) NULL COMMENT '更新人', `updated_time` DATETIME NULL COMMENT '更新时间', `deleted_time` DATETIME NULL COMMENT '删除时间', INDEX `idx_organizer_id` (`organizer_id`), INDEX `idx_dept_id` (`dept_id`), INDEX `idx_status` (`status`), INDEX `idx_meeting_date` (`meeting_date`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='部门会议记录'; -- 2. 参会人员表 CREATE TABLE `plat_meeting_attendee` ( `id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '主键', `meeting_id` INT NOT NULL COMMENT '会议ID', `user_id` INT NOT NULL COMMENT '参会人员ID', `user_name` VARCHAR(64) NOT NULL COMMENT '参会人员姓名', `source_type` VARCHAR(10) NOT NULL DEFAULT '10' COMMENT '添加来源: 10=手动选择, 20=按部门, 30=按角色', `source_id` INT NULL COMMENT '来源ID(部门ID/角色ID)', `work_hour_generated` TINYINT NOT NULL DEFAULT 0 COMMENT '是否已生成工时: 0=否, 1=是', `created_by` INT NOT NULL COMMENT '创建者', `created_name` VARCHAR(64) NOT NULL COMMENT '创建人', `created_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_by` INT NULL COMMENT '更新者', `updated_name` VARCHAR(64) NULL COMMENT '更新人', `updated_time` DATETIME NULL COMMENT '更新时间', `deleted_time` DATETIME NULL COMMENT '删除时间', INDEX `idx_meeting_id` (`meeting_id`), INDEX `idx_user_id` (`user_id`), UNIQUE KEY `uk_meeting_user` (`meeting_id`, `user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='会议参会人员'; -- 3. 会议工时记录表 CREATE TABLE `plat_meeting_work_hour` ( `id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '主键', `meeting_id` INT NOT NULL COMMENT '关联会议ID', `attendee_id` INT NOT NULL COMMENT '参会记录ID(plat_meeting_attendee.id)', `user_id` INT NOT NULL COMMENT '人员ID', `user_name` VARCHAR(64) NOT NULL COMMENT '人员姓名', `work_date` DATETIME NOT NULL COMMENT '工时日期', `work_hour` DECIMAL(8,2) NOT NULL COMMENT '工时(小时)', `remark` TEXT NULL COMMENT '工作内容备注', `created_by` INT NOT NULL COMMENT '创建者', `created_name` VARCHAR(64) NOT NULL COMMENT '创建人', `created_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_by` INT NULL COMMENT '更新者', `updated_name` VARCHAR(64) NULL COMMENT '更新人', `updated_time` DATETIME NULL COMMENT '更新时间', `deleted_time` DATETIME NULL COMMENT '删除时间', INDEX `idx_meeting_id` (`meeting_id`), INDEX `idx_user_id` (`user_id`), INDEX `idx_work_date` (`work_date`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='会议工时记录';