Procházet zdrojové kódy

改善调卷性能

宋悦 před 7 roky
rodič
revize
4f009d78e8

+ 12 - 11
cqb-paper/src/main/java/com/qmth/cqb/paper/service/impl/ExtractConfigServiceImpl.java

@@ -263,19 +263,18 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 				.map(PaperDetailUnit::getPaperDetail)
 				.collect(Collectors.toList());
 		//抽取大题号对应的小题
-		Map<Integer,List<PaperDetailUnit>> pduMap = allPaperDetailUnits.stream()
-				.collect(Collectors.groupingBy(PaperDetailUnit::getDetailNumber));
+		Map<String,List<PaperDetailUnit>> pduMap = allPaperDetailUnits.stream()
+				.collect(Collectors.groupingBy(PaperDetailUnit::getDetailId));
 		//最终保存的所有小题
 		List<PaperDetailUnit> savePaperDetailUnits = new ArrayList<>();
 		paper.setId(null);
 		paper.setPaperType(paperType);
+		Paper newPaper = paperRepo.save(paper);
 
 		for(int i = 0;i<paperDetails.size();i++){
 			PaperDetail paperDetail = paperDetails.get(i);
-			paperDetail.setId(null);
-			paperDetail.setPaper(paper);
 
-			List<PaperDetailUnit> paperDetailUnits = pduMap.get(paperDetail.getNumber());
+			List<PaperDetailUnit> paperDetailUnits = pduMap.get(paperDetail.getId());
 			if(paperDetailUnits == null || paperDetailUnits.size() == 0){
 				continue;
 			}
@@ -294,21 +293,23 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 					Collections.shuffle(paperDetailUnits);//打乱小题List
 				}
 			}
-			
+			paperDetail.setId(null);
+			paperDetail.setPaper(newPaper);
+			PaperDetail newPaperDetail = paperDetailRepo.save(paperDetail);
+
 			for(int j = 0;j<paperDetailUnits.size();j++){
 				//重新设置保存PaperDetailUnit
 				PaperDetailUnit paperDetailUnit = paperDetailUnits.get(j);
 				paperDetailUnit.setPaperType(paperType);
-				paperDetailUnit.setPaper(paper);
-				paperDetailUnit.setPaperDetail(paperDetail);
+				paperDetailUnit.setPaper(newPaper);
+				paperDetailUnit.setPaperDetail(newPaperDetail);
 				paperDetailUnit.setNumber(minNumber+j);			//重新设置序号
 				reSavePaperDetailUtilAndQuestion(paperDetailUnit,upSetOptionOrder);
 				savePaperDetailUnits.add(paperDetailUnit);
 			}
+
 		}
-		//保存试卷信息
-		Paper newPaper = paperRepo.save(paper);
-		paperDetailRepo.save(paperDetails);
+		//保存小题信息
 		paperDetailUnitRepo.save(savePaperDetailUnits);
 
 		//清空所有list