-- ============================================= -- 定时任务调度服务 - 数据库初始化脚本 -- ============================================= -- 创建数据库 CREATE DATABASE IF NOT EXISTS erp_task DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE erp_task; -- 定时任务表 CREATE TABLE IF NOT EXISTS scheduled_task ( id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '任务ID', task_name VARCHAR(100) NOT NULL COMMENT '任务名称', description VARCHAR(500) COMMENT '任务描述', task_group VARCHAR(50) NOT NULL COMMENT '任务分组', cron_expression VARCHAR(100) NOT NULL COMMENT 'Cron表达式', task_class VARCHAR(500) NOT NULL COMMENT '任务类名或Bean名称', method_name VARCHAR(100) COMMENT '任务方法名', task_params TEXT COMMENT '任务参数(JSON格式)', status VARCHAR(20) NOT NULL DEFAULT 'DRAFT' COMMENT '任务状态: RUNNING/STOPPED/PAUSED/DRAFT/DELETED/ERROR', concurrent BOOLEAN NOT NULL DEFAULT TRUE COMMENT '是否允许并发', sync BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否同步执行', task_type VARCHAR(20) NOT NULL DEFAULT 'BEAN' COMMENT '任务类型: BEAN/CLASS/XXL_JOB', xxl_job_id BIGINT COMMENT 'XXL-Job任务ID(兼容模式)', max_retries INT NOT NULL DEFAULT 3 COMMENT '最大重试次数', retry_interval INT NOT NULL DEFAULT 60 COMMENT '重试间隔(秒)', timeout INT COMMENT '超时时间(秒)', alert_emails VARCHAR(500) COMMENT '告警邮箱(逗号分隔)', alert_phones VARCHAR(200) COMMENT '告警手机号(逗号分隔)', alert_enabled BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否启用告警', misfire_policy VARCHAR(20) DEFAULT 'DO_NOTHING' COMMENT 'Misfire策略: DO_NOTHING/FIRE_NOW/FIRE_ONCE', next_fire_time DATETIME COMMENT '下次执行时间', prev_fire_time DATETIME COMMENT '上次执行时间', execute_count BIGINT NOT NULL DEFAULT 0 COMMENT '执行次数', owner VARCHAR(50) COMMENT '负责人', remark VARCHAR(500) COMMENT '备注', tenant_id VARCHAR(50) COMMENT '租户ID', created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', created_by VARCHAR(50) COMMENT '创建人', updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', updated_by VARCHAR(50) COMMENT '更新人', INDEX idx_task_name (task_name), INDEX idx_task_group (task_group), INDEX idx_task_status (status), INDEX idx_cron (cron_expression), UNIQUE KEY uk_name_group (task_name, task_group) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='定时任务表'; -- 任务执行日志表 CREATE TABLE IF NOT EXISTS task_execution_log ( id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '记录ID', task_id BIGINT NOT NULL COMMENT '任务ID', task_name VARCHAR(100) NOT NULL COMMENT '任务名称', task_group VARCHAR(50) COMMENT '任务分组', batch_no VARCHAR(64) NOT NULL COMMENT '执行批次号', trigger_time DATETIME NOT NULL COMMENT '触发时间', start_time DATETIME COMMENT '开始时间', end_time DATETIME COMMENT '结束时间', status VARCHAR(20) NOT NULL COMMENT '执行状态: RUNNING/SUCCESS/FAILED/RETRYING/TIMEOUT/CANCELLED', duration BIGINT COMMENT '执行耗时(毫秒)', executor_node VARCHAR(50) COMMENT '执行节点IP', result TEXT COMMENT '执行结果', error_trace TEXT COMMENT '错误堆栈', retry_count INT NOT NULL DEFAULT 0 COMMENT '重试次数', is_retry BOOLEAN DEFAULT FALSE COMMENT '是否重试执行', task_params TEXT COMMENT '任务参数', tenant_id VARCHAR(50) COMMENT '租户ID', created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', INDEX idx_log_task_id (task_id), INDEX idx_log_status (status), INDEX idx_log_start_time (start_time), INDEX idx_log_trigger_time (trigger_time), INDEX idx_batch_no (batch_no) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='任务执行日志表'; -- Quartz相关表 (如果使用JDBC存储) -- 这些表由Quartz自动创建,这里只是预留 -- CREATE TABLE QRTZ_JOB_DETAILS (...) ENGINE=InnoDB; -- CREATE TABLE QRTZ_TRIGGERS (...) ENGINE=InnoDB; -- CREATE TABLE QRTZ_CRON_TRIGGERS (...) ENGINE=InnoDB; -- 初始化示例数据 INSERT INTO scheduled_task (task_name, description, task_group, cron_expression, task_class, method_name, task_type, status, max_retries, alert_enabled, owner) VALUES ('数据同步任务', '每日凌晨同步业务数据', 'sync', '0 0 2 * * ?', 'dataSyncTask', 'execute', 'BEAN', 'STOPPED', 3, TRUE, 'admin'), ('报表生成任务', '每周一生成周报', 'report', '0 0 8 ? * MON', 'reportTask', 'generate', 'BEAN', 'STOPPED', 2, TRUE, 'admin'), ('缓存清理任务', '每小时清理过期缓存', 'system', '0 0 * * * ?', 'cacheCleanTask', 'clean', 'BEAN', 'RUNNING', 1, FALSE, 'system');