浏览代码

提交导出试卷结构BUG

chenken 7 年之前
父节点
当前提交
4c324a563a

+ 29 - 1
cqb-paper/src/main/java/com/qmth/cqb/paper/service/export/ExportPaperAbstractService.java

@@ -972,6 +972,11 @@ public abstract class ExportPaperAbstractService {
      * @param questionTypeNums
      */
     public void fillObjectiveQuestions(List<PaperDetailExp> objectiveDetails,List<QuestionTypeNum> questionTypeNums) {
+    	List<QuesStructType> types = new ArrayList<QuesStructType>();
+    	for(PaperDetailExp paperDetailExp:objectiveDetails){
+    		List<PaperDetailUnitExp> paperDetailUnits = paperDetailExp.getPaperDetailUnits();
+    		types.add(paperDetailUnits.get(0).getQuestionType());
+    	}
     	for(PaperDetailExp paperDetailExp:objectiveDetails){
     		List<PaperDetailUnitExp> paperDetailUnits = paperDetailExp.getPaperDetailUnits();
     		//1.将大题中的小题排序
@@ -983,8 +988,11 @@ public abstract class ExportPaperAbstractService {
     		}
     		//3.根据试卷结构导出设置中的数量补齐客观题
     		QuesStructType type = paperDetailUnits.get(0).getQuestionType();
-    		int unitSize = paperDetailUnits.size();
+    		int unitSize = paperDetailUnits.size();//当前小题的数量
     		for(QuestionTypeNum questionTypeNum:questionTypeNums){
+    			if(questionTypeNum.getQuantity()==null){
+    				continue;
+    			}
     			if(type==questionTypeNum.getQuestionType()){
     				int length = questionTypeNum.getQuantity()-unitSize;
     				for(int i = 0;i<length;i++){
@@ -1000,6 +1008,26 @@ public abstract class ExportPaperAbstractService {
     			}
     		}
     	}
+    	//添加试卷中没有的题型
+    	PaperDetailExp paperDetailExp = new PaperDetailExp();
+    	paperDetailExp.setNumber(objectiveDetails.size()+1);
+    	List<PaperDetailUnitExp> paperDetailUnits  = new ArrayList<PaperDetailUnitExp>();
+    	for(QuestionTypeNum questionTypeNum:questionTypeNums){
+	    	if(!types.contains(questionTypeNum.getQuestionType())){
+				for(int i = 0;i<questionTypeNum.getQuantity();i++){
+					PaperDetailUnitExp paperDetailUnitExp = new PaperDetailUnitExp();
+					paperDetailUnitExp.setQuestionType(questionTypeNum.getQuestionType());
+					paperDetailUnitExp.setScore((double) 0);
+					paperDetailUnitExp.setNumber((i+1));
+					Question question = new Question();
+					question.setQuesAnswer("#");
+					paperDetailUnitExp.setQuestion(question);
+					paperDetailUnits.add(paperDetailUnitExp);
+				}
+			}
+    	}
+    	paperDetailExp.setPaperDetailUnits(paperDetailUnits);
+    	objectiveDetails.add(paperDetailExp);
 	}
 
 	/**