Forráskód Böngészése

改善调卷性能

宋悦 7 éve
szülő
commit
776b52c039

+ 17 - 0
cqb-paper/src/main/java/com/qmth/cqb/paper/service/impl/ExtractConfigServiceImpl.java

@@ -526,18 +526,33 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 //		if(cacheDto != null && cacheDto.getClass().equals(PaperDto.class)){
 //			return (PaperDto)cacheDto;
 //		}
+		long beginTime = System.currentTimeMillis();
 		//没有则重新组装
 		PaperDto paperDto = paperDtoAssembler.toDto(paper);
+		long paperDtoEndTime = System.currentTimeMillis();
+		logger.info("单独组装paperDto耗时:"+(paperDtoEndTime - beginTime)+"ms");
+
 		//将小题全部取出来,只取一次
 		List<PaperDetailUnit> allPaperDetailUnits = paperDetailUnitRepo.findByPaperOrderByNumber(paper);
+		long pduEndTime = System.currentTimeMillis();
+		logger.info("数据库取小题耗时:"+(pduEndTime - paperDtoEndTime)+"ms");
+
 		//获取大题
 		List<PaperDetail> paperDetails = paperDetailRepo.findByPaperOrderByNumber(paper);
+		long pdEndTime = System.currentTimeMillis();
+		logger.info("数据库取大题耗时:"+(pdEndTime - pduEndTime)+"ms");
+
 		//抽取大题Id对应的小题
 		Map<String,List<PaperDetailUnit>> pduMap = allPaperDetailUnits.stream()
 				.collect(Collectors.groupingBy(PaperDetailUnit::getDetailId));
+		long pduMapEndTime = System.currentTimeMillis();
+		logger.info("获取大题与小题对应关系耗时:"+(pduMapEndTime - pdEndTime)+"ms");
+
         // 获取大题Dto
         List<PaperDetailDto> paperDetailDtos = paperDetailDtoAssembler.toDtoList(paperDetails);
         paperDto.setPaperDetails(paperDetailDtos);
+		long paperDetailDtoEndTime = System.currentTimeMillis();
+		logger.info("单独组装paperDetailDto耗时:"+(paperDetailDtoEndTime - pduMapEndTime)+"ms");
 
         // 封装小题
         for (int i = 0; i < paperDetailDtos.size(); i++) {
@@ -583,6 +598,8 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
             paperDetailDtos.get(i).setPaperDetailUnits(paperDetailUnitDtos);
             paperDetailDtos.get(i).setCnNum(CommonUtils.toCHNum(paperDetailDtos.get(i).getNumber()));
         }
+		long paperDetailUnitDtoEndTime = System.currentTimeMillis();
+		logger.info("单独组装paperDetailUnitDto耗时:"+(paperDetailUnitDtoEndTime - paperDetailDtoEndTime)+"ms");
         //将重新组装的dto放进缓存
 //        redisTemplate.opsForValue().set(paperDto.getId(),paperDto);
 		return paperDto;