Jelajahi Sumber

提交选择题选项乱序代码

chenken 8 tahun lalu
induk
melakukan
53c6b272ea

+ 11 - 1
cqb-paper/src/main/java/com/qmth/cqb/paper/dto/PaperDetailUnitExp.java

@@ -27,7 +27,9 @@ public class PaperDetailUnitExp implements Serializable {
     private String quesId;// 关联试题Id
 
     private List<Double> subScoreList;// 对应套题的情况下,各子题的分数分布
-
+    
+    private String optionOrder;
+    
     public static long getSerialVersionUID() {
         return serialVersionUID;
     }
@@ -88,4 +90,12 @@ public class PaperDetailUnitExp implements Serializable {
         this.subScoreList = subScoreList;
     }
 
+	public String getOptionOrder() {
+		return optionOrder;
+	}
+
+	public void setOptionOrder(String optionOrder) {
+		this.optionOrder = optionOrder;
+	}
+    
 }

+ 49 - 8
cqb-paper/src/main/java/com/qmth/cqb/paper/service/PaperService.java

@@ -1,7 +1,6 @@
 package com.qmth.cqb.paper.service;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -22,9 +21,6 @@ import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Service;
 
 import com.google.gson.Gson;
-import com.mongodb.BasicDBList;
-import com.mongodb.BasicDBObject;
-import com.mongodb.DBObject;
 import com.qmth.cqb.flow.enums.PassEnum;
 import com.qmth.cqb.flow.model.DataMapModel;
 import com.qmth.cqb.flow.service.ComTaskService;
@@ -43,6 +39,7 @@ import com.qmth.cqb.paper.model.PaperDetailUnit;
 import com.qmth.cqb.paper.model.PaperSearchInfo;
 import com.qmth.cqb.question.dao.QuesBakRepo;
 import com.qmth.cqb.question.dao.QuesRepo;
+import com.qmth.cqb.question.model.QuesOption;
 import com.qmth.cqb.question.model.Question;
 import com.qmth.cqb.question.model.QuestionBak;
 import com.qmth.cqb.question.service.QuesService;
@@ -394,6 +391,8 @@ public class PaperService {
             if (paperDetailUnits != null && paperDetailUnits.size() > 0) {
                 List<PaperDetailUnitExp> paperDetailUnitExps = BeanCopierUtil.copyPropertiesOfList(paperDetailUnits,
                         PaperDetailUnitExp.class);
+                //选择题,套题下选择题  选项乱序
+                reorderChoicequestionOption(paperDetailUnitExps);
                 paperDetailExps.get(i).setPaperDetailUnits(paperDetailUnitExps);
             } else {
                 paperDetailExps.get(i).setUnitCount(0);
@@ -405,6 +404,49 @@ public class PaperService {
 
         return paperExp;
     }
+    
+    /**
+     * 重新对选择题option进行排序(多选、单选、套题下选择题)
+     */
+    private void reorderChoicequestionOption(List<PaperDetailUnitExp> paperDetailUnitExps){
+    	for(PaperDetailUnitExp paperDetailUnitExp:paperDetailUnitExps){
+        	String optionOrder = paperDetailUnitExp.getOptionOrder();
+        	if(StringUtil.isNotBlank(optionOrder)){
+        		Question question = paperDetailUnitExp.getQuestion();
+            	if(question.getQuestionType()==QuesStructType.SINGLE_ANSWER_QUESTION||
+         			question.getQuestionType()==QuesStructType.MULTIPLE_ANSWER_QUESTION){
+            		question.setQuesOptions(reorderOptionCore(question.getQuesOptions(),optionOrder));
+            	}
+            	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){
+            				index++;
+            				subQuestion.setQuesOptions(reorderOptionCore(question.getQuesOptions(),optionOrder.split(";")[index]));
+                    	}
+            		}
+            	}
+        	}
+        }
+    }
+    
+    private List<QuesOption> reorderOptionCore(List<QuesOption> quesOptions,String optionOrder){
+		List<QuesOption> newQuesOptions = new ArrayList<QuesOption>();
+		if(StringUtil.isBlank(optionOrder)){
+			return null;
+		}
+		String[] optionOrderArr = optionOrder.split(",");
+		for(int j = 0;j<optionOrderArr.length;j++){
+			String number = j+1+"";
+			if(number.equals(quesOptions.get(j).getNumber())){
+				newQuesOptions.add(quesOptions.get(j));
+			}
+		}
+		return newQuesOptions;
+    }
 
     /**
      * 初始化试卷内容(增加序号)
@@ -418,18 +460,17 @@ public class PaperService {
         int mainNum = 0;
         int subNum = 0;
         Collections.sort(paperExp.getPaperDetails());
-        for (PaperDetailExp paperDetail : paperExp.getPaperDetails()) {
+        List<PaperDetailExp> paperDetailExpList = paperExp.getPaperDetails();
+        for (PaperDetailExp paperDetail:paperDetailExpList) {
             // 大题序号
             paperDetail.setCnNum(CommonUtils.toCHNum(paperDetail.getNumber()));
             paperDetail.setNumber(++mainNum);
             if (paperDetail.getPaperDetailUnits() == null || paperDetail.getPaperDetailUnits().size() == 0) {
-                return;
+                continue;
             }
             // 小题序号
             for (PaperDetailUnitExp paperDetailUnit : paperDetail.getPaperDetailUnits()) {
-
                 quesService.formatQuesUnit(paperDetailUnit.getQuestion());
-
                 List<Question> subQuesList = paperDetailUnit.getQuestion().getSubQuestions();
                 // 套题序号
                 if (subQuesList != null && subQuesList.size() > 0) {