|
@@ -353,6 +353,7 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
|
|
|
}
|
|
|
return paperIdList;
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* 根据paper得到PaperDto
|
|
|
* @param paper
|
|
@@ -367,29 +368,32 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
|
|
|
// 封装小题
|
|
|
for (int i = 0; i < paperDetailDtos.size(); i++) {
|
|
|
List<PaperDetailUnit> paperDetailUnits = paperDetailUnitRepo.findByPaperDetail(paperDetails.get(i));
|
|
|
+ //设置答案
|
|
|
+ setAnswer(paperDetailUnits);
|
|
|
List<PaperDetailUnitDto> paperDetailUnitDtos = BeanCopierUtil.copyPropertiesOfList(paperDetailUnits,
|
|
|
PaperDetailUnitDto.class);
|
|
|
for (int j = 0; j < paperDetailUnitDtos.size(); j++) {
|
|
|
- PaperDetailUnitDto unitDto = paperDetailUnitDtos.get(j);
|
|
|
- if(paperDetailUnits.get(j)==null||paperDetailUnits.get(j).getQuestion()==null){
|
|
|
+ PaperDetailUnit paperDetailUnit = paperDetailUnits.get(j);
|
|
|
+ if(paperDetailUnit==null||paperDetailUnit.getQuestion()==null){
|
|
|
break;
|
|
|
}
|
|
|
- unitDto.setQuesId(paperDetailUnits.get(j).getQuestion().getId());
|
|
|
- if (StringUtils.isNotEmpty(paperDetailUnits.get(j).getQuestion().getQuesAnswer())) {
|
|
|
- String answer = DocxProcessUtil
|
|
|
- .getTextInHtml(paperDetailUnits.get(j).getQuestion().getQuesAnswer());
|
|
|
- unitDto.setAnswer(answer);
|
|
|
- }
|
|
|
+ PaperDetailUnitDto unitDto = paperDetailUnitDtos.get(j);
|
|
|
+ unitDto.setQuesId(paperDetailUnit.getQuestion().getId());
|
|
|
+ String answer = paperDetailUnit.getQuestion().getQuesAnswer();
|
|
|
+ if (StringUtils.isNotEmpty(answer)) {
|
|
|
+ unitDto.setAnswer(answer);
|
|
|
+ }
|
|
|
if (unitDto.getQuestionType() == QuesStructType.NESTED_ANSWER_QUESTION) {// 假如是套题
|
|
|
- List<Question> subQuesList = paperDetailUnits.get(j).getQuestion().getSubQuestions();
|
|
|
+ List<Question> subQuesList = paperDetailUnit.getQuestion().getSubQuestions();
|
|
|
List<SubQuestionDto> subQuesDtos = BeanCopierUtil.copyPropertiesOfList(subQuesList,
|
|
|
SubQuestionDto.class);
|
|
|
for (int m = 0; m < subQuesList.size(); m++) {
|
|
|
List<QuesOptionDto> quesOptionDtos = BeanCopierUtil
|
|
|
.copyPropertiesOfList(subQuesList.get(m).getQuesOptions(), QuesOptionDto.class);
|
|
|
subQuesDtos.get(m).setQuesOptions(quesOptionDtos);
|
|
|
- subQuesDtos.get(m)
|
|
|
- .setQuesAnswer(DocxProcessUtil.getTextInHtml(subQuesList.get(m).getQuesAnswer()));
|
|
|
+ if(StringUtils.isNotEmpty(subQuesList.get(m).getQuesAnswer())){
|
|
|
+ subQuesDtos.get(m).setQuesAnswer(subQuesList.get(m).getQuesAnswer());
|
|
|
+ }
|
|
|
subQuesDtos.get(m).setNumber(m + 1);
|
|
|
}
|
|
|
unitDto.setSubQuestions(subQuesDtos);
|
|
@@ -400,4 +404,57 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
|
|
|
}
|
|
|
return paperDto;
|
|
|
}
|
|
|
+
|
|
|
+ private void setAnswer(List<PaperDetailUnit> paperDetailUnits) {
|
|
|
+ for (PaperDetailUnit paperDetailUnit : paperDetailUnits) {
|
|
|
+ if(paperDetailUnit==null||paperDetailUnit.getQuestion()==null){
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ String optionOrder = paperDetailUnit.getOptionOrder();
|
|
|
+ Question question = paperDetailUnit.getQuestion();
|
|
|
+ if (question.getQuestionType() == QuesStructType.SINGLE_ANSWER_QUESTION
|
|
|
+ || question.getQuestionType() == QuesStructType.MULTIPLE_ANSWER_QUESTION) {
|
|
|
+ setAnswerUnit(question, optionOrder);
|
|
|
+ } else if (question.getQuestionType() == QuesStructType.NESTED_ANSWER_QUESTION) {
|
|
|
+ List<Question> subQuestions = question.getSubQuestions();
|
|
|
+ int index = 0;
|
|
|
+ for (int k = 0; k < subQuestions.size(); k++) {
|
|
|
+ Question subQuestion = subQuestions.get(k);
|
|
|
+ if (subQuestion.getQuestionType() == QuesStructType.SINGLE_ANSWER_QUESTION
|
|
|
+ || subQuestion.getQuestionType() == QuesStructType.MULTIPLE_ANSWER_QUESTION) {
|
|
|
+ if(StringUtils.isNotEmpty(optionOrder) && optionOrder.contains(";")){
|
|
|
+ setAnswerUnit(subQuestion, optionOrder.split(";")[index]);
|
|
|
+ }else{
|
|
|
+ setAnswerUnit(subQuestion, ""); }
|
|
|
+ index++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void setAnswerUnit(Question question,String optionOrder){
|
|
|
+ List<QuesOption> quesOptions = question.getQuesOptions();
|
|
|
+ if(quesOptions == null || quesOptions.size() == 0){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if(StringUtils.isEmpty(optionOrder)){
|
|
|
+ int j = 0;
|
|
|
+ for(QuesOption quesOption : quesOptions){
|
|
|
+ if(quesOption.getIsCorrect() == 1){
|
|
|
+ question.setQuesAnswer(CommonUtils.getOptionNum(j));
|
|
|
+ }
|
|
|
+ j++;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ String [] order = optionOrder.split(",");
|
|
|
+ for(int i = 0;i < order.length;i++){
|
|
|
+ for(QuesOption quesOption : quesOptions){
|
|
|
+ if(order[i].equals(quesOption.getNumber()) && quesOption.getIsCorrect() == 1){
|
|
|
+ question.setQuesAnswer(CommonUtils.getOptionNum(i));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|