CREATE TABLE `yz_tenant_tasks` ( -- 主键与基础标识 `id` bigint NOT NULL AUTO_INCREMENT COMMENT '任务ID(主键)', `tenant_id` bigint NOT NULL COMMENT '租户ID(多租户隔离,如无多租户需求可设为默认1)', `task_no` varchar(64) NOT NULL COMMENT '任务编号(唯一标识,如TASK20251112001)', -- 任务核心信息 `task_name` varchar(255) NOT NULL COMMENT '任务名称', `task_desc` text COMMENT '任务描述(富文本内容,支持图片/表格)', `task_type` varchar(32) DEFAULT 'common' COMMENT '任务类型(common=普通任务,project=项目任务,repeat=重复任务,可自定义)', `business_tag` varchar(64) COMMENT '业务标签(多个标签用逗号分隔,如"紧急,日常协作")', -- 关联信息 `parent_task_id` bigint DEFAULT NULL COMMENT '父任务ID(子任务关联用,无父任务则为NULL)', `project_id` bigint DEFAULT NULL COMMENT '关联项目ID(关联OA项目模块)', `related_id` bigint DEFAULT NULL COMMENT '关联其他模块ID(如审批单ID、客户ID)', `related_type` varchar(32) COMMENT '关联模块类型(approval=审批单,customer=客户,为空则无关联)', -- 人员配置 `creator_id` bigint NOT NULL COMMENT '创建人ID', `creator_name` varchar(64) NOT NULL COMMENT '创建人姓名', `principal_id` bigint NOT NULL COMMENT '负责人ID', `principal_name` varchar(64) NOT NULL COMMENT '负责人姓名', `participant_ids` varchar(512) COMMENT '参与人ID(多个用逗号分隔)', `participant_names` varchar(512) COMMENT '参与人姓名(多个用逗号分隔)', `cc_ids` varchar(512) COMMENT '抄送人ID(多个用逗号分隔)', `cc_names` varchar(512) COMMENT '抄送人姓名(多个用逗号分隔)', -- 时间配置 `plan_start_time` datetime DEFAULT NULL COMMENT '计划开始时间', `plan_end_time` datetime NOT NULL COMMENT '计划截止时间', `actual_start_time` datetime DEFAULT NULL COMMENT '实际开始时间', `actual_end_time` datetime DEFAULT NULL COMMENT '实际结束时间', `estimated_hours` decimal(10,2) DEFAULT NULL COMMENT '预估工时(小时)', `actual_hours` decimal(10,2) DEFAULT NULL COMMENT '实际工时(小时)', -- 状态与优先级 `task_status` varchar(32) NOT NULL DEFAULT 'not_started' COMMENT '任务状态(not_started=未开始,in_progress=进行中,paused=暂停,completed=已完成,closed=已关闭,可自定义)', `priority` varchar(16) NOT NULL DEFAULT 'medium' COMMENT '优先级(high=高,medium=中,low=低,urgent=紧急)', `progress` tinyint NOT NULL DEFAULT 0 COMMENT '任务进度(0-100,子任务存在时自动计算)', -- 规则与审批配置 `need_approval` tinyint NOT NULL DEFAULT 0 COMMENT '是否需要完成审批(0=否,1=是)', `approval_id` bigint DEFAULT NULL COMMENT '关联审批单ID(完成审批时填写)', `delay_approved` tinyint NOT NULL DEFAULT 0 COMMENT '是否已延期审批(0=否,1=是)', `old_plan_end_time` datetime COMMENT '原计划截止时间(延期时记录)', -- 重复任务配置 `repeat_type` varchar(16) DEFAULT NULL COMMENT '重复类型(daily=按日,weekly=按周,monthly=按月,为空则非重复任务)', `repeat_cycle` int DEFAULT NULL COMMENT '重复周期(如每周重复则为7,每月重复则为30)', `repeat_end_time` datetime DEFAULT NULL COMMENT '重复截止时间(重复任务终止时间)', -- 辅助字段 `attachment_ids` varchar(1024) COMMENT '附件ID(关联文件表,多个用逗号分隔)', `remark` varchar(512) COMMENT '备注(额外说明)', `is_archived` tinyint NOT NULL DEFAULT 0 COMMENT '是否归档(0=未归档,1=已归档)', `archive_time` datetime COMMENT '归档时间', -- 审计字段 `created_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` tinyint NOT NULL DEFAULT 0 COMMENT '逻辑删除(0=正常,1=删除)', `deleted_time` datetime COMMENT '删除时间', `operator_id` bigint COMMENT '最后操作人ID', `operator_name` varchar(64) COMMENT '最后操作人姓名', -- 索引 PRIMARY KEY (`id`), UNIQUE KEY `uk_tenant_task_no` (`tenant_id`,`task_no`) COMMENT '租户+任务编号唯一索引', KEY `idx_tenant_principal` (`tenant_id`,`principal_id`) COMMENT '租户+负责人索引(查询个人任务)', KEY `idx_tenant_status` (`tenant_id`,`task_status`) COMMENT '租户+状态索引(筛选任务状态)', KEY `idx_tenant_project` (`tenant_id`,`project_id`) COMMENT '租户+项目索引(查询项目下任务)', KEY `idx_tenant_plan_end_time` (`tenant_id`,`plan_end_time`) COMMENT '租户+截止时间索引(逾期提醒、日历视图)', KEY `idx_parent_task_id` (`parent_task_id`) COMMENT '父任务ID索引(查询子任务)' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='OA系统任务表(多租户适配)';