|
@@ -82,8 +82,8 @@ public class PaperResultService {
|
|
|
if (a == null || StringUtils.isBlank(a.getOptions())) {
|
|
|
continue;
|
|
|
}
|
|
|
- //检测答案的对错,此处进行全匹配,全对上该题目才正确
|
|
|
- if (ans.equalsIgnoreCase(a.getOptions())) {
|
|
|
+ //检测答案的对错,如果答案为空或者全部对上该题目正确
|
|
|
+ if (q.getCorrectNum() == 0 || ans.equalsIgnoreCase(a.getOptions())) {
|
|
|
collectQuestion.add(q.getNumber());
|
|
|
String jsonScore = q.getJsonScore();
|
|
|
Map<String, Double> qData = ObjectUtil.json2Object(jsonScore, Map.class);
|
|
@@ -98,6 +98,9 @@ public class PaperResultService {
|
|
|
//对的选项进行升序排序
|
|
|
collectQuestion.sort(Integer::compareTo);
|
|
|
result.setCollectQuestion(StringUtils.join(collectQuestion, ","));
|
|
|
+ //错误选项
|
|
|
+ List<Integer> wrongQuestions = generateWrongQuestion(paper, collectQuestion);
|
|
|
+ result.setWrongQuestion(StringUtils.join(wrongQuestions, ","));
|
|
|
result.setJsonScore(ObjectUtil.object2Json(pData));
|
|
|
//转换分数为百分制
|
|
|
double totalScore = paper.getTotalScore();
|
|
@@ -148,7 +151,8 @@ public class PaperResultService {
|
|
|
//第二部分 学科能力
|
|
|
r.setChapterAbility(chapterAbility(r, paper));
|
|
|
r.setAbilityEvaluate(abilityEvaluate(r, paper));
|
|
|
- questionMatter(r, paper);
|
|
|
+ r.setCommonMatters(commonMatters(r, paper));
|
|
|
+ r.setMistakeMatters(mistakeMatters(r,paper));
|
|
|
|
|
|
// paperResultRepo.save(r);
|
|
|
}
|
|
@@ -171,7 +175,7 @@ public class PaperResultService {
|
|
|
// List<QuestionOption> options = questions.stream().map(Question::getOptions).flatMap(Collection::stream).collect(Collectors.toList());
|
|
|
// questions.forEach(q -> tags.put(q.getId(), q.getTag()));
|
|
|
|
|
|
- List<Integer> collects = convertCollectQuestion(result.getCollectQuestion());
|
|
|
+ List<Integer> collects = convertQuestion(result.getCollectQuestion());
|
|
|
|
|
|
//Map<tag,Set<number>> 知识点与题目对应
|
|
|
Map<String, Set<Integer>> tagNumbers = tagNumbers(paper);
|
|
@@ -211,7 +215,7 @@ public class PaperResultService {
|
|
|
public String abilityScore(PaperResult result, Paper paper) {
|
|
|
|
|
|
Map<String, String> abilityCodes = subjectAbilityService.map(paper.getSubjectId());
|
|
|
- List<Integer> collectQuestion = convertCollectQuestion(result.getCollectQuestion());
|
|
|
+ List<Integer> collectQuestion = convertQuestion(result.getCollectQuestion());
|
|
|
//各能力分数 Map<code,Set<number>> 能力与题目编号
|
|
|
// Map<String, Set<Integer>> codeNumber = new HashMap<>();
|
|
|
|
|
@@ -270,7 +274,7 @@ public class PaperResultService {
|
|
|
List<SubjectKnowledge> knowledge = knowledgeService.list(subjectId, grade);
|
|
|
//根据章节分组 Map<chapter,...>
|
|
|
Map<String, List<SubjectKnowledge>> group = knowledge.stream().collect(Collectors.groupingBy(SubjectKnowledge::getChapter));
|
|
|
- List<Integer> collects = convertCollectQuestion(result.getCollectQuestion());
|
|
|
+ List<Integer> collects = convertQuestion(result.getCollectQuestion());
|
|
|
|
|
|
//Map<tag,Set<number>> 知识点与题目对应
|
|
|
Map<String, Set<Integer>> tagNumbers = tagNumbers(paper);
|
|
@@ -305,7 +309,7 @@ public class PaperResultService {
|
|
|
List<SubjectKnowledge> knowledge = knowledgeService.list(paper.getSubjectId(), paper.getGrade());
|
|
|
//根据章节分组 Map<chapter,List<SubjectKnowledge>>
|
|
|
Map<String, List<SubjectKnowledge>> group = knowledge.stream().collect(Collectors.groupingBy(SubjectKnowledge::getChapter));
|
|
|
- List<Integer> collects = convertCollectQuestion(result.getCollectQuestion());
|
|
|
+ List<Integer> collects = convertQuestion(result.getCollectQuestion());
|
|
|
//Map<tag,Set<number>> 知识点与题目对应
|
|
|
Map<String, Set<Integer>> tagNumbers = tagNumbers(paper);
|
|
|
//Map<tag,keep> 每个知识点的掌握情况
|
|
@@ -353,7 +357,7 @@ public class PaperResultService {
|
|
|
});
|
|
|
|
|
|
|
|
|
- List<Integer> collects = convertCollectQuestion(result.getCollectQuestion());
|
|
|
+ List<Integer> collects = convertQuestion(result.getCollectQuestion());
|
|
|
|
|
|
//Map<tag,Set<number>> 知识点与题目对应
|
|
|
Map<String, Set<Integer>> tagNumbers = tagNumbers(paper);
|
|
@@ -380,12 +384,7 @@ public class PaperResultService {
|
|
|
}
|
|
|
|
|
|
|
|
|
- private List<Integer> convertCollectQuestion(String collectQuestion) {
|
|
|
- //获取答对的题目
|
|
|
- String[] collect = collectQuestion.split(",");
|
|
|
- //转换成整型
|
|
|
- return Arrays.stream(collect).map(Integer::valueOf).collect(Collectors.toList());
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
private Map<String, Set<Integer>> tagNumbers(Paper paper) {
|
|
|
Map<String, Set<Integer>> tagNumbers = new LinkedHashMap<>();
|
|
@@ -476,7 +475,7 @@ public class PaperResultService {
|
|
|
//根据章节分组 Map<chapter,List<SubjectKnowledge>>
|
|
|
// Map<String, List<SubjectKnowledge>> group = knowledge.stream().collect(Collectors.groupingBy(SubjectKnowledge::getChapter));
|
|
|
|
|
|
- List<Integer> collects = convertCollectQuestion(result.getCollectQuestion());
|
|
|
+ List<Integer> collects = convertQuestion(result.getCollectQuestion());
|
|
|
//Map<tag,Set<number>> 知识点与题目对应
|
|
|
Map<String, Set<Integer>> tagNumbers = tagNumbers(paper);
|
|
|
//Map<tag,keep> 每个知识点的掌握情况
|
|
@@ -488,7 +487,7 @@ public class PaperResultService {
|
|
|
vo.setChapter(k.getChapter());
|
|
|
vo.setKnowledgeCode(k.getCode());
|
|
|
// vo.setKnowledgeContent(k.getContent());
|
|
|
- // 设置该知识点掌握程度
|
|
|
+ // 设置知识点掌握程度
|
|
|
vo.setKeep(tagKeep.getOrDefault(k.getCode(), 0));
|
|
|
vo.setAbilityCodes(k.getAbilityCodes());
|
|
|
vos.add(vo);
|
|
@@ -516,7 +515,7 @@ public class PaperResultService {
|
|
|
String abilityScore = result.getAbilityScore();
|
|
|
Map<String, Double> scores = ObjectUtil.json2Map(abilityScore);
|
|
|
|
|
|
- List<Integer> collects = convertCollectQuestion(result.getCollectQuestion());
|
|
|
+ List<Integer> collects = convertQuestion(result.getCollectQuestion());
|
|
|
//Map<tag,Set<number>> 知识点与题目对应
|
|
|
Map<String, Set<Integer>> tagNumbers = tagNumbers(paper);
|
|
|
//Map<tag,keep> 每个知识点的掌握情况
|
|
@@ -541,7 +540,7 @@ public class PaperResultService {
|
|
|
String code = entry.getKey();
|
|
|
AbilityEvaluateVo vo = new AbilityEvaluateVo();
|
|
|
vo.setAbilityCode(code);
|
|
|
- vo.setScore(scores.getOrDefault(code,0D));
|
|
|
+ vo.setScore(scores.getOrDefault(code, 0D));
|
|
|
|
|
|
ScoreSegment scoreSegment = scoreSegmentService.getLevel(vo.getScore(), scoreSegments, abilities.get(code), subject);
|
|
|
vo.setEvaluate(scoreSegment.getEvaluate());
|
|
@@ -550,23 +549,40 @@ public class PaperResultService {
|
|
|
Set<String> ks = entry.getValue();
|
|
|
List<Integer> keep = new ArrayList<>();
|
|
|
//未掌握的为0
|
|
|
- ks.forEach(k -> keep.add(tagKeep.getOrDefault(k,0)));
|
|
|
+ ks.forEach(k -> keep.add(tagKeep.getOrDefault(k, 0)));
|
|
|
vo.setKeep(keep);
|
|
|
evaluates.put(abilities.get(code), vo);
|
|
|
}
|
|
|
return ObjectUtil.object2Json(evaluates);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
- * 该问题在所有题目中的占比,比如10个错题,8个有粗心大意,则粗心大意占比为80
|
|
|
+ * 题目暴露的问题 该问题在所有题目中的占比,比如10个错题,8个有粗心大意,则粗心大意占比为80
|
|
|
+ * 左边两列
|
|
|
* {
|
|
|
* "知识记忆不牢":{
|
|
|
* "percent":88.88,
|
|
|
* "wrong":[1,2,3]
|
|
|
* }
|
|
|
* }
|
|
|
- *
|
|
|
- * 该问题在所有题目中的占比,比如10个错题,8个有基础不好,则基础不好占比为80
|
|
|
+ */
|
|
|
+ public String commonMatters(PaperResult result, Paper paper) {
|
|
|
+ List<KnowledgeMatter> matters = matterService.list(paper.getSubjectId(),paper.getGrade());
|
|
|
+ Map<String,List<KnowledgeMatter>> group = new LinkedHashMap<>();
|
|
|
+ for (KnowledgeMatter matter:matters){
|
|
|
+ String commonMatter = matter.getCommonMatter();
|
|
|
+
|
|
|
+ }
|
|
|
+// matters.stream()
|
|
|
+ List<Integer> wrongs = convertQuestion(result.getWrongQuestion());
|
|
|
+
|
|
|
+ return "{}";
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 家长误以为的问题 该问题在所有题目中的占比,比如10个错题,8个有基础不好,则基础不好占比为80
|
|
|
+ * 右边两列
|
|
|
* {
|
|
|
* "基础不好":{
|
|
|
* "commonMatter":"知识记忆不牢,学习动力问题",
|
|
@@ -576,13 +592,19 @@ public class PaperResultService {
|
|
|
* }
|
|
|
* }
|
|
|
*/
|
|
|
- public void questionMatter(PaperResult result, Paper paper) {
|
|
|
- List<Integer> collects = convertCollectQuestion(result.getCollectQuestion());
|
|
|
- List<Integer> wrongs = convertWrongQuestion(paper, collects);
|
|
|
+ public String mistakeMatters(PaperResult result, Paper paper) {
|
|
|
|
|
|
+ return "{}";
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<Integer> convertQuestion(String questionNumbers) {
|
|
|
+ //获取答对的题目
|
|
|
+ String[] collect = questionNumbers.split(",");
|
|
|
+ //转换成整型
|
|
|
+ return Arrays.stream(collect).map(Integer::valueOf).collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
- private List<Integer> convertWrongQuestion(Paper paper, List<Integer> collects) {
|
|
|
+ private List<Integer> generateWrongQuestion(Paper paper, List<Integer> collects) {
|
|
|
return paper.getQuestions().stream().map(Question::getNumber).filter(q -> !collects.contains(q)).collect(Collectors.toList());
|
|
|
}
|
|
|
|