|
|
@@ -98,7 +98,7 @@ public class ExamService {
|
|
|
aCond.setExamineeId(examineeId);
|
|
|
Map<Long, LearnAnswer> answerMap = learnAnswerMapper.selectLearnAnswerList(aCond).stream().collect(Collectors.toMap(LearnAnswer::getQuestionId, t -> t));
|
|
|
LearnPaper learnPaper = learnPaperService.selectLearnPaperById(examinee.getPaperId());
|
|
|
- List<PaperVO.QuestionSeq> questionList = paperService.loadPaperQuestions(examinee.getPaperId(), answerMap, !examContinue);
|
|
|
+ List<PaperVO.QuestionAnswer> questionList = paperService.loadPaperQuestionAnswers(examinee.getPaperId(), answerMap, !examContinue);
|
|
|
AnswerSheet answerSheet = buildAnswerSheet(learnPaper, examinee);
|
|
|
answerSheet.setTotalCount(questionList.size());
|
|
|
answerSheet.setWrongCount(examinee.getWrongCount());
|
|
|
@@ -119,32 +119,31 @@ public class ExamService {
|
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void commitAnswerSheet(AnswerSheet answerSheet) {
|
|
|
+ LearnExaminee exitExaminee = learnExamineeMapper.selectLearnExamineeByExamineeId(answerSheet.getExamineeId());
|
|
|
+ if(null == exitExaminee) {
|
|
|
+ throw new RuntimeException("无此答卷" + answerSheet.getExamineeId());
|
|
|
+ }
|
|
|
LearnAnswer aCond = new LearnAnswer();
|
|
|
aCond.setExamineeId(answerSheet.getExamineeId());
|
|
|
Map<Long, LearnAnswer> answerMap = learnAnswerMapper.selectLearnAnswerList(aCond).stream().collect(Collectors.toMap(LearnAnswer::getQuestionId, t -> t));
|
|
|
- Map<Long, PaperVO.QuestionSeq> questionMap = paperService.loadPaperQuestions(answerSheet.getPaperId(), answerMap, true).stream().collect(Collectors.toMap(PaperVO.QuestionSeq::getId, t -> t));
|
|
|
+ Map<Long, PaperVO.QuestionAnswer> questionMap = paperService.loadPaperQuestionAnswers(answerSheet.getPaperId(), answerMap, true).stream().collect(Collectors.toMap(PaperVO.QuestionAnswer::getId, t -> t));
|
|
|
|
|
|
List<LearnAnswer> addList = Lists.newArrayList();
|
|
|
List<LearnAnswer> updateList = Lists.newArrayList();
|
|
|
Integer wrongCount = 0;
|
|
|
- for(PaperVO.QuestionSeq question : answerSheet.getQuestions()) {
|
|
|
- LearnAnswer answer = new LearnAnswer();
|
|
|
- PaperVO.QuestionSeq exist = questionMap.remove(question.getId());
|
|
|
- if(null == exist) {
|
|
|
- answer.setExamineeId(answerSheet.getExamineeId());
|
|
|
- answer.setStudentId(SecurityUtils.getUserId());
|
|
|
- answer.setQuestionId(question.getId());
|
|
|
- answer.setSeq(question.getSeq());
|
|
|
- answer.setKnowledgeId(answerSheet.getKnowledgeId());
|
|
|
- addList.add(answer);
|
|
|
+ for(PaperVO.QuestionAnswer question : answerSheet.getQuestions()) {
|
|
|
+ if(CollectionUtils.isEmpty(question.getSubQuestions())) {
|
|
|
+ for(PaperVO.QuestionAnswer sq : question.getSubQuestions()) {
|
|
|
+ LearnAnswer answer = buildAnswer(answerSheet, questionMap, sq, addList, updateList);
|
|
|
+ if(!answer.getState().equals(1L)) {
|
|
|
+ wrongCount++;
|
|
|
+ }
|
|
|
+ }
|
|
|
} else {
|
|
|
- answer.setAnswerId(answerMap.get(question.getId()).getAnswerId());
|
|
|
- updateList.add(answer);
|
|
|
- }
|
|
|
- answer.setAnswer(StringUtils.join(question.getAnswers(), ","));
|
|
|
- answer.setState(question.getState());
|
|
|
- if(!answer.getState().equals(1L)) {
|
|
|
- wrongCount++;
|
|
|
+ LearnAnswer answer = buildAnswer(answerSheet, questionMap, question, addList, updateList);
|
|
|
+ if(!answer.getState().equals(1L)) {
|
|
|
+ wrongCount++;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
if(addList.size() > 0) {
|
|
|
@@ -172,6 +171,26 @@ public class ExamService {
|
|
|
paperMapper.updateLearnPaper(up);
|
|
|
}
|
|
|
|
|
|
+ private LearnAnswer buildAnswer(AnswerSheet answerSheet, Map<Long, PaperVO.QuestionAnswer> questionMap, PaperVO.QuestionAnswer question,
|
|
|
+ List<LearnAnswer> addList, List<LearnAnswer> updateList) {
|
|
|
+ LearnAnswer answer = new LearnAnswer();
|
|
|
+ PaperVO.QuestionAnswer exist = questionMap.remove(question.getId());
|
|
|
+ if(null == exist) {
|
|
|
+ answer.setExamineeId(answerSheet.getExamineeId());
|
|
|
+ answer.setStudentId(SecurityUtils.getUserId());
|
|
|
+ answer.setQuestionId(question.getId());
|
|
|
+ answer.setSeq(question.getSeq());
|
|
|
+ answer.setKnowledgeId(answerSheet.getKnowledgeId());
|
|
|
+ addList.add(answer);
|
|
|
+ } else {
|
|
|
+ answer.setAnswerId(exist.getAnswerId());
|
|
|
+ updateList.add(answer);
|
|
|
+ }
|
|
|
+ answer.setAnswer(StringUtils.join(question.getAnswers(), ","));
|
|
|
+ answer.setState(question.getState());
|
|
|
+ return answer;
|
|
|
+ }
|
|
|
+
|
|
|
private AnswerSheet openExaminee(PaperType paperType, Long paperId, Long studentId) {
|
|
|
LearnPaper paper = paperMapper.selectLearnPaperById(paperId);
|
|
|
|
|
|
@@ -250,7 +269,7 @@ public class ExamService {
|
|
|
LearnAnswer aCond = new LearnAnswer();
|
|
|
aCond.setExamineeId(examinee.getExamineeId());
|
|
|
Map<Long, LearnAnswer> answerMap = learnAnswerMapper.selectLearnAnswerList(aCond).stream().collect(Collectors.toMap(LearnAnswer::getQuestionId, t -> t));
|
|
|
- List<PaperVO.QuestionSeq> questionList = paperService.loadPaperQuestions(examinee.getPaperId(), answerMap, false);
|
|
|
+ List<PaperVO.QuestionAnswer> questionList = paperService.loadPaperQuestionAnswers(examinee.getPaperId(), answerMap, false);
|
|
|
AnswerSheet answerSheet = buildAnswerSheet(existPaper, examinee);
|
|
|
answerSheet.setQuestions(questionList);
|
|
|
answerSheet.setKnowledgeId(existPaper.getRelateId());
|