Bläddra i källkod

调卷时设置答案

宋悦 8 år sedan
förälder
incheckning
b47ba2adc4

+ 5 - 0
cqb-comm-utils/src/main/java/com/qmth/cqb/utils/CommonUtils.java

@@ -159,6 +159,11 @@ public final class CommonUtils {
         return list;
     }
 
+    public static String getOptionNum(int number){
+        char optionNum = (char)(65 + number);
+        return String.valueOf(optionNum);
+    }
+
     public static void main(String[] args) {
         // QuesStructType quesStructType = getEnum(QuesStructType.class,"单选");
         // System.out.println(quesStructType.getName());

+ 51 - 0
cqb-paper/src/main/java/com/qmth/cqb/paper/service/ExtractConfigServiceImpl.java

@@ -10,6 +10,7 @@ import java.util.Random;
 import java.util.Set;
 
 import org.apache.commons.lang3.StringUtils;
+import org.nlpcn.commons.lang.util.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Example;
 import org.springframework.data.mongodb.core.MongoTemplate;
@@ -354,6 +355,8 @@ 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++) {
@@ -384,4 +387,52 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
         }
 		return paperDto;
 	}
+
+	private void setAnswer(List<PaperDetailUnit> paperDetailUnits){
+
+		for(PaperDetailUnit paperDetailUnit:paperDetailUnits){
+
+			String optionOrder = paperDetailUnit.getOptionOrder();
+
+			if (StringUtil.isNotBlank(optionOrder)) {
+
+				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) {
+							setAnswerUnit(subQuestion,optionOrder.split(";")[index]);
+							index++;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	private void setAnswerUnit(Question question,String optionOrder){
+		List<QuesOption> quesOptions = question.getQuesOptions();
+		if(StringUtils.isEmpty(optionOrder) || quesOptions == null || quesOptions.size() == 0){
+			return;
+		}
+		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("<p>"+CommonUtils.getOptionNum(i)+"</p>");
+				}
+			}
+		}
+	}
 }

+ 2 - 1
cqb-paper/src/main/java/com/qmth/cqb/paper/service/ImportPaperService.java

@@ -657,7 +657,7 @@ public class ImportPaperService {
                 }
             }
             // 选择题答案不持久化
-            question.setQuesAnswer(null);
+//            question.setQuesAnswer(null);
         }
     }
 
@@ -739,6 +739,7 @@ public class ImportPaperService {
                 }
                 subQuesList.add(subQues);
                 i = importPaperCheck.index - 1;
+                nestedQuesType = "";
             } else {
                 break;
             }