Эх сурвалжийг харах

改善调卷性能,增加耗时统计日志

宋悦 7 жил өмнө
parent
commit
13694f0800

+ 23 - 6
cqb-paper/src/main/java/com/qmth/cqb/paper/service/impl/ExtractConfigServiceImpl.java

@@ -7,6 +7,7 @@ import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.SystemUtils;
 import org.nlpcn.commons.lang.util.StringUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -166,37 +167,53 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 	public Map<String, Object> extractExamPaper(Long exam_id,String course_code,String group_code){
 		Map<String, Object> returnMap = new HashMap<String,Object>();
 		logger.info("调卷开始...");
+		long beginTime = System.currentTimeMillis();
 		logger.info("开始根据examId:"+exam_id+"和courseCode:"+course_code+"获取调卷规则");
 		ExtractConfig extractConfig = this.findConfig(new ExtractConfig(exam_id,course_code));
 		if(extractConfig==null){
-			 logger.debug("该考试和课程下调卷规则未制定,请先制定调卷规则,调卷程序退出");
+			 logger.error("该考试和课程下调卷规则未制定,请先制定调卷规则,调卷程序退出");
 			 returnMap.put("errorMsg","该考试和课程下调卷规则未制定,请先制定调卷规则");
 			 return returnMap;
 		}
-		logger.debug("根据调卷规则中设置的概率获取类型为"+group_code+"的试卷");
+		long configFinishTime = System.currentTimeMillis();
+		logger.info("获取调卷规则共耗时:"+(configFinishTime - beginTime)+"ms");
+		logger.info("根据调卷规则中设置的概率获取类型为"+group_code+"的试卷");
 		Map<String,Paper> paperMap = this.getExamPaperByProbability(extractConfig.getExamPaperList());
 		if(paperMap.isEmpty()){
-			logger.debug("该考试和课程下调卷规则中试卷不存在,请检查调卷规则,调卷程序退出");
+			logger.error("该考试和课程下调卷规则中试卷不存在,请检查调卷规则,调卷程序退出");
 			returnMap.put("errorMsg","该考试和课程下调卷规则中试卷不存在,请重新制定调卷规则");
 			return returnMap;
 		}
+
+		long paperMapFinishTime = System.currentTimeMillis();
+		logger.info("获取类型为"+group_code+"的试卷共耗时:"+(paperMapFinishTime - configFinishTime)+"ms");
+
 		Paper basePaper = paperMap.get(group_code);
 		if(basePaper==null){
-			logger.debug("该考试和课程下调卷规则中该类型试卷不存在,请检查调卷规则,调卷程序退出");
+			logger.error("该考试和课程下调卷规则中该类型试卷不存在,请检查调卷规则,调卷程序退出");
 			returnMap.put("errorMsg","该考试和课程下调卷规则中该类型试卷不存在,请重新制定调卷规则");
 			return returnMap;
 		}
 		String basePaperId = basePaper.getId();
-		logger.debug("将原始试卷:"+basePaperId+"根据规则重新组卷");
+		logger.info("将原始试卷:"+basePaperId+"根据规则重新组卷");
     	Paper newPaper = this.recombinationPaper(basePaper,PaperType.STUDENT_EXAM,
 						        				 extractConfig.getScrambling_the_question_order(), 
 						        				 extractConfig.getScrambling_the_option_order());
-    	logger.debug("根据新试卷 paperId:"+newPaper.getId()+"组装PaperDto后返回");
+    	logger.info("根据新试卷 paperId:"+newPaper.getId()+"组装PaperDto后返回");
+
+		long genPaperFinishTime = System.currentTimeMillis();
+		logger.info("组卷共耗时:"+(genPaperFinishTime - paperMapFinishTime)+"ms");
+
     	PaperDto paperDto = getPaperDtoByPaper(newPaper);
+
+		long paperDtoFinishTime = System.currentTimeMillis();
+		logger.info("获取试卷Dto共耗时:"+(paperDtoFinishTime - genPaperFinishTime)+"ms");
+
     	paperDto.setBasePaperId(basePaperId);
     	paperDto.setAllQbjectiveQuestion(checkIsAllQbjectiveQuestion(basePaperId));
 		returnMap.put("paperDto",paperDto);
 		logger.info("调卷完成");
+		logger.info("总共耗时:"+(System.currentTimeMillis() - beginTime)+"ms");
 		return returnMap;
 	}