瀏覽代碼

合并代码,添加日志

chenken 8 年之前
父節點
當前提交
c09424501c
共有 1 個文件被更改,包括 68 次插入11 次删除
  1. 68 11
      cqb-paper/src/main/java/com/qmth/cqb/paper/service/ExtractConfigServiceImpl.java

+ 68 - 11
cqb-paper/src/main/java/com/qmth/cqb/paper/service/ExtractConfigServiceImpl.java

@@ -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));
+					}
+				}
+			}
+		}
+	}
 }