refactor(health): 按文档规范重构用药管理模块

【重大重构】完全按照功能规划文档重写

## 表结构变更
- medication_plan: 用药计划表(按文档设计)
- medication_task: 服药任务表(按文档设计)
- medication_remind_log: 提醒日志表
- medicine_stock_log: 库存变动表
- medication_adherence_stats: 统计汇总表

## 字段变更
- frequency_config: JSONB 频次配置
- time_slots: JSONB 时段配置
- family_member_ids: JSONB 家属通知
- status: 状态值按文档规范(0-待服药 1-已服药 2-漏服 3-跳过)

## 新增组件
- JsonNodeTypeHandler: PostgreSQL JSONB 类型处理器

## SQL 脚本
- medication_module_pg.sql: 建表语句(PostgreSQL)
- medication_menu_pg.sql: 菜单权限配置
- medication_job_pg.sql: 定时任务配置
This commit is contained in:
bot5
2026-03-19 20:19:56 +08:00
parent 8d71009f3a
commit 191f6e1caf
46 changed files with 2159 additions and 3243 deletions

64
sql/medication_job_pg.sql Normal file
View File

@@ -0,0 +1,64 @@
-- ========================================
-- 用药管理模块 - 定时任务配置
-- PostgreSQL 版本
-- ========================================
-- 1. 每日生成服药任务(每日 00:05 执行)
INSERT INTO sys_job (job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark)
VALUES (
'每日生成服药任务',
'DEFAULT',
'medicationTaskJob.generateDailyTasks',
'0 5 0 * * ?',
'2',
'1',
'0',
'admin',
NOW(),
'每日凌晨00:05自动生成当天的服药任务'
);
-- 2. 扫描并发送服药提醒(每分钟执行)
INSERT INTO sys_job (job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark)
VALUES (
'扫描服药提醒',
'DEFAULT',
'medicationRemindJob.scanAndSendReminders',
'0 * * * * ?',
'2',
'1',
'0',
'admin',
NOW(),
'每分钟扫描待提醒的服药任务并发送提醒'
);
-- 3. 扫描超时未服药记录每5分钟执行
INSERT INTO sys_job (job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark)
VALUES (
'扫描超时未服药',
'DEFAULT',
'medicationRemindJob.scanOverdueRecords',
'0 */5 * * * ?',
'2',
'1',
'0',
'admin',
NOW(),
'每5分钟扫描超时未服药的记录并发送提醒'
);
-- 4. 标记过期服药记录(每小时执行)
INSERT INTO sys_job (job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark)
VALUES (
'标记过期服药记录',
'DEFAULT',
'medicationTaskJob.markExpiredRecords',
'0 0 * * * ?',
'2',
'1',
'0',
'admin',
NOW(),
'每小时检查并标记过期的服药记录'
);