|
@@ -5,6 +5,7 @@ import edu.math.diagnosis.dao.PaperCommitRepo;
|
|
|
import edu.math.diagnosis.dao.PaperResultRepo;
|
|
|
import edu.math.diagnosis.entity.*;
|
|
|
import edu.math.diagnosis.model.Answer;
|
|
|
+import edu.math.diagnosis.model.KnowledgeKeepVo;
|
|
|
import edu.math.diagnosis.model.Result;
|
|
|
import edu.math.diagnosis.util.NumberUtil;
|
|
|
import edu.math.diagnosis.util.ObjectUtil;
|
|
@@ -35,6 +36,8 @@ public class PaperResultService {
|
|
|
private AbilityScoreService abilityScoreService;
|
|
|
@Resource
|
|
|
private SubjectAbilityService subjectAbilityService;
|
|
|
+ @Resource
|
|
|
+ private ChapterService chapterService;
|
|
|
|
|
|
private static final Logger logger = LoggerFactory.getLogger(PaperResultService.class);
|
|
|
|
|
@@ -255,18 +258,42 @@ public class PaperResultService {
|
|
|
return ObjectUtil.object2Json(keepStatus);
|
|
|
}
|
|
|
|
|
|
- public String chapterKeepRate(PaperResult result,Paper paper){
|
|
|
- Map<String,Double> chapterKeepRate = new LinkedHashMap<>();
|
|
|
+ public String chapterKeepRate(PaperResult result, Paper paper) {
|
|
|
+
|
|
|
+ Map<String, Double> chapterKeepRate = new LinkedHashMap<>();
|
|
|
+
|
|
|
+
|
|
|
+ Map<String, String> chapterName = chapterService.map(paper.getSubjectId());
|
|
|
+
|
|
|
List<SubjectKnowledge> knowledge = knowledgeService.list(paper.getSubjectId(), paper.getGrade());
|
|
|
-
|
|
|
+
|
|
|
Map<String, List<SubjectKnowledge>> group = knowledge.stream().collect(Collectors.groupingBy(SubjectKnowledge::getChapter));
|
|
|
List<Integer> collects = convertCollectQuestion(result.getCollectQuestion());
|
|
|
|
|
|
Map<String, Set<Integer>> tagNumbers = tagNumbers(paper);
|
|
|
|
|
|
Map<String, Integer> tagKeep = tagKeep(collects, tagNumbers);
|
|
|
+ group.forEach((chapter, list) -> {
|
|
|
+ int knowledgeSize = list.size();
|
|
|
+ int keepCount = 0;
|
|
|
+ for (SubjectKnowledge k : list) {
|
|
|
+ int keep = tagKeep.getOrDefault(k.getCode(), 0);
|
|
|
+ if (keep == Constants.KNOWLEDGE_MASTER) {
|
|
|
+ keepCount++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ double rate = knowledgeSize == 0 ? 0 : NumberUtil.format(keepCount * 100.0 / knowledgeSize);
|
|
|
+ chapterKeepRate.put(chapterName.get(chapter), rate);
|
|
|
+ });
|
|
|
+ return ObjectUtil.object2Json(chapterKeepRate);
|
|
|
+ }
|
|
|
+
|
|
|
+ public Map<String, List<KnowledgeKeepVo>> knowledgeKeepStatus(PaperResult result, Paper paper) {
|
|
|
+ Map<String,List<KnowledgeKeepVo>> knowledgeKeepStatus = new LinkedHashMap<>();
|
|
|
+
|
|
|
|
|
|
- return "{}";
|
|
|
+ return null;
|
|
|
}
|
|
|
|
|
|
|