Procházet zdrojové kódy

Merge remote-tracking branch 'origin/dev0410' into dev0410

宋悦 před 8 roky
rodič
revize
4bdd3de9bb

+ 12 - 1
cqb-paper/src/main/java/com/qmth/cqb/paper/model/PaperDetailUnit.java

@@ -183,12 +183,23 @@ public class PaperDetailUnit implements Serializable, Comparable<PaperDetailUnit
 
     @Override
     public int compareTo(PaperDetailUnit unit) {
-        if (unit != null) {
+        /*if (unit != null) {
             if (this.getQuestionType().getId() > unit.getQuestionType().getId()) {
                 return 1;
             } else if (this.getQuestionType().getId() == unit.getQuestionType().getId()) {
                 return 0;
             }
+        }*/
+        if (unit != null) {
+            if(this.getNumber() == null)return -1;
+            if(unit.getNumber() == null)return 1;
+            if (this.getNumber() > unit.getNumber()) {
+                return 1;
+            } else if (this.getNumber() < unit.getNumber()) {
+                return -1;
+            }else{
+                return 0;
+            }
         }
         return -1;
     }

+ 9 - 37
cqb-paper/src/main/java/com/qmth/cqb/paper/service/ExtractConfigServiceImpl.java

@@ -372,7 +372,10 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
         paperDto.setPaperDetails(paperDetailDtos);
         // 封装小题
         for (int i = 0; i < paperDetailDtos.size(); i++) {
+        	//根据大题查出大题下面的小题
             List<PaperDetailUnit> paperDetailUnits = paperDetailUnitRepo.findByPaperDetail(paperDetails.get(i));
+            //小题根据number进行排序 perDetailUnit 对象中有compareTo方法
+            Collections.sort(paperDetailUnits);
 			//设置答案
 			setAnswer(paperDetailUnits);
             List<PaperDetailUnitDto> paperDetailUnitDtos = BeanCopierUtil.copyPropertiesOfList(paperDetailUnits,PaperDetailUnitDto.class);
@@ -432,7 +435,8 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 						if(StringUtils.isNotEmpty(optionOrder) && optionOrder.contains(";")){
 							setAnswerUnit(subQuestion, optionOrder.split(";")[index]);
 						}else{
-							setAnswerUnit(subQuestion, "");								}
+							setAnswerUnit(subQuestion, "");								
+						}
 						index++;
 					}
 				}
@@ -465,6 +469,10 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 		}
 	}
 	
+	/**
+	 * 根据paperDetailUnitId抽取单个试题
+	 * 根据paperDetailUnitId中设置的option顺序对option排序
+	 */
 	@Override
 	public Map<String, Object> getQuestionById(String paperDetailUnitId) {
         String msg = "";
@@ -502,8 +510,6 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
             if (question.getQuestionType() == QuesStructType.SINGLE_ANSWER_QUESTION
                     || question.getQuestionType() == QuesStructType.MULTIPLE_ANSWER_QUESTION) {
                 question.setQuesOptions(reorderOptionCore(question.getQuesOptions(), optionOrder));
-                //设置选择题答案   暂不需要
-                //setChoiceQuestionAnswer(question);
             }
             if (question.getQuestionType() == QuesStructType.NESTED_ANSWER_QUESTION) {
                 List<Question> subQuestions = question.getSubQuestions();
@@ -516,13 +522,6 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
                         index++;
                     }
                 }
-                /*
-                 * //设置套题中选择题答案  暂不需要
-                 for (int m = 0; m < subQuestions.size(); m++) {
-                    Question subQuestion = subQuestions.get(m);
-                    setChoiceQuestionAnswer(subQuestion);
-               	 }
-                */
             }
         }
     }
@@ -550,31 +549,4 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
         return newQuesOptions;
     }
 	
-    /**
-     * 设置选择题答案
-     * @param question
-     */
-    private void setChoiceQuestionAnswer(Question question){
-    	if (question.getQuestionType() == QuesStructType.SINGLE_ANSWER_QUESTION) {
-    		for(int i = 0;i<question.getQuesOptions().size();i++){
-    			QuesOption option = question.getQuesOptions().get(i);
-    			if(option.getIsCorrect()==1){
-    				char answer = (char)(i+65);
-    				question.setQuesAnswer(String.valueOf(answer));
-    				break;
-    			}
-    		}
-        }
-    	if(question.getQuestionType() == QuesStructType.MULTIPLE_ANSWER_QUESTION){
-    		String[] answerArray = {};
-    		for(int i = 0;i<question.getQuesOptions().size();i++){
-    			QuesOption option = question.getQuesOptions().get(i);
-    			if(option.getIsCorrect()==1){
-    				char answer = (char)(i+65);
-    				answerArray[i] = String.valueOf(answer);
-    			}
-    		}
-    		question.setQuesAnswer(StringUtils.join(answerArray,","));
-    	}
-    }
 }