weiwenhai před 6 roky
rodič
revize
e5838e7c8d

+ 11 - 0
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/ExtractConfigController.java

@@ -65,6 +65,17 @@ public class ExtractConfigController extends ControllerSupport {
             throw new StatusException("Q-050065",e.getMessage());
         }
     }
+    
+    @ApiOperation(value = "根据考试Id获取已经制定的调卷规则", notes = "根据考试Id获取已经制定的调卷规则")
+    @GetMapping(value = "/findCourseByExtractConfig/{examId}")
+    public ResponseEntity<Object> findCourseByExtractConfig(@PathVariable Long examId){
+    	User user = getAccessUser();
+    	if(user == null){
+    		throw new StatusException("Q-", "user is null");
+    	}
+    	List<String> courseCodeList = extractConfigService.findCourseByExtractConfig(examId,user.getRootOrgId().toString());
+    	return new ResponseEntity<Object>(courseCodeList,HttpStatus.OK);
+    }
 
     @ApiOperation(value = "根据考试ID和课程ID获取调卷规则", notes = "根据考试ID和课程ID获取调卷规则")
     @GetMapping(value = "/extractConfig/{examId}/{courseCode}")

+ 16 - 0
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/provider/ExtractConfigCloudServiceProvider.java

@@ -1,5 +1,6 @@
 package cn.com.qmth.examcloud.core.questions.api.provider;
 
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -17,10 +18,12 @@ import cn.com.qmth.examcloud.commons.base.exception.StatusException;
 import cn.com.qmth.examcloud.core.questions.api.ExtractConfigCloudService;
 import cn.com.qmth.examcloud.core.questions.api.request.GetBasePaperReq;
 import cn.com.qmth.examcloud.core.questions.api.request.GetPaperReq;
+import cn.com.qmth.examcloud.core.questions.api.request.GetQuestionAnswerReq;
 import cn.com.qmth.examcloud.core.questions.api.request.GetQuestionListReq;
 import cn.com.qmth.examcloud.core.questions.api.request.GetQuestionReq;
 import cn.com.qmth.examcloud.core.questions.api.response.GetBasePaperResp;
 import cn.com.qmth.examcloud.core.questions.api.response.GetPaperResp;
+import cn.com.qmth.examcloud.core.questions.api.response.GetQuestionAnswerResp;
 import cn.com.qmth.examcloud.core.questions.api.response.GetQuestionListResp;
 import cn.com.qmth.examcloud.core.questions.api.response.GetQuestionResp;
 import cn.com.qmth.examcloud.core.questions.service.ExtractConfigProviderService;
@@ -123,5 +126,18 @@ public class ExtractConfigCloudServiceProvider implements ExtractConfigCloudServ
 		resp.setMap(map);
 		return resp;
 	}
+
+	@Override  
+	@ApiOperation(value = "跟试题id查询试题答案")
+	@PostMapping("getQuestionAnswerList")
+	public GetQuestionAnswerResp getQuestionAnswer(GetQuestionAnswerReq req) {
+		if(StringUtils.isBlank(req.getQuestionId())){
+			throw new StatusException("Q-010135", "questionId is null");
+		}
+		List<String> list = extractConfigExamService.getAnswer(req.getQuestionId());
+		GetQuestionAnswerResp resp = new GetQuestionAnswerResp();
+		resp.setAnswerList(list);
+		return resp;
+	}
 	
 }

+ 9 - 0
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/ExtractConfigProviderService.java

@@ -1,7 +1,9 @@
 package cn.com.qmth.examcloud.core.questions.service;
 
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
+
 import cn.com.qmth.examcloud.question.core.paper.DefaultPaper;
 import cn.com.qmth.examcloud.question.core.question.DefaultQuestion;
 
@@ -43,4 +45,11 @@ public interface ExtractConfigProviderService {
 	 * @return
 	 */
 	public Map<String, DefaultQuestion> getDefaultQuestions(Set<String> questionIds);
+
+	/**
+	 * 根据试题id查询试题答案
+	 * @param questionId
+	 * @return
+	 */
+	public List<String> getAnswer(String questionId);
 }

+ 8 - 0
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/ExtractConfigService.java

@@ -5,6 +5,7 @@ import java.util.Map;
 
 
 
+
 import cn.com.qmth.examcloud.core.questions.base.question.PaperDto;
 
 import org.springframework.data.domain.Page;
@@ -111,4 +112,11 @@ public interface ExtractConfigService {
 	 */
 	public String getAnswerHtml(String paperId);
 	
+	/**
+	 * 根据考试Id获取已经制定的调卷规则
+	 * @param examId
+	 * @return
+	 */
+	public List<String> findCourseByExtractConfig(Long examId,String orgId);
+	
 }

+ 55 - 1
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/ExtractConfigProviderServiceImpl.java

@@ -568,7 +568,7 @@ public class ExtractConfigProviderServiceImpl implements ExtractConfigProviderSe
 	public Map<String, DefaultQuestion> getDefaultQuestions(Set<String> questionIds) {
 		Map<String, DefaultQuestion> map = new HashMap<String, DefaultQuestion>();
 		List<Question> questions = quesRepo.findByIdIn(questionIds);
-		if(questions == null && questions.size()>0){
+		if(questions != null && questions.size()>0){
 			log.error("根据试题id的集合没有查询到试题结合");
 			throw new StatusException("Q-020572","根据试题id的集合没有查询到试题结合");
 		}
@@ -578,4 +578,58 @@ public class ExtractConfigProviderServiceImpl implements ExtractConfigProviderSe
 		}
 		return map;
 	}
+
+	@Override
+	public List<String> getAnswer(String questionId) {
+		List<String> list = new ArrayList<String>();
+		Question question = quesRepo.findOne(questionId);
+		if(question.getQuestionType() == QuesStructType.NESTED_ANSWER_QUESTION){
+			List<Question> subList = question.getSubQuestions();
+			if(subList!=null && subList.size()>0){
+				String answer = "";
+				for(Question subQuestion:subList){
+					if(subQuestion.getQuestionType() == QuesStructType.SINGLE_ANSWER_QUESTION || subQuestion.getQuestionType() == QuesStructType.MULTIPLE_ANSWER_QUESTION){
+						String[] answers = getSelectQuestionAnswer(subQuestion.getQuesOptions());
+						for(int i =0;i<answers.length;i++){
+							if(i==0){
+								answer = answers[i];
+							}
+							answer = answer + "," + answers[i];
+						}
+					}else if(subQuestion.getQuestionType() == QuesStructType.BOOL_ANSWER_QUESTION){
+						if(subQuestion.getQuesAnswer().endsWith("正确")){
+							answer = "true";
+						}else {
+							answer = "false";
+						}
+					}else {
+						answer = subQuestion.getQuesAnswer();
+					}
+					list.add(answer);
+				}
+			}
+		}else {
+			String answer = "";
+			if(question.getQuestionType() == QuesStructType.SINGLE_ANSWER_QUESTION || question.getQuestionType() == QuesStructType.MULTIPLE_ANSWER_QUESTION){
+				String[] answers = getSelectQuestionAnswer(question.getQuesOptions());
+				for(int i =0;i<answers.length;i++){
+					if(i==0){
+						answer = answers[i];
+					}
+					answer = answer + "," + answers[i];
+				}
+			}else if(question.getQuestionType() == QuesStructType.BOOL_ANSWER_QUESTION){
+				if(question.getQuesAnswer().endsWith("正确")){
+					answer = "true";
+				}else {
+					answer = "false";
+				}
+			}else {
+				answer = question.getQuesAnswer();
+			}
+			list.add(answer);
+		}
+		return list;
+	}
+	
 }

+ 24 - 3
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/ExtractConfigServiceImpl.java

@@ -188,6 +188,7 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 		}
 		Course course = courseRepo.findFirstByCodeAndOrgId(extractConfig.getCourseCode(),extractConfig.getOrgId());
 		extractConfig.setCourse(course);
+		extractConfig.setCourseName(course.getName());
 		Map<String,String> newFinishedPaperIdMap = makePaperByConfig(extractConfig);
 		extractConfig.setFinishedPaperIdMap(newFinishedPaperIdMap);
     	extractConfig.setIfFinish((short)1);
@@ -332,11 +333,11 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
         for (Map.Entry<String, Paper> entry : paperMap.entrySet()) {
         	String key = entry.getKey();
         	//根据原有试卷重新组卷得到新试卷
-        	Paper newPaper = this.recombinationPaper(entry.getValue(), 
+        	/*Paper newPaper = this.recombinationPaper(entry.getValue(), 
         											 PaperType.PREVIEW,
 							        				 extractConfig.getScrambling_the_question_order(), 
-							        				 extractConfig.getScrambling_the_option_order());
-        	finishedPaperIdMap.put(key, newPaper.getId());
+							        				 extractConfig.getScrambling_the_option_order());*/
+        	finishedPaperIdMap.put(key, entry.getValue().getId());
         }
         return finishedPaperIdMap;
 	}
@@ -1105,5 +1106,25 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 		}
 		return s;
 	}
+	
+
+	@Override
+	public List<String> findCourseByExtractConfig(Long examId,String orgId) {
+		List<String> courseCodeList = new ArrayList<String>();
+		if(examId == null){
+			throw new StatusException("Q-","examId is null");
+		}
+		Query query = new Query();
+		query.addCriteria(Criteria.where("orgId").is(orgId));
+		query.addCriteria(Criteria.where("examId").is(examId));
+        List<ExtractConfig> extractConfigList = this.mongoTemplate.find(query, ExtractConfig.class);
+        if(extractConfigList != null && extractConfigList.size()>0){
+        	for(ExtractConfig extractConfig:extractConfigList){
+        		courseCodeList.add(extractConfig.getCourseCode());
+        	}
+        	return courseCodeList;
+        }
+		return courseCodeList;
+	}
 
 }