Ver Fonte

完善调卷规则,添加日志

chenken há 8 anos atrás
pai
commit
33516f7c86

+ 1 - 3
cqb-paper/src/main/java/com/qmth/cqb/paper/service/ExtractConfigService.java

@@ -3,8 +3,6 @@ package com.qmth.cqb.paper.service;
 import java.util.List;
 import java.util.Map;
 
-import cn.com.qmth.examcloud.common.dto.question.PaperDto;
-
 import com.qmth.cqb.paper.model.ExtractConfig;
 import com.qmth.cqb.paper.model.Paper;
 
@@ -61,5 +59,5 @@ public interface ExtractConfigService {
 	 * 根据考试ID,课程code,试卷类型生成试卷
 	 * @return PaperDto
 	 */
-	public PaperDto extract(Long exam_id,String course_code,String group_code);
+	public Map<String, Object> extract(Long exam_id,String course_code,String group_code);
 }

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

@@ -10,6 +10,8 @@ import java.util.Random;
 import java.util.Set;
 
 import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Example;
 import org.springframework.data.mongodb.core.MongoTemplate;
@@ -52,6 +54,8 @@ import com.qmth.cqb.utils.word.DocxProcessUtil;
 @Service("extractConfigService")
 public class ExtractConfigServiceImpl implements ExtractConfigService {
 	
+	private static final Logger logger = LoggerFactory.getLogger(ExtractConfigServiceImpl.class);
+	
 	@Autowired
     private ExtractConfigRepo extractConfigRepo;
 	
@@ -119,25 +123,34 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 	}
 	
 	@Override
-	public PaperDto extract(Long exam_id,String course_code,String group_code){
+	public Map<String, Object> extract(Long exam_id,String course_code,String group_code){
+		Map<String, Object> returnMap = new HashMap<String,Object>();
+		logger.info("调卷开始...");
+		logger.info("根据examId和courseCode获取调卷规则");
 		ExtractConfig extractConfig = this.findConfig(new ExtractConfig(exam_id,course_code));
 		if(extractConfig==null){
-			throw new RuntimeException("调卷规则不存在");
+			 returnMap.put("errorMsg","该考试和课程下调卷规则未制定,请先制定调卷规则");
+			 return returnMap;
 		}
-		//获得规则中设置的试卷
+		logger.info("根据调卷规则中设置的概率获取该类型的试卷");
 		Map<String,Paper> paperMap = this.getExamPaperByProbability(extractConfig.getExamPaperList());
 		if(paperMap.isEmpty()){
-			throw new RuntimeException("抽取试卷失败");
+			returnMap.put("errorMsg","该考试和课程下调卷规则中试卷不存在,请重新制定调卷规则");
+			return returnMap;
 		}
 		Paper paper = paperMap.get(group_code);
 		if(paper==null){
-			throw new RuntimeException("抽取试卷失败");
+			returnMap.put("errorMsg","该考试和课程下调卷规则中该类型试卷不存在,请重新制定调卷规则");
+			return returnMap;
 		}
-		//根据规则中设置的试卷重新组卷得到新试卷
+		logger.info("将该类型的试卷根据规则重新组卷");
     	Paper newPaper = this.recombinationPaper(paper, 
 						        				 extractConfig.getScrambling_the_question_order(), 
 						        				 extractConfig.getScrambling_the_option_order());
-		return getPaperDtoByPaper(newPaper);
+    	logger.info("根据新试卷得到PaperDto后返回");
+		returnMap.put("paperDto", getPaperDtoByPaper(newPaper));
+		logger.info("调卷结束");
+		return returnMap;
 	}
 	
 	@Override
@@ -358,6 +371,9 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
                     PaperDetailUnitDto.class);
             for (int j = 0; j < paperDetailUnitDtos.size(); j++) {
                 PaperDetailUnitDto unitDto = paperDetailUnitDtos.get(j);
+                if(paperDetailUnits.get(j)==null||paperDetailUnits.get(j).getQuestion()==null){
+                	break;
+                }
                 unitDto.setQuesId(paperDetailUnits.get(j).getQuestion().getId());
                 if (StringUtils.isNotEmpty(paperDetailUnits.get(j).getQuestion().getQuesAnswer())) {
                     String answer = DocxProcessUtil

+ 13 - 6
cqb-paper/src/main/java/com/qmth/cqb/paper/web/ExtractConfigController.java

@@ -1,11 +1,15 @@
 package com.qmth.cqb.paper.web;
 
 
+import java.util.Map;
+
 import javax.servlet.http.HttpServletRequest;
 
 import io.swagger.annotations.ApiOperation;
 
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
@@ -33,7 +37,7 @@ import com.qmth.cqb.paper.service.ExtractConfigService;
 @Controller
 @RequestMapping("${api_cqb}/")
 public class ExtractConfigController {
-	private static final Logger logger = org.slf4j.LoggerFactory.getLogger(ExtractConfigController.class);
+	private static final Logger logger = LoggerFactory.getLogger(ExtractConfigController.class);
 	@Autowired
 	private ExtractConfigService extractConfigService;
 	
@@ -80,12 +84,15 @@ public class ExtractConfigController {
 	
 	@ApiOperation(value = "抽取试卷", notes = "抽取试卷")
     @GetMapping(value = "/extract/{exam_id}/{course_code}/{group_code}")
-    public ResponseEntity<PaperDto> extract(@PathVariable Long exam_id, 
-    										@PathVariable String course_code,
-            								@PathVariable String group_code) {
+    public ResponseEntity extract(@PathVariable Long exam_id, @PathVariable String course_code,@PathVariable String group_code) {
 		try{
-			PaperDto paperDto = extractConfigService.extract(exam_id, course_code, group_code);
-			return new ResponseEntity<PaperDto>(paperDto, HttpStatus.OK);
+			Map<String, Object> returnMap = extractConfigService.extract(exam_id, course_code, group_code);
+			if(StringUtils.isBlank(returnMap.get("errorMsg")+"")){
+				PaperDto paperDto = (PaperDto) returnMap.get("paperDto");
+				return new ResponseEntity<PaperDto>(paperDto, HttpStatus.OK);
+			}else{
+				return new ResponseEntity<String>(returnMap.get("errorMsg")+"", HttpStatus.OK);
+			}
 		}catch(Exception e){
 			logger.error("抽卷失败",e);
 			return new ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR);