|
@@ -7,6 +7,7 @@ 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.model.SectionInfoVo;
|
|
|
import edu.math.diagnosis.util.NumberUtil;
|
|
|
import edu.math.diagnosis.util.ObjectUtil;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
@@ -40,9 +41,17 @@ public class PaperResultService {
|
|
|
private ChapterService chapterService;
|
|
|
@Resource
|
|
|
private MatterService matterService;
|
|
|
+ @Resource
|
|
|
+ private PaperCountService paperCountService;
|
|
|
|
|
|
private static final Logger logger = LoggerFactory.getLogger(PaperResultService.class);
|
|
|
|
|
|
+ public Result parseResult(Long pid, Long uid) {
|
|
|
+ PaperCommit commit = paperCommitRepo.findByPidAndUid(pid, uid);
|
|
|
+ Paper paper = paperService.getOnePaper(pid);
|
|
|
+ return parseResult(commit, paper);
|
|
|
+ }
|
|
|
+
|
|
|
@SuppressWarnings("unchecked")
|
|
|
public Result parseResult(PaperCommit paperCommit, Paper paper) {
|
|
|
List<Question> questions = paper.getQuestions();
|
|
@@ -105,7 +114,7 @@ public class PaperResultService {
|
|
|
return paperResultRepo.getOne(resultId);
|
|
|
}
|
|
|
|
|
|
- public List<PaperResult> findByPidAndUid(Long pid, Long uid) {
|
|
|
+ public PaperResult findByPidAndUid(Long pid, Long uid) {
|
|
|
return paperResultRepo.findByPidAndUid(pid, uid);
|
|
|
}
|
|
|
|
|
@@ -126,7 +135,12 @@ public class PaperResultService {
|
|
|
//知识点掌握率
|
|
|
r.setKnowledgeRate(knowledgeRate(r, paper));
|
|
|
r.setAbilityScore(abilityScore(r, paper));
|
|
|
-
|
|
|
+ r.setKnowledgeAcceptanceLevel(knowledgeAcceptanceLevel(r, paper));
|
|
|
+ r.setChapterRate(chapterRate(r, paper));
|
|
|
+ r.setKnowledgeKeepStatus(ObjectUtil.object2Json(knowledgeKeepStatus(r, paper)));
|
|
|
+ r.setUseTime(useTime(paper, commit));
|
|
|
+ r.setSectionInfo(sectionInfo(r, paper));
|
|
|
+ paperResultRepo.save(r);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -235,7 +249,7 @@ public class PaperResultService {
|
|
|
* @param paper 试卷
|
|
|
* @return [[1, 2, 0], [0, 0, 1]]
|
|
|
*/
|
|
|
- public String keepStatus(PaperResult result, Paper paper) {
|
|
|
+ public String knowledgeAcceptanceLevel(PaperResult result, Paper paper) {
|
|
|
List<List<Integer>> keepStatus = new ArrayList<>();
|
|
|
Long subjectId = paper.getSubjectId();
|
|
|
String grade = paper.getGrade();
|
|
@@ -260,7 +274,7 @@ public class PaperResultService {
|
|
|
return ObjectUtil.object2Json(keepStatus);
|
|
|
}
|
|
|
|
|
|
- public String chapterKeepRate(PaperResult result, Paper paper) {
|
|
|
+ public String chapterRate(PaperResult result, Paper paper) {
|
|
|
//Map<chapter,rate> 章节掌握率
|
|
|
Map<String, Double> chapterKeepRate = new LinkedHashMap<>();
|
|
|
|
|
@@ -368,4 +382,33 @@ public class PaperResultService {
|
|
|
return tagKeep;
|
|
|
}
|
|
|
|
|
|
+ public String useTime(Paper paper, PaperCommit commit) {
|
|
|
+ Map<Integer, Long> useTime = new LinkedHashMap<>();
|
|
|
+ for (int i = 1; i <= paper.getQuestionNum(); i++) {
|
|
|
+ useTime.put(i, 0L);
|
|
|
+ }
|
|
|
+ List<Answer> answers = commit.getAnswers();
|
|
|
+ Map<Integer, Long> use = answers.stream().collect(Collectors.toMap(Answer::getNumber, Answer::getUseTime));
|
|
|
+ for (Map.Entry<Integer, Long> entry : use.entrySet()) {
|
|
|
+ useTime.put(entry.getKey(), entry.getValue());
|
|
|
+ }
|
|
|
+ return ObjectUtil.object2Json(useTime);
|
|
|
+ }
|
|
|
+
|
|
|
+ public String avgUseTime(PaperResult paperResult) {
|
|
|
+ PaperCount count = paperCountService.findByPid(paperResult.getPid());
|
|
|
+ return count.getUseTimeAgvRate();
|
|
|
+ }
|
|
|
+
|
|
|
+ public String sectionInfo(PaperResult result, Paper paper) {
|
|
|
+ //TODO 按模块输出答题情况
|
|
|
+ SectionInfoVo vo1 = new SectionInfoVo("模块一", "43/50", "23:00/30:00", 35d);
|
|
|
+ SectionInfoVo vo2 = new SectionInfoVo("模块二", "8/10", "21:00/30:00", 28d);
|
|
|
+ SectionInfoVo vo3 = new SectionInfoVo("模块三", "5/10", "18:00/30:00", 22d);
|
|
|
+ List<SectionInfoVo> list = new ArrayList<>();
|
|
|
+ list.add(vo1);
|
|
|
+ list.add(vo2);
|
|
|
+ list.add(vo3);
|
|
|
+ return ObjectUtil.object2Json(list);
|
|
|
+ }
|
|
|
}
|