-- OA数据同步定时任务配置SQL
-- 在sys_job表中添加定时任务

-- 1. OA完整同步任务（推荐）- 先同步部门，再同步用户
INSERT INTO sys_job (job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark)
VALUES 
('OA数据同步', 'DEFAULT', 'oaSyncTask.syncOaData', '0 0 2 * * ?', '3', '1', '1', 'admin', sysdate(), 
'每天凌晨2点自动同步OA部门和用户数据（先部门后用户）。默认停用，需手动启用。');

-- 2. 部门同步任务（独立）
INSERT INTO sys_job (job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark)
VALUES 
('OA部门同步', 'DEFAULT', 'departmentSyncTask.syncDepartments', '0 0 2 * * ?', '3', '1', '1', 'admin', sysdate(), 
'每天凌晨2点同步OA部门数据。默认停用，建议使用"OA数据同步"任务。');

-- 3. 用户同步任务（独立）- 注意：必须在部门同步之后执行
INSERT INTO sys_job (job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark)
VALUES 
('OA用户同步', 'DEFAULT', 'userSyncTask.syncUsers', '0 0 3 * * ?', '3', '1', '1', 'admin', sysdate(), 
'每天凌晨3点同步OA用户数据。默认停用，建议使用"OA数据同步"任务。');

-- 说明：
-- job_name: 任务名称
-- job_group: 任务组名（DEFAULT为默认组）
-- invoke_target: 调用目标字符串（Bean名称.方法名）
-- cron_expression: cron表达式
--   - '0 0 2 * * ?' = 每天凌晨2点执行
--   - '0 0 3 * * ?' = 每天凌晨3点执行
--   - '0 0 */4 * * ?' = 每4小时执行一次
--   - '0 0/30 * * * ?' = 每30分钟执行一次
-- misfire_policy: 错过执行策略（1=立即执行，2=执行一次，3=放弃执行）
-- concurrent: 是否并发（0=允许，1=禁止）
-- status: 状态（0=正常，1=暂停）
-- create_by: 创建者
-- create_time: 创建时间
-- remark: 备注说明

-- 使用建议：
-- 1. 推荐使用"OA数据同步"任务，它会按正确顺序执行部门和用户同步
-- 2. 如果需要分别控制，可以使用独立的部门和用户同步任务
-- 3. 确保用户同步任务在部门同步任务之后执行（时间间隔至少5分钟）
