This commit is contained in:
Your Name
2026-07-16 09:04:40 +08:00
parent f6688a740d
commit 500038601c
287 changed files with 1202 additions and 286 deletions
@@ -0,0 +1,17 @@
-- 自动分配日志菜单(挂在「数据统计」目录下,紧邻复诊接诊率)
-- 页面路径: /stats/auto_assign_log
-- 前端组件: /stats/auto_assign_log/index
-- 查询权限: stats.autoAssignLog/lists
-- 数据来源: zyt_tcm_diagnosis_auto_assign_log(定时命令 tcm:auto-assign-pending 写入)
SET @stats_root_id = (SELECT id FROM zyt_system_menu WHERE name = '数据统计' AND type = 'M' LIMIT 1);
INSERT INTO `zyt_system_menu`
(`pid`, `type`, `name`, `icon`, `sort`, `perms`, `paths`, `component`, `selected`, `params`, `is_show`, `is_disable`, `create_time`, `update_time`)
SELECT
@stats_root_id, 'C', '自动分配日志', '', 12,
'stats.autoAssignLog/lists', '/stats/auto_assign_log', '/stats/auto_assign_log/index',
'', '', 1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
FROM DUAL
WHERE @stats_root_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM zyt_system_menu WHERE perms = 'stats.autoAssignLog/lists');
@@ -0,0 +1,21 @@
-- 注册「待分配诊单自动指派」定时任务,每天 09:00 执行一次
-- 命令本体:server/app/command/AutoAssignPendingDiagnosis.php,已在 server/config/console.php 注册为 tcm:auto-assign-pending
-- 规则:按上个自然月二诊复诊接诊率分档轮询分配(>70% 每人3条/日,60%~70% 每人2条/日,50%~60% 每人1条/日,<50% 不分)
-- 依赖:先执行同目录 add_tcm_diagnosis_auto_assign_log.sql 建日志表
-- expression 字段为 5 段标准 cron(分 时 日 月 周),依赖系统层每分钟执行 php think crontab
INSERT INTO `zyt_dev_crontab` (
`name`, `type`, `system`, `remark`, `command`, `params`,
`status`, `expression`, `create_time`, `update_time`
) VALUES (
'待分配诊单自动指派',
1,
0,
'每天按上月二诊复诊接诊率分档轮询分配待指派诊单,分配与未分配原因写入 zyt_tcm_diagnosis_auto_assign_log',
'tcm:auto-assign-pending',
'',
1,
'0 9 * * *',
UNIX_TIMESTAMP(),
UNIX_TIMESTAMP()
);
@@ -0,0 +1,29 @@
-- 待分配诊单「自动指派」执行日志表
-- 由定时命令 tcm:auto-assign-pending 写入:每条待指派诊单一行,记录分配结果与原因(为什么分配 / 为什么不分配)
-- 分档依据:上个自然月「二诊复诊接诊率」(RevisitRateLogic 口径,visit2_rate
-- >70% 日上限 3 条
-- 60%-70% 日上限 2 条
-- 50%-60% 日上限 1 条
-- <50% 或无数据 不参与分配
CREATE TABLE IF NOT EXISTS `zyt_tcm_diagnosis_auto_assign_log` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`batch_no` varchar(32) NOT NULL DEFAULT '' COMMENT '本次执行批次号(同一次命令执行相同)',
`run_date` varchar(10) NOT NULL DEFAULT '' COMMENT '执行日期 Y-m-d(当日额度按此汇总)',
`stat_month` varchar(7) NOT NULL DEFAULT '' COMMENT '接诊率统计月份 Y-m(上个自然月)',
`diagnosis_id` int unsigned NOT NULL DEFAULT 0 COMMENT '诊单ID',
`patient_name` varchar(64) NOT NULL DEFAULT '' COMMENT '患者姓名(快照)',
`patient_phone` varchar(32) NOT NULL DEFAULT '' COMMENT '患者手机号(快照)',
`action` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '结果:1=已分配 0=未分配',
`assistant_id` int unsigned NOT NULL DEFAULT 0 COMMENT '分得的医助管理员ID(未分配为0',
`assistant_name` varchar(64) NOT NULL DEFAULT '' COMMENT '分得的医助姓名(快照)',
`tier` varchar(16) NOT NULL DEFAULT '' COMMENT '接诊率档位:gt70 / 60_70 / 50_60(未分配为空)',
`visit2_rate` decimal(8,2) NULL DEFAULT NULL COMMENT '该医助上月二诊复诊接诊率(%),未分配为NULL',
`round_no` tinyint unsigned NOT NULL DEFAULT 0 COMMENT '第几轮分得(1起;未分配为0',
`reason` varchar(500) NOT NULL DEFAULT '' COMMENT '分配 / 不分配原因说明',
`create_time` int unsigned NOT NULL DEFAULT 0 COMMENT '记录时间',
PRIMARY KEY (`id`),
KEY `idx_run_date` (`run_date`),
KEY `idx_diagnosis_id` (`diagnosis_id`),
KEY `idx_assistant_run` (`assistant_id`, `run_date`),
KEY `idx_batch_no` (`batch_no`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '待分配诊单自动指派日志';