package com.ots.project.exam.listener;
|
|
import com.ots.common.enums.ExamPaperTypeEnum;
|
import com.ots.common.enums.QuestionTypeEnum;
|
import com.ots.project.exam.domain.ExamPaperAnswer;
|
import com.ots.project.exam.domain.ExamPaperQuestionCustomerAnswer;
|
import com.ots.project.exam.domain.TExamPaper;
|
import com.ots.project.exam.domain.TTextContent;
|
import com.ots.project.exam.dto.ExamPaperAnswerInfo;
|
import com.ots.project.exam.service.ExamPaperAnswerService;
|
import com.ots.project.exam.service.ExamPaperQuestionCustomerAnswerService;
|
import com.ots.project.exam.service.ITTextContentService;
|
import com.ots.project.exam.service.TaskExamCustomerAnswerService;
|
import lombok.AllArgsConstructor;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.context.ApplicationListener;
|
import org.springframework.stereotype.Component;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.Date;
|
import java.util.List;
|
|
|
/**
|
* @author OTS
|
*/
|
@Component
|
@AllArgsConstructor
|
public class CalculateExamPaperAnswerListener implements ApplicationListener<CalculateExamPaperAnswerCompleteEvent> {
|
|
@Autowired
|
private ExamPaperAnswerService examPaperAnswerService;
|
|
@Autowired
|
private ExamPaperQuestionCustomerAnswerService examPaperQuestionCustomerAnswerService;
|
|
@Autowired
|
private ITTextContentService textContentService;
|
|
@Autowired
|
private TaskExamCustomerAnswerService examCustomerAnswerService;
|
|
@Override
|
@Transactional
|
public void onApplicationEvent(CalculateExamPaperAnswerCompleteEvent calculateExamPaperAnswerCompleteEvent) {
|
Date now = new Date();
|
|
ExamPaperAnswerInfo examPaperAnswerInfo = (ExamPaperAnswerInfo) calculateExamPaperAnswerCompleteEvent.getSource();
|
TExamPaper examPaper = examPaperAnswerInfo.getExamPaper();
|
ExamPaperAnswer examPaperAnswer = examPaperAnswerInfo.getExamPaperAnswer();
|
List<ExamPaperQuestionCustomerAnswer> examPaperQuestionCustomerAnswers = examPaperAnswerInfo.getExamPaperQuestionCustomerAnswers();
|
|
examPaperAnswerService.insertByFilter(examPaperAnswer);
|
examPaperQuestionCustomerAnswers.stream().filter(a -> QuestionTypeEnum.needSaveTextContent(a.getQuestionType())).forEach(d -> {
|
TTextContent textContent = new TTextContent(d.getAnswer(), now);
|
textContentService.insertTTextContent(textContent);
|
d.setTextContentId(textContent.getId().intValue());
|
d.setAnswer(null);
|
});
|
examPaperQuestionCustomerAnswers.forEach(d -> {
|
d.setExamPaperAnswerId(examPaperAnswer.getId());
|
});
|
examPaperQuestionCustomerAnswerService.insertList(examPaperQuestionCustomerAnswers);
|
|
switch (ExamPaperTypeEnum.fromCode(examPaper.getPaperType().intValue())) {
|
case Task: {
|
examCustomerAnswerService.insertOrUpdate(examPaper, examPaperAnswer, now);
|
break;
|
}
|
default:
|
break;
|
}
|
}
|
}
|