-- ===================================================== -- XL监狱综合管理平台 - 测评执行模块数据库迁移脚本 -- 简化版(直接执行,无需 IF 判断) -- ===================================================== -- ===================================================== -- 1. 更新 prison_questionnaire_record 表结构 -- 添加测评执行所需字段 -- ===================================================== -- 添加问卷名称字段 ALTER TABLE `prison_questionnaire_record` ADD COLUMN `questionnaire_name` varchar(200) DEFAULT NULL COMMENT '问卷名称' AFTER `questionnaire_id`; -- 添加罪犯姓名字段 ALTER TABLE `prison_questionnaire_record` ADD COLUMN `prisoner_name` varchar(100) DEFAULT NULL COMMENT '罪犯姓名' AFTER `prisoner_no`; -- 添加开始时间字段 ALTER TABLE `prison_questionnaire_record` ADD COLUMN `start_time` datetime DEFAULT NULL COMMENT '开始时间'; -- 添加结束时间字段 ALTER TABLE `prison_questionnaire_record` ADD COLUMN `end_time` datetime DEFAULT NULL COMMENT '结束时间'; -- 添加截止日期字段 ALTER TABLE `prison_questionnaire_record` ADD COLUMN `deadline` datetime DEFAULT NULL COMMENT '截止日期'; -- 添加客观题得分字段 ALTER TABLE `prison_questionnaire_record` ADD COLUMN `objective_score` decimal(10,2) DEFAULT 0.00 COMMENT '客观题得分'; -- 添加主观题得分字段 ALTER TABLE `prison_questionnaire_record` ADD COLUMN `subjective_score` decimal(10,2) DEFAULT 0.00 COMMENT '主观题得分'; -- 添加总分字段 ALTER TABLE `prison_questionnaire_record` ADD COLUMN `total_score` decimal(10,2) DEFAULT NULL COMMENT '总分'; -- 添加及格分数字段 ALTER TABLE `prison_questionnaire_record` ADD COLUMN `pass_score` decimal(10,2) DEFAULT NULL COMMENT '及格分数'; -- 添加及格状态字段 ALTER TABLE `prison_questionnaire_record` ADD COLUMN `pass_status` tinyint DEFAULT NULL COMMENT '及格状态:1-及格 2-不及格 3-待评阅'; -- 添加风险等级字段 ALTER TABLE `prison_questionnaire_record` ADD COLUMN `risk_level` tinyint DEFAULT NULL COMMENT '风险等级:1-高风险 2-中风险 3-低风险'; -- 添加评阅人ID字段 ALTER TABLE `prison_questionnaire_record` ADD COLUMN `evaluator_id` bigint DEFAULT NULL COMMENT '评阅人ID'; -- 添加评阅人姓名字段 ALTER TABLE `prison_questionnaire_record` ADD COLUMN `evaluator_name` varchar(100) DEFAULT NULL COMMENT '评阅人姓名'; -- 添加评阅时间字段 ALTER TABLE `prison_questionnaire_record` ADD COLUMN `evaluate_time` datetime DEFAULT NULL COMMENT '评阅时间'; -- 添加参与人数字段 ALTER TABLE `prison_questionnaire_record` ADD COLUMN `participant_count` int DEFAULT 0 COMMENT '参与人数'; -- 添加完成人数字段 ALTER TABLE `prison_questionnaire_record` ADD COLUMN `completed_count` int DEFAULT 0 COMMENT '完成人数'; -- 添加答题用时字段 ALTER TABLE `prison_questionnaire_record` ADD COLUMN `duration` int DEFAULT NULL COMMENT '答题用时(秒)'; -- 添加备注字段 ALTER TABLE `prison_questionnaire_record` ADD COLUMN `remark` varchar(500) DEFAULT NULL COMMENT '备注'; -- ===================================================== -- 2. 创建答卷详情表 (prison_questionnaire_answer) -- ===================================================== CREATE TABLE `prison_questionnaire_answer` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '答案ID', `record_id` bigint NOT NULL COMMENT '测评记录ID', `question_id` bigint NOT NULL COMMENT '题目ID', `question_type` tinyint NOT NULL COMMENT '题目类型:1-单选 2-多选 3-判断 4-填空 5-简述', `question_content` varchar(500) NOT NULL COMMENT '题目内容', `answer_content` text COMMENT '答案内容', `score` decimal(10,2) DEFAULT 0.00 COMMENT '得分', `is_correct` bit(1) DEFAULT NULL COMMENT '是否正确', `is_manual_score` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否需要人工评分', `manual_score` decimal(10,2) DEFAULT NULL COMMENT '人工评分分数', `manual_comment` varchar(500) DEFAULT NULL COMMENT '人工评语', `creator` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updater` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`), KEY `idx_questionnaire_answer_record_id` (`record_id`), KEY `idx_questionnaire_answer_question_id` (`question_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='问卷答题详情表'; -- ===================================================== -- 3. 创建测评统计表 (prison_questionnaire_statistics) -- ===================================================== CREATE TABLE `prison_questionnaire_statistics` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '统计ID', `questionnaire_id` bigint NOT NULL COMMENT '问卷ID', `questionnaire_name` varchar(200) NOT NULL COMMENT '问卷名称', `stat_date` date NOT NULL COMMENT '统计日期', `total_count` int NOT NULL DEFAULT 0 COMMENT '发起总数', `completed_count` int NOT NULL DEFAULT 0 COMMENT '完成数量', `completion_rate` decimal(5,2) DEFAULT 0.00 COMMENT '完成率', `average_score` decimal(10,2) DEFAULT 0.00 COMMENT '平均分', `pass_rate` decimal(5,2) DEFAULT 0.00 COMMENT '及格率', `high_risk_count` int NOT NULL DEFAULT 0 COMMENT '高风险人数', `medium_risk_count` int NOT NULL DEFAULT 0 COMMENT '中风险人数', `low_risk_count` int NOT NULL DEFAULT 0 COMMENT '低风险人数', `creator` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updater` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`), KEY `idx_questionnaire_statistics_questionnaire_id` (`questionnaire_id`), KEY `idx_questionnaire_statistics_stat_date` (`stat_date`), UNIQUE KEY `uk_questionnaire_date` (`questionnaire_id`, `stat_date`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='问卷测评统计表'; -- ===================================================== -- 4. 添加菜单权限 -- ===================================================== -- 发起测评 INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, status) SELECT '发起测评', 'prison:questionnaire-record:initiate', 3, 6, id, '', '', '', 0 FROM system_menu WHERE name = '问卷记录管理' LIMIT 1; -- 开始测评 INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, status) SELECT '开始测评', 'prison:questionnaire-record:start', 3, 7, id, '', '', '', 0 FROM system_menu WHERE name = '问卷记录管理' LIMIT 1; -- 提交答卷 INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, status) SELECT '提交答卷', 'prison:questionnaire-record:submit', 3, 8, id, '', '', '', 0 FROM system_menu WHERE name = '问卷记录管理' LIMIT 1; -- 结束测评 INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, status) SELECT '结束测评', 'prison:questionnaire-record:finish', 3, 9, id, '', '', '', 0 FROM system_menu WHERE name = '问卷记录管理' LIMIT 1; -- 取消测评 INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, status) SELECT '取消测评', 'prison:questionnaire-record:cancel', 3, 10, id, '', '', '', 0 FROM system_menu WHERE name = '问卷记录管理' LIMIT 1; -- 人工评分 INSERT INTO system_menu (name, permission, type, sort, parent_id, path, icon, component, status) SELECT '人工评分', 'prison:questionnaire-record:score', 3, 11, id, '', '', '', 0 FROM system_menu WHERE name = '问卷记录管理' LIMIT 1; SELECT '数据库迁移完成!';