# 自定义问卷功能增强开发记录 ## 📋 任务概述 **开发日期**: 2025-01-XX **模块名称**: 自定义问卷功能增强 **任务类型**: 功能增强与完善 --- ## 🎯 需求说明 ### 1. 菜单统一 - ✅ 删除"问卷管理"菜单,统一使用"自定义问卷" ### 2. 问卷测评功能 - 自定义问卷要像量表一样可以分配给用户进行测量 - 管理员可以设置对应的得分 - 在解释配置中可以设定对应的分数进行说明测量之后的结果 ### 3. 题目类型支持 - 支持多种题目类型:单选、多选、判断、填空、排序、计算、简答、问答、作文 ### 4. 主观题评分 - 管理员能汇总主观题进行评分 ### 5. 成绩排名 - 管理员能查看所有问卷人员以及对应的分数和排名 - 排名从上往下是第一名往下排队 --- ## ✅ 已完成工作 ### 1. 菜单统一 ✅ - ✅ 修改SQL脚本,将"问卷管理"菜单改为"自定义问卷" - ✅ 修改前端路由,将"问卷管理"改为"自定义问卷" - ✅ 更新菜单图标为`edit` **修改文件**: - `sql/psychological_system_complete.sql` - 菜单配置SQL - `ruoyi-ui/src/router/index.js` - 前端路由配置 ### 2. 数据库表结构增强 ✅ - ✅ 创建问卷答案详情表 `psy_questionnaire_answer_detail` - 存储每道题的答案 - 支持客观题和主观题 - 支持管理员评分功能 - ✅ 修改解释配置表 `psy_result_interpretation` - 添加 `questionnaire_id` 字段,支持问卷解释配置 - 添加索引和外键约束 **新增表结构**: ```sql -- 问卷答案详情表 psy_questionnaire_answer_detail - detail_id: 详情ID - answer_id: 答案ID(关联问卷答题记录) - item_id: 题目ID - option_id: 选项ID(单选/判断) - option_ids: 选项ID列表(多选) - answer_text: 文本答案(填空、简答、问答、作文) - answer_score: 答案得分 - is_subjective: 是否主观题 - is_scored: 是否已评分 - scored_by: 评分人 - scored_time: 评分时间 ``` **修改表结构**: ```sql -- 解释配置表 psy_result_interpretation - questionnaire_id: 问卷ID(新增) ``` --- ## 🚧 待完成工作 ### 1. 问卷测评功能(类似量表测评) - [ ] 创建问卷测评实体类 `PsyQuestionnaireAnswerDetail` - [ ] 创建问卷测评Mapper和Service - [ ] 创建问卷测评Controller - [ ] 开始问卷测评接口 - [ ] 获取问卷题目接口 - [ ] 保存答案接口 - [ ] 提交问卷接口 - [ ] 自动计分服务(客观题) - [ ] 创建问卷测评前端页面 - [ ] 问卷列表页面 - [ ] 开始问卷页面 - [ ] 答题页面(支持多种题型) - [ ] 提交问卷页面 ### 2. 多种题目类型支持 - [ ] 题目类型枚举定义 - [ ] radio: 单选 - [ ] checkbox: 多选 - [ ] boolean: 判断 - [ ] input: 填空 - [ ] sort: 排序 - [ ] calculate: 计算 - [ ] text: 简答 - [ ] textarea: 问答 - [ ] essay: 作文 - [ ] 题目管理页面增强 - [ ] 题目类型选择器 - [ ] 不同题型的编辑界面 - [ ] 选项配置(单选、多选、判断) - [ ] 文本答案配置(填空、简答、问答、作文) ### 3. 主观题评分功能 - [ ] 主观题评分管理页面 - [ ] 待评分题目列表 - [ ] 评分界面 - [ ] 批量评分功能 - [ ] 主观题评分接口 - [ ] 获取待评分题目接口 - [ ] 提交评分接口 - [ ] 批量评分接口 ### 4. 成绩排名功能 - [ ] 成绩排名查询接口 - [ ] 按问卷ID查询排名 - [ ] 按用户ID查询排名 - [ ] 排名计算逻辑(从高到低) - [ ] 成绩排名展示页面 - [ ] 排名列表(表格) - [ ] 排名统计图表 - [ ] 导出排名数据 ### 5. 解释配置增强 - [ ] 解释配置页面增强 - [ ] 支持选择问卷 - [ ] 问卷解释配置界面 - [ ] 解释配置查询接口 - [ ] 按问卷ID查询解释 - [ ] 按分数范围匹配解释 --- ## 📁 涉及文件 ### 后端文件 - `ry-news-system/src/main/java/com/ddnai/system/domain/psychology/PsyQuestionnaireAnswerDetail.java` (待创建) - `ry-news-system/src/main/java/com/ddnai/system/mapper/psychology/PsyQuestionnaireAnswerDetailMapper.java` (待创建) - `ry-news-system/src/main/java/com/ddnai/system/service/psychology/IPsyQuestionnaireAnswerDetailService.java` (待创建) - `ry-news-system/src/main/java/com/ddnai/system/service/impl/psychology/PsyQuestionnaireAnswerDetailServiceImpl.java` (待创建) - `ry-news-admin/src/main/java/com/ddnai/web/controller/psychology/PsyQuestionnaireAnswerController.java` (待创建) - `ry-news-system/src/main/java/com/ddnai/system/domain/psychology/PsyResultInterpretation.java` (待修改) - `ry-news-system/src/main/resources/mapper/system/psychology/PsyQuestionnaireAnswerDetailMapper.xml` (待创建) ### 前端文件 - `ruoyi-ui/src/views/psychology/questionnaire/answer/index.vue` (待创建) - `ruoyi-ui/src/views/psychology/questionnaire/answer/taking.vue` (待创建) - `ruoyi-ui/src/views/psychology/questionnaire/score/index.vue` (待创建) - `ruoyi-ui/src/views/psychology/questionnaire/rank/index.vue` (待创建) - `ruoyi-ui/src/api/psychology/questionnaire.js` (待修改) ### 数据库文件 - `sql/psychological_system_complete.sql` (已修改) --- ## 📝 技术要点 ### 1. 题目类型判断 - 客观题:radio、checkbox、boolean、input(有标准答案)、sort、calculate - 主观题:text、textarea、essay、input(无标准答案) ### 2. 自动计分逻辑 - 客观题:提交时自动计算得分 - 主观题:需要管理员手动评分 ### 3. 排名计算 - 按总分从高到低排序 - 相同分数按提交时间排序(先提交的排名靠前) ### 4. 解释配置匹配 - 根据问卷ID和分数范围匹配解释 - 支持多个分数区间配置 --- ## ⚠️ 注意事项 1. 问卷测评功能要参考量表测评的实现方式 2. 题目类型要支持所有9种类型 3. 主观题评分要有明确的权限控制 4. 排名计算要考虑相同分数的情况 5. 解释配置要同时支持量表和问卷 --- ## 📌 下一步计划 1. 创建问卷答案详情实体类和Mapper 2. 实现问卷测评基础功能(开始、答题、提交) 3. 实现多种题目类型的答题界面 4. 实现主观题评分功能 5. 实现成绩排名功能 6. 完善解释配置功能 --- **创建时间**: 2025-01-XX **最后更新**: 2025-01-XX