|
|
@@ -15,7 +15,7 @@ import com.ruoyi.learn.domain.*;
|
|
|
import com.ruoyi.learn.mapper.*;
|
|
|
import com.ruoyi.learn.service.ILearnPaperService;
|
|
|
import com.ruoyi.learn.service.ILearnPlanService;
|
|
|
-import com.ruoyi.learn.service.impl.LearnPlanServiceImpl;
|
|
|
+import com.ruoyi.mxjb.domain.MxjbContants;
|
|
|
import com.ruoyi.system.service.ISysUserService;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
@@ -40,12 +40,14 @@ public class ExamService {
|
|
|
private final LearnPaperMapper paperMapper;
|
|
|
private final LearnKnowledgeTreeMapper knowledgeTreeMapper;
|
|
|
private final LearnExamineeMapper examineeMapper;
|
|
|
+ private final LearnWrongBookMapper wrongBookMapper;
|
|
|
+ private final LearnWrongDetailMapper wrongDetailMapper;
|
|
|
private final ILearnPaperService learnPaperService;
|
|
|
private final PaperService paperService;
|
|
|
private final IAMarjorPlanService marjorPlanService;
|
|
|
private final ISysUserService sysUserService;
|
|
|
|
|
|
- public ExamService(LearnPaperMapper paperMapper, LearnKnowledgeTreeMapper knowledgeTreeMapper, LearnExamineeMapper examineeMapper, ILearnPaperService learnPaperService, PaperService paperService, IAMarjorPlanService marjorPlanService, LearnAnswerMapper learnAnswerMapper, LearnExamineeMapper learnExamineeMapper, ISysUserService sysUserService, LearnStudentMapper learnStudentMapper, ILearnPlanService learnPlanService, LearnQuestionsMapper learnQuestionsMapper) {
|
|
|
+ public ExamService(LearnPaperMapper paperMapper, LearnKnowledgeTreeMapper knowledgeTreeMapper, LearnExamineeMapper examineeMapper, ILearnPaperService learnPaperService, PaperService paperService, IAMarjorPlanService marjorPlanService, LearnAnswerMapper learnAnswerMapper, LearnExamineeMapper learnExamineeMapper, ISysUserService sysUserService, LearnStudentMapper learnStudentMapper, ILearnPlanService learnPlanService, LearnQuestionsMapper learnQuestionsMapper, LearnWrongBookMapper wrongBookMapper, LearnWrongDetailMapper wrongDetailMapper) {
|
|
|
this.paperMapper = paperMapper;
|
|
|
this.knowledgeTreeMapper = knowledgeTreeMapper;
|
|
|
this.examineeMapper = examineeMapper;
|
|
|
@@ -58,6 +60,8 @@ public class ExamService {
|
|
|
this.learnStudentMapper = learnStudentMapper;
|
|
|
this.learnPlanService = learnPlanService;
|
|
|
this.learnQuestionsMapper = learnQuestionsMapper;
|
|
|
+ this.wrongBookMapper = wrongBookMapper;
|
|
|
+ this.wrongDetailMapper = wrongDetailMapper;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -127,32 +131,30 @@ public class ExamService {
|
|
|
Map<Long, LearnAnswer> answerMap = learnAnswerMapper.selectLearnAnswerList(aCond).stream().collect(Collectors.toMap(LearnAnswer::getQuestionId, t -> t));
|
|
|
Map<Long, PaperVO.QuestionAnswer> questionMap = paperService.loadPaperQuestionAnswers(null, exitExaminee.getPaperId(), answerMap, true).stream().collect(Collectors.toMap(PaperVO.QuestionAnswer::getId, t -> t));
|
|
|
|
|
|
- List<LearnAnswer> addList = Lists.newArrayList();
|
|
|
- List<LearnAnswer> updateList = Lists.newArrayList();
|
|
|
+ List<LearnAnswer> answersList = Lists.newArrayList();
|
|
|
Integer wrongCount = 0;
|
|
|
for(PaperVO.QuestionAnswer question : answerSheet.getQuestions()) {
|
|
|
if(CollectionUtils.isNotEmpty(question.getSubQuestions())) {
|
|
|
for(PaperVO.QuestionAnswer sq : question.getSubQuestions()) {
|
|
|
- LearnAnswer answer = buildAnswer(answerSheet, questionMap, sq, addList, updateList);
|
|
|
- if(answerSheet.getIsDone() && !answer.getState().equals(1L)) {
|
|
|
+ LearnAnswer answer = buildAnswer(answerSheet, questionMap, sq, answersList);
|
|
|
+ if(answerSheet.getIsDone() && !answer.getState().equals(1)) {
|
|
|
wrongCount++;
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
- LearnAnswer answer = buildAnswer(answerSheet, questionMap, question, addList, updateList);
|
|
|
- if(answerSheet.getIsDone() && !answer.getState().equals(1L)) {
|
|
|
+ LearnAnswer answer = buildAnswer(answerSheet, questionMap, question, answersList);
|
|
|
+ if(answerSheet.getIsDone() && !answer.getState().equals(1)) {
|
|
|
wrongCount++;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- if(addList.size() > 0) {
|
|
|
- addList.stream().forEach(t -> {
|
|
|
- learnAnswerMapper.insertLearnAnswer(t);
|
|
|
- });
|
|
|
- }
|
|
|
- if(updateList.size() > 0) {
|
|
|
- updateList.stream().forEach(t -> {
|
|
|
- learnAnswerMapper.updateLearnAnswer(t);
|
|
|
+ if(answersList.size() > 0) {
|
|
|
+ answersList.stream().forEach(t -> {
|
|
|
+ if(null == t.getAnswerId()) {
|
|
|
+ learnAnswerMapper.insertLearnAnswer(t);
|
|
|
+ } else {
|
|
|
+ learnAnswerMapper.updateLearnAnswer(t);
|
|
|
+ }
|
|
|
});
|
|
|
}
|
|
|
LearnExaminee upExaminee = new LearnExaminee();
|
|
|
@@ -173,29 +175,88 @@ public class ExamService {
|
|
|
|
|
|
if(PaperType.Practice.getVal().equals(exitExaminee.getPaperType())) {
|
|
|
learnPlanService.updateLearnPlan(exitExaminee.getStudentId());
|
|
|
+ calculateWrongAnswers(exitExaminee, questionMap, answersList, PaperType.Practice.name());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public Set<Integer> invalidStatusSet = Sets.newHashSet(2, 3);
|
|
|
+ public void calculateWrongAnswers(LearnExaminee examinee, Map<Long, PaperVO.QuestionAnswer> questionMap, List<LearnAnswer> answersList, String source) {
|
|
|
+ if (CollectionUtils.isEmpty(answersList)){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ answersList.forEach(t -> {
|
|
|
+ if (invalidStatusSet.contains(t.getState())) {
|
|
|
+ LearnWrongBook wrongBookCond = new LearnWrongBook();
|
|
|
+ wrongBookCond.setStudentId(examinee.getStudentId());
|
|
|
+ wrongBookCond.setQuestionId(t.getQuestionId());
|
|
|
+ PaperVO.QuestionAnswer stdAnswer = questionMap.get(t.getQuestionId());
|
|
|
+ wrongBookCond.setKnownledgeId(stdAnswer.getKnowledgeId());
|
|
|
+ List<LearnWrongBook> wrongBookList = wrongBookMapper.selectLearnWrongBookList(wrongBookCond);
|
|
|
+ if (CollectionUtils.isNotEmpty(wrongBookList)) {
|
|
|
+ LearnWrongBook wrongBook = wrongBookList.get(0);
|
|
|
+ if (null == wrongBook.getWrongCount()) {
|
|
|
+ wrongBook.setWrongCount(0L);
|
|
|
+ }
|
|
|
+ if (null == wrongBook.getTotalCount()) {
|
|
|
+ wrongBook.setTotalCount(0L);
|
|
|
+ }
|
|
|
+ wrongBookCond.setWrongId(wrongBook.getWrongId());
|
|
|
+ wrongBookCond.setStudentId(null);
|
|
|
+ wrongBookCond.setQuestionId(null);
|
|
|
+ wrongBookCond.setWrongCount(wrongBook.getWrongCount() + 1);
|
|
|
+ wrongBookCond.setTotalCount(wrongBook.getTotalCount() + 1);
|
|
|
+ } else {
|
|
|
+ wrongBookCond.setAnswer1(stdAnswer.getAnswer1());
|
|
|
+ wrongBookCond.setAnswer2(stdAnswer.getAnswer2());
|
|
|
+ // wrongBookCond.setSubjectId(stdAnswer.getSubjectId());
|
|
|
+ wrongBookCond.setRightCount(0L);
|
|
|
+ wrongBookCond.setWrongCount(1L);
|
|
|
+ wrongBookCond.setTotalCount(1L);
|
|
|
+ // wrongBookCond.setScoreTotal(standard.getScoreTotal());
|
|
|
+ }
|
|
|
+ // wrongBookCond.setKnownledgeId(standard.getKnowledgeId());
|
|
|
+ wrongBookCond.setPaperId(examinee.getPaperId());
|
|
|
+ wrongBookCond.setScore(t.getScore());
|
|
|
+ wrongBookCond.setSource(source);
|
|
|
+ wrongBookCond.setAnswers(t.getAnswer());
|
|
|
+ wrongBookCond.setState(MxjbContants.QuestionScoreWrong);
|
|
|
+ if(null == wrongBookCond.getWrongId()) {
|
|
|
+ wrongBookMapper.insertLearnWrongBook(wrongBookCond);
|
|
|
+ } else {
|
|
|
+ wrongBookMapper.insertLearnWrongBook(wrongBookCond);
|
|
|
+ }
|
|
|
+ LearnWrongDetail wrongDetail = new LearnWrongDetail();
|
|
|
+ wrongDetail.setWrongId(wrongBookCond.getWrongId());
|
|
|
+ wrongDetail.setCreatedTime(new Date());
|
|
|
+ wrongDetail.setKnownledgeId(stdAnswer.getKnowledgeId());
|
|
|
+ wrongDetail.setSource(wrongBookCond.getSource());
|
|
|
+ wrongDetail.setExamineeId(examinee.getExamineeId());
|
|
|
+ wrongDetail.setStudentId(examinee.getStudentId());
|
|
|
+ wrongDetail.setPaperId(examinee.getPaperId());
|
|
|
+ wrongDetailMapper.insertLearnWrongDetail(wrongDetail);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
private LearnAnswer buildAnswer(AnswerSheet answerSheet, Map<Long, PaperVO.QuestionAnswer> questionMap, PaperVO.QuestionAnswer question,
|
|
|
- List<LearnAnswer> addList, List<LearnAnswer> updateList) {
|
|
|
+ List<LearnAnswer> answerList) {
|
|
|
LearnAnswer answer = new LearnAnswer();
|
|
|
- PaperVO.QuestionAnswer stdWidhAnswer = questionMap.remove(question.getId());
|
|
|
- if(null == stdWidhAnswer.getAnswerId()) {
|
|
|
+ PaperVO.QuestionAnswer stdAnswer = questionMap.get(question.getId());
|
|
|
+ if(null == stdAnswer.getAnswerId()) {
|
|
|
answer.setExamineeId(answerSheet.getExamineeId());
|
|
|
answer.setStudentId(SecurityUtils.getUserId());
|
|
|
answer.setQuestionId(question.getId());
|
|
|
answer.setSeq(question.getSeq());
|
|
|
- answer.setKnowledgeId(answerSheet.getKnowledgeId());
|
|
|
- addList.add(answer);
|
|
|
+ answer.setKnowledgeId(stdAnswer.getKnowledgeId());
|
|
|
} else {
|
|
|
- answer.setAnswerId(stdWidhAnswer.getAnswerId());
|
|
|
- updateList.add(answer);
|
|
|
+ answer.setAnswerId(stdAnswer.getAnswerId());
|
|
|
}
|
|
|
+ answerList.add(answer);
|
|
|
answer.setAnswer(StringUtils.join(question.getAnswers(), ","));
|
|
|
answer.setMark(null != question.getIsMark() && question.getIsMark());
|
|
|
answer.setNotKnow(null != question.getIsNotKnow() && question.getIsNotKnow());
|
|
|
- answer.setState(question.calcState(stdWidhAnswer, answerSheet.getIsDone()));
|
|
|
+ answer.setState(question.calcState(stdAnswer, answerSheet.getIsDone()));
|
|
|
return answer;
|
|
|
}
|
|
|
|