Browse Source

生成知识点掌握率

4228306 6 năm trước cách đây
mục cha
commit
9dacd09a93

+ 1 - 0
src/main/java/edu/math/diagnosis/dao/OptionRepo.java

@@ -5,6 +5,7 @@ import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @AUTHOR: DaiFengWen

+ 19 - 2
src/main/java/edu/math/diagnosis/service/PaperResultService.java

@@ -15,6 +15,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -112,14 +113,30 @@ public class PaperResultService {
     public void globalResult(PaperResult r) {
         PaperCommit commit = paperCommitRepo.findByPidAndUid(r.getPid(), r.getUid());
         Paper paper = paperService.getOnePaper(r.getPid());
+        //知识点掌握率
         r.setKnowledgeRate(88.88);
         r.setAbilityScore("{}");
     }
 
-    public Double knoledgeRate(PaperCommit commit, Paper paper) {
+    public Double knowledgeRate(PaperResult result,PaperCommit commit, Paper paper) {
+
+        //知识点掌握率 = 各知识点掌握数总和 / 总知识点数
+        //知识点掌握 为 该知识点对应的题目都做对了
         Long subjectId = paper.getSubjectId();
         String grade = paper.getGrade();
-        List<SubjectKnowledge> knowledges = knowledgeService.list(subjectId, grade);
+        List<SubjectKnowledge> knowledge = knowledgeService.list(subjectId, grade);
+        //Map<qid,tag> 定义为一对一
+        Map<Long, String> tags = new LinkedHashMap<>();
+        List<Question> questions = paper.getQuestions();
+        String collectOption = result.getCollectQuestion();
+        String[] options = collectOption.split(",");
+//        List<QuestionOption> options = questions.stream().map(Question::getOptions).flatMap(Collection::stream).collect(Collectors.toList());
+        questions.forEach(q -> tags.put(q.getId(), q.getTag()));
+
+        for (SubjectKnowledge k : knowledge) {
+            String abilityCodes = k.getAbilityCodes();
+            String[]codes = abilityCodes.split(",");
+        }
         return 0d;
     }
 

+ 7 - 2
src/main/java/edu/math/diagnosis/service/PaperService.java

@@ -109,15 +109,20 @@ public class PaperService {
 //            return 0;
 //        });
         paper.setQuestions(questions);
+        List<Long> qids = questions.stream().map(Question::getId).collect(Collectors.toList());
+        //一次查出该试卷所有的选项
+        List<QuestionOption> options = optionRepo.findByIdIn(qids);
+        //然后根据Id进行分组
+        Map<Long,List<QuestionOption>> group = options.stream().collect(Collectors.groupingBy(QuestionOption::getQid));
         for (Question question : questions) {
-            List<QuestionOption> options = optionRepo.findByQid(question.getId());
+//            List<QuestionOption> options = optionRepo.findByQid(question.getId());
 //            for (QuestionOption option : options) {
             //todo 判断是否考生,如是  将答案设为null
 //               option.setCorrect(null);
 //                option.setUpdatetime(null);
 //                option.setCreatetime(null);
 //            }
-            question.setOptions(options);
+            question.setOptions(group.get(question.getId()));
         }
         return paper;
     }