-- =====================================================
-- 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 '数据库迁移完成！';
