- 新增 MedicationTaskJob:每日生成服药任务、标记过期记录 - 新增 MedicationRemindJob:扫描并发送服药提醒 - 扩展 HealthMedicationRecordMapper:新增统计和查询方法 - 新增定时任务配置SQL和提醒日志表
90 lines
3.1 KiB
SQL
90 lines
3.1 KiB
SQL
-- ========================================
|
||
-- 用药任务定时任务配置
|
||
-- 在 sys_job 表中插入定时任务
|
||
-- ========================================
|
||
|
||
-- 1. 每日生成服药任务(每日 00:05 执行)
|
||
INSERT INTO sys_job (job_id, job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark)
|
||
VALUES (
|
||
nextval('seq_sys_job'),
|
||
'每日生成服药任务',
|
||
'DEFAULT',
|
||
'medicationTaskJob.generateDailyTasks',
|
||
'0 5 0 * * ?',
|
||
'2',
|
||
'1',
|
||
'0',
|
||
'admin',
|
||
NOW(),
|
||
'每日凌晨00:05自动生成当天的服药任务'
|
||
);
|
||
|
||
-- 2. 扫描并发送服药提醒(每分钟执行)
|
||
INSERT INTO sys_job (job_id, job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark)
|
||
VALUES (
|
||
nextval('seq_sys_job'),
|
||
'扫描服药提醒',
|
||
'DEFAULT',
|
||
'medicationRemindJob.scanAndSendReminders',
|
||
'0 * * * * ?',
|
||
'2',
|
||
'1',
|
||
'0',
|
||
'admin',
|
||
NOW(),
|
||
'每分钟扫描待提醒的服药任务并发送提醒'
|
||
);
|
||
|
||
-- 3. 扫描超时未服药记录(每5分钟执行)
|
||
INSERT INTO sys_job (job_id, job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark)
|
||
VALUES (
|
||
nextval('seq_sys_job'),
|
||
'扫描超时未服药',
|
||
'DEFAULT',
|
||
'medicationRemindJob.scanOverdueRecords',
|
||
'0 */5 * * * ?',
|
||
'2',
|
||
'1',
|
||
'0',
|
||
'admin',
|
||
NOW(),
|
||
'每5分钟扫描超时未服药的记录并发送提醒'
|
||
);
|
||
|
||
-- 4. 标记过期服药记录(每小时执行)
|
||
INSERT INTO sys_job (job_id, job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark)
|
||
VALUES (
|
||
nextval('seq_sys_job'),
|
||
'标记过期服药记录',
|
||
'DEFAULT',
|
||
'medicationTaskJob.markExpiredRecords',
|
||
'0 0 * * * ?',
|
||
'2',
|
||
'1',
|
||
'0',
|
||
'admin',
|
||
NOW(),
|
||
'每小时检查并标记过期的服药记录'
|
||
);
|
||
|
||
-- ========================================
|
||
-- 提醒日志表(可选,用于记录提醒历史)
|
||
-- ========================================
|
||
DROP TABLE IF EXISTS health_medication_remind_log;
|
||
CREATE TABLE health_medication_remind_log (
|
||
id BIGINT NOT NULL,
|
||
record_id BIGINT NOT NULL,
|
||
plan_id BIGINT NOT NULL,
|
||
person_id BIGINT NOT NULL,
|
||
remind_type CHAR(1) DEFAULT '1' COMMENT '提醒类型:1-按时提醒 2-超时提醒 3-漏服通知家属',
|
||
remind_time DATETIME NOT NULL,
|
||
remind_channel VARCHAR(20) DEFAULT 'app' COMMENT '提醒渠道:app/sms/wechat',
|
||
remind_result CHAR(1) DEFAULT '1' COMMENT '结果:1-成功 2-失败',
|
||
error_msg VARCHAR(500) NULL,
|
||
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (id)
|
||
) ENGINE=InnoDB COMMENT='用药提醒日志表';
|
||
|
||
CREATE INDEX idx_rmrl_record_id ON health_medication_remind_log(record_id);
|
||
CREATE INDEX idx_rmrl_person_id ON health_medication_remind_log(person_id);
|
||
CREATE INDEX idx_rmrl_remind_time ON health_medication_remind_log(remind_time); |