weiwenhai пре 7 година
родитељ
комит
73ed158b1d

+ 19 - 8
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/GenPaperService.java

@@ -277,7 +277,7 @@ public class GenPaperService {
     		List<PaperDetail> paperDetails = buildPaperDetail(map,genPaperDto);
     		//构建新的试卷
     		Paper paper = buildPaper(map,genPaperDto,paperDetails);
-    		paperService.formatPaper(paper, user);
+    		//paperService.formatPaper(paper, user);
             paperMsgMap.put("paper", paper);
             paperMsgMap.put("msg", "success");
             return paperMsgMap;
@@ -353,7 +353,7 @@ public class GenPaperService {
     		List<PaperDetail> paperDetails = buildPaperDetail(map,genPaperDto);
     		//构建新的试卷
     		Paper paper = buildPaper(map,genPaperDto,paperDetails);
-    		paperService.formatPaper(paper, user);
+    		//paperService.formatPaper(paper, user);
             paperMsgMap.put("paper", paper);
             paperMsgMap.put("msg", "success");
     	}
@@ -409,20 +409,34 @@ public class GenPaperService {
 		//赋值难度
 		paper.setDifficultyDegree(difficulty);
     	paper = paperRepo.save(paper);
+    	int number = 0;
+    	int allQuesCount = 0;
     	for(int i=0;i<paperDetails.size();i++){
+    		int count = 0;
+    		int nestQusNum = 0;
     		PaperDetail paperDetail = paperDetails.get(i);
     		paperDetail.setNumber(i+1);
     		paperDetail.setPaper(paper);
     		paperDetail = paperDetailRepo.save(paperDetail);
     		List<PaperDetailUnit> units = map.get(paperDetail.getName());
     		for(int j=0;j<units.size();j++){
+    			if (units.get(j).getQuestion() != null 
+                		&& units.get(j).getQuestion().getSubQuestions() != null
+                            && units.get(j).getQuestion().getSubQuestions().size() > 0) {
+                    nestQusNum += units.get(j).getQuestion().getSubQuestions().size() - 1;
+                }
     			PaperDetailUnit paperDetailUnit = units.get(j);
     			paperDetailUnit.setPaper(paper);
     			paperDetailUnit.setPaperDetail(paperDetail);
-    			paperDetailUnit.setNumber(j+1);
+    			paperDetailUnit.setNumber(number+1);
     			unitRepo.save(paperDetailUnit);
+    			number++ ;
     		}
+    		count = units.size() + nestQusNum;
+    		allQuesCount += count;
     	}
+    	paper.setUnitCount(allQuesCount);
+    	paper = paperRepo.save(paper);
     	return paper;
     }
     
@@ -430,15 +444,15 @@ public class GenPaperService {
     private List<PaperDetail> buildPaperDetail(Map<String, List<PaperDetailUnit>> map,GenPaperDto genPaperDto){
     	//定义新的大题集合
     	List<PaperDetail> paperDetails = new ArrayList<PaperDetail>();
-    	Double score = 0d;
     	for(String name:map.keySet()){
+    		Double score = 0d;
     		PaperDetail paperDetail = new PaperDetail();
     		paperDetail.setName(name);
     		paperDetail.setCreateTime(CommonUtils.getCurDateTime());
     		paperDetail.setCreator(genPaperDto.getCreator());
     		List<PaperDetailUnit> paperDetailUnits = map.get(name);
     		for(PaperDetailUnit unit:paperDetailUnits){
-    			score += unit.getScore();
+    			score += unit.getQuestion().getScore();
     		}
     		paperDetail.setScore(score);
     		paperDetail.setUnitCount(paperDetailUnits.size());
@@ -447,7 +461,6 @@ public class GenPaperService {
     	return paperDetails;
     }
     
-    
     //把集合里面相同大题的小题分类
     private Map<String, List<PaperDetailUnit>> sortPaperDeatilUnit(List<PaperDetailUnit> selectedUnits) {
 		Map<String, List<PaperDetailUnit>> map = new HashMap<String, List<PaperDetailUnit>>();
@@ -467,8 +480,6 @@ public class GenPaperService {
 		return map;
 	}
     
-    //计算所有题目数量
-
 	//计算所有题目数量
     private int countQuestions(List<PaperDetailUnit> unitList) {
     	int sum = 0;