Parcourir la source

改善调卷性能

宋悦 il y a 7 ans
Parent
commit
c7e1d3c209

+ 14 - 3
cqb-paper/src/main/java/com/qmth/cqb/paper/service/impl/ExtractConfigServiceImpl.java

@@ -549,7 +549,7 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 		logger.info("排序大题耗时:"+(pdSortEndTime - pdEndTime)+"ms");
 
 		//抽取大题Id对应的小题
-		Map<String,List<PaperDetailUnit>> pduMap = allPaperDetailUnits.stream()
+		Map<String,List<PaperDetailUnit>> pduMap = allPaperDetailUnits.parallelStream()
 				.collect(Collectors.groupingBy(PaperDetailUnit::getDetailId));
 		long pduMapEndTime = System.currentTimeMillis();
 		logger.info("获取大题与小题对应关系耗时:"+(pduMapEndTime - pdSortEndTime)+"ms");
@@ -566,14 +566,16 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 			PaperDetail paperDetail = paperDetails.get(i);
 
             List<PaperDetailUnit> paperDetailUnits = pduMap.get(paperDetail.getId());
-			//设置答案
-            setSelectQuestoionAnswer(paperDetailUnits);
+
             List<PaperDetailUnitDto> paperDetailUnitDtos = paperDetailUnitDtoAssembler.toDtoList(paperDetailUnits);
             for (int j = 0; j < paperDetailUnitDtos.size(); j++) {
             	PaperDetailUnit paperDetailUnit = paperDetailUnits.get(j);
             	if(paperDetailUnit==null||paperDetailUnit.getQuestion()==null){
                 	break;
                 }
+				//设置答案
+				setSelectQuestionAnswerUnit(paperDetailUnit);
+
                 PaperDetailUnitDto unitDto = paperDetailUnitDtos.get(j);
                 /**
                  * 此处不能传questionId,需要传paperDetailUnitId
@@ -621,6 +623,15 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 			quesService.setSelectQuestionAnswer(question,optionOrder);
 		}
 	}
+
+	private void setSelectQuestionAnswerUnit(PaperDetailUnit paperDetailUnit){
+		Question question = paperDetailUnit.getQuestion();
+		if(paperDetailUnit == null || question == null){
+			return;
+		}
+		String optionOrder = paperDetailUnit.getOptionOrder();
+		quesService.setSelectQuestionAnswer(question,optionOrder);
+	}
 	
 	
 	/**