ソースを参照

处理未答及临存状态,统计时忽略临存状态的答题

mingfu 3 週間 前
コミット
cf73490654

+ 7 - 4
ie-system/src/main/java/com/ruoyi/learn/domain/PaperVO.java

@@ -73,24 +73,27 @@ public class PaperVO {
         @ApiModelProperty("学生回答")
         List<String> answers;
 
-        @ApiModelProperty("答题正确状态 0 默认 1正确 2错误 3不会")
+        @ApiModelProperty("答题正确状态 0 默认 1正确 2错误 3不会 4 未答")
         Integer state;
 
         List<QuestionAnswer> subQuestions;
 
         public Integer calcState(QuestionAnswer std, boolean isDone) {
+            if(!isDone) {
+                return 0;
+            }
             if(null != isNotKnow && isNotKnow) {
                 return 3;
-            } if(isDone) {
+            } else {
                 QuestionType qt = QuestionType.of(this.typeId);
                 if(QuestionType.Single.equals(qt) || QuestionType.Judgment.equals(qt)) {
                     if(CollectionUtils.isEmpty(answers)) {
-                        return 0;
+                        return 4;
                     }
                     return answers.get(0).equals(std.getAnswer1()) ? 1 : 2;
                 } else if(QuestionType.Multiple.equals(qt)) {
                     if(CollectionUtils.isEmpty(answers)) {
-                        return 0;
+                        return 4;
                     }
                     List<String> stdAnswers = Arrays.asList(std.getAnswer1().split(","));
                     return stdAnswers.size() == answers.size() && CollectionUtils.intersection(stdAnswers, answers).size() == answers.size() ? 1 : 2;

+ 3 - 3
ie-system/src/main/resources/mapper/learn/LearnAnswerMapper.xml

@@ -32,7 +32,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         , COUNT(*) total, SUM(IF(a.`state` = 1, 1, 0)) `value`, round(SUM(IF(a.`state` = 1, 1, 0)) * 100 / COUNT(*)) rate
         FROM `learn_answer` a
         JOIN `learn_knowledge_tree` kt ON a.`knowledge_id` = kt.`id`
-        WHERE a.`student_id` = #{studentId}
+        WHERE a.`student_id` = #{studentId} and a.`state` > 0
         GROUP BY a.`knowledge_id`, directed
         order by directed desc, rate desc, a.`knowledge_id`
     </select>
@@ -40,13 +40,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="selectQuestionStatsHeader" parameterType="Map" resultType="com.alibaba.fastjson2.JSONObject">
         SELECT COUNT(*) total, SUM(IF(a.`state` = 1, 1, 0)) `value`, round(SUM(IF(a.`state` = 1, 1, 0)) * 100 / COUNT(*)) rate, COUNT(DISTINCT DATE(a.create_time)) `time`
           FROM `learn_answer` a
-          WHERE a.`student_id` = #{studentId} and a.`create_time` between #{beginDate} and #{endDate}
+          WHERE a.`student_id` = #{studentId} and a.`state` > 0 and a.`create_time` between #{beginDate} and #{endDate}
     </select>
 
     <select id="selectQuestionStatsDetail" parameterType="Map" resultType="com.alibaba.fastjson2.JSONObject">
         SELECT DATE(a.create_time) `time`, COUNT(*) total, SUM(IF(a.`state` = 1, 1, 0)) `value`, round(SUM(IF(a.`state` = 1, 1, 0)) * 100 / COUNT(*)) rate
           FROM `learn_answer` a
-         WHERE a.`student_id` = #{studentId} and a.`create_time` between #{beginDate} and #{endDate}
+         WHERE a.`student_id` = #{studentId} and a.`state` > 0 and a.`create_time` between #{beginDate} and #{endDate}
          GROUP BY DATE(a.create_time)
          order by DATE(a.create_time) desc
     </select>