主要变更: - 删除 assessment 模块,原有功能整合到 questionnaire-record - 新增 answer 模块处理答题记录 - QuestionnaireRecordServiceImpl 扩展测评执行、评分、统计功能 - 更新枚举类状态定义(1-待测评 2-测评中 3-已完成 4-已过期 5-已取消) - 消费记录模块新增明细相关接口 Co-Authored-By: Claude <noreply@anthropic.com>
172 lines
8.2 KiB
SQL
172 lines
8.2 KiB
SQL
-- =====================================================
|
||
-- 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 '数据库迁移完成!';
|