浏览代码

Merge remote-tracking branch 'origin/dev0410' into dev0410

宋悦 8 年之前
父节点
当前提交
5a79f83ff9

+ 6 - 0
cqb-paper/src/main/java/com/qmth/cqb/paper/service/ExtractConfigService.java

@@ -60,4 +60,10 @@ public interface ExtractConfigService {
 	 * @return PaperDto
 	 */
 	public Map<String, Object> extract(Long exam_id,String course_code,String group_code);
+	/**
+	 * 根据QuestionId抽取单个试题
+	 * @param id
+	 * @return
+	 */
+	public Map<String, Object> getQuestionById(String id);
 }

+ 28 - 4
cqb-paper/src/main/java/com/qmth/cqb/paper/service/ExtractConfigServiceImpl.java

@@ -24,6 +24,7 @@ import cn.com.qmth.examcloud.common.dto.question.PaperDetailDto;
 import cn.com.qmth.examcloud.common.dto.question.PaperDetailUnitDto;
 import cn.com.qmth.examcloud.common.dto.question.PaperDto;
 import cn.com.qmth.examcloud.common.dto.question.QuesOptionDto;
+import cn.com.qmth.examcloud.common.dto.question.QuestionDto;
 import cn.com.qmth.examcloud.common.dto.question.SubQuestionDto;
 import cn.com.qmth.examcloud.common.dto.question.enums.QuesStructType;
 
@@ -42,7 +43,6 @@ import com.qmth.cqb.question.model.Question;
 import com.qmth.cqb.utils.BeanCopierUtil;
 import com.qmth.cqb.utils.CommonUtils;
 import com.qmth.cqb.utils.enums.PaperType;
-import com.qmth.cqb.utils.word.DocxProcessUtil;
 
 /**
  * 
@@ -126,13 +126,13 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 	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获取调卷规则");
+		logger.info("根据examId:"+exam_id+"和courseCode:"+course_code+"获取调卷规则");
 		ExtractConfig extractConfig = this.findConfig(new ExtractConfig(exam_id,course_code));
 		if(extractConfig==null){
 			 returnMap.put("errorMsg","该考试和课程下调卷规则未制定,请先制定调卷规则");
 			 return returnMap;
 		}
-		logger.info("根据调卷规则中设置的概率获取类型的试卷");
+		logger.info("根据调卷规则中设置的概率获取类型为"+group_code+"的试卷");
 		Map<String,Paper> paperMap = this.getExamPaperByProbability(extractConfig.getExamPaperList());
 		if(paperMap.isEmpty()){
 			returnMap.put("errorMsg","该考试和课程下调卷规则中试卷不存在,请重新制定调卷规则");
@@ -147,7 +147,7 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
     	Paper newPaper = this.recombinationPaper(paper, 
 						        				 extractConfig.getScrambling_the_question_order(), 
 						        				 extractConfig.getScrambling_the_option_order());
-    	logger.info("根据新试卷得到PaperDto后返回");
+    	logger.info("根据新试卷 paperId:"+newPaper.getId()+"得到PaperDto后返回");
 		returnMap.put("paperDto", getPaperDtoByPaper(newPaper));
 		logger.info("调卷结束");
 		return returnMap;
@@ -457,4 +457,28 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 			}
 		}
 	}
+	
+	@Override
+	public Map<String, Object> getQuestionById(String id) {
+        String msg = "";
+        Map<String, Object> quesMap = new HashMap<String, Object>();
+        Question ques = quesRepo.findOne(id);
+        QuestionDto dto = BeanCopierUtil.copyProperties(ques, QuestionDto.class);
+        if (ques.getQuestionType() == QuesStructType.NESTED_ANSWER_QUESTION) {
+            List<Question> subQuesList = ques.getSubQuestions();
+            List<SubQuestionDto> subQuesDtos = BeanCopierUtil.copyPropertiesOfList(subQuesList, SubQuestionDto.class);
+            for (int m = 0; m < subQuesList.size(); m++) {
+                List<QuesOptionDto> quesOptionDtos = BeanCopierUtil
+                        .copyPropertiesOfList(subQuesList.get(m).getQuesOptions(), QuesOptionDto.class);
+                subQuesDtos.get(m).setQuesOptions(quesOptionDtos);
+                subQuesDtos.get(m).setQuesAnswer(subQuesList.get(m).getQuesAnswer());
+                subQuesDtos.get(m).setNumber(m + 1);
+                dto.setSubQuestions(subQuesDtos);
+            }
+        }
+        msg = "success";
+        quesMap.put("quesDto", dto);
+        quesMap.put("msg", msg);
+        return quesMap;
+    }
 }

+ 0 - 175
cqb-paper/src/main/java/com/qmth/cqb/paper/service/ExtractService.java

@@ -1,175 +0,0 @@
-package com.qmth.cqb.paper.service;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Example;
-import org.springframework.stereotype.Service;
-
-import com.qmth.cqb.paper.dao.ExamPaperRepo;
-import com.qmth.cqb.paper.dao.ExtractConfigRepo;
-import com.qmth.cqb.paper.dao.PaperDetailRepo;
-import com.qmth.cqb.paper.dao.PaperDetailUnitRepo;
-import com.qmth.cqb.paper.dao.PaperRepo;
-import com.qmth.cqb.paper.model.ExtractConfig;
-import com.qmth.cqb.paper.model.Paper;
-import com.qmth.cqb.paper.model.PaperDetail;
-import com.qmth.cqb.paper.model.PaperDetailUnit;
-import com.qmth.cqb.question.dao.QuesRepo;
-import com.qmth.cqb.question.model.Question;
-import com.qmth.cqb.utils.BeanCopierUtil;
-import com.qmth.cqb.utils.CommonUtils;
-import com.qmth.cqb.utils.word.DocxProcessUtil;
-
-import cn.com.qmth.examcloud.common.dto.question.PaperDetailDto;
-import cn.com.qmth.examcloud.common.dto.question.PaperDetailUnitDto;
-import cn.com.qmth.examcloud.common.dto.question.PaperDto;
-import cn.com.qmth.examcloud.common.dto.question.QuesOptionDto;
-import cn.com.qmth.examcloud.common.dto.question.QuestionDto;
-import cn.com.qmth.examcloud.common.dto.question.SubQuestionDto;
-import cn.com.qmth.examcloud.common.dto.question.enums.QuesStructType;
-
-@Service
-public class ExtractService {
-
-    @Autowired
-    ExamPaperRepo examPaperRepo;
-
-    @Autowired
-    PaperRepo paperRepo;
-
-    @Autowired
-    ExtractConfigRepo extractConfigRepo;
-
-    @Autowired
-    PaperDetailRepo paperDetailRepo;
-
-    @Autowired
-    PaperDetailUnitRepo paperDetailUnitRepo;
-
-    @Autowired
-    PaperService paperService;
-
-    @Autowired
-    QuesRepo questionRepo;
-
-    private Map<String, AtomicInteger> randomMap = new HashMap<String, AtomicInteger>();
-
-    /**
-     * 注意:单机版计数器,重启后重新归零;用于随机抽取试卷的规则
-     * 
-     * @param key
-     * @param totalCount
-     * @return
-     */
-    private int randomNumber(String key, int totalCount) {
-        AtomicInteger counter = randomMap.get(key);
-        if (counter == null) {
-            synchronized (ExtractService.class) {
-                counter = randomMap.get(key);
-                if (counter == null) {
-                    counter = new AtomicInteger();
-                    randomMap.put(key, counter);
-                }
-            }
-        }
-
-        return counter.incrementAndGet() % totalCount;
-    }
-
-    /**
-     * 随机抽一张试卷
-     * @param examId
-     * @param courseCode
-     * @param groupCode
-     * @return
-     */
-    public Map<String, Object> randomPaper(Long examId, String courseCode, String groupCode) {
-        String msg = "";
-        List<Paper> papers = paperService.listExamPapers(examId, courseCode, groupCode);
-        Map<String, Object> paperMap = new HashMap<String, Object>();
-        if (papers.size() > 0) {
-            papers.get(this.randomNumber(examId + courseCode + groupCode, papers.size()));
-
-        } else {
-            msg = "没有可用的抽取试卷,请检查";
-            paperMap.put("msg", msg);
-            return paperMap;
-        }
-        Paper paper = papers.get(0);
-        PaperDto paperDto = BeanCopierUtil.copyProperties(paper, PaperDto.class);
-        // 获取大题
-        List<PaperDetail> paperDetails = paperDetailRepo.findByPaper(paper);
-        List<PaperDetailDto> paperDetailDtos = BeanCopierUtil.copyPropertiesOfList(paperDetails, PaperDetailDto.class);
-        paperDto.setPaperDetails(paperDetailDtos);
-        // 封装小题
-        for (int i = 0; i < paperDetailDtos.size(); i++) {
-            List<PaperDetailUnit> paperDetailUnits = paperDetailUnitRepo.findByPaperDetail(paperDetails.get(i));
-            List<PaperDetailUnitDto> paperDetailUnitDtos = BeanCopierUtil.copyPropertiesOfList(paperDetailUnits,
-                    PaperDetailUnitDto.class);
-            for (int j = 0; j < paperDetailUnitDtos.size(); j++) {
-                PaperDetailUnitDto unitDto = paperDetailUnitDtos.get(j);
-                unitDto.setQuesId(paperDetailUnits.get(j).getQuestion().getId());
-                if (StringUtils.isNotEmpty(paperDetailUnits.get(j).getQuestion().getQuesAnswer())) {
-                    String answer = DocxProcessUtil
-                            .getTextInHtml(paperDetailUnits.get(j).getQuestion().getQuesAnswer());
-                    unitDto.setAnswer(answer);
-                }
-                if (unitDto.getQuestionType() == QuesStructType.NESTED_ANSWER_QUESTION) {// 假如是套题
-                    List<Question> subQuesList = paperDetailUnits.get(j).getQuestion().getSubQuestions();
-                    List<SubQuestionDto> subQuesDtos = BeanCopierUtil.copyPropertiesOfList(subQuesList,
-                            SubQuestionDto.class);
-                    for (int m = 0; m < subQuesList.size(); m++) {
-                        List<QuesOptionDto> quesOptionDtos = BeanCopierUtil
-                                .copyPropertiesOfList(subQuesList.get(m).getQuesOptions(), QuesOptionDto.class);
-                        subQuesDtos.get(m).setQuesOptions(quesOptionDtos);
-                        subQuesDtos.get(m)
-                                .setQuesAnswer(DocxProcessUtil.getTextInHtml(subQuesList.get(m).getQuesAnswer()));
-                        subQuesDtos.get(m).setNumber(m + 1);
-                    }
-                    unitDto.setSubQuestions(subQuesDtos);
-                }
-            }
-            paperDetailDtos.get(i).setPaperDetailUnits(paperDetailUnitDtos);
-            paperDetailDtos.get(i).setCnNum(CommonUtils.toCHNum(paperDetailDtos.get(i).getNumber()));
-        }
-        msg = "success";
-        paperMap.put("paperDto", paperDto);
-        paperMap.put("msg", msg);
-        return paperMap;
-    }
-
-    public ExtractConfig findConfig(long examId, String courseCode) {
-        ExtractConfig tempConfig = new ExtractConfig();
-        tempConfig.setExamId(examId);
-        tempConfig.setCourseCode(courseCode);
-        return extractConfigRepo.findOne(Example.of(tempConfig));
-    }
-
-    public Map<String, Object> getQuestionById(String id) {
-        String msg = "";
-        Map<String, Object> quesMap = new HashMap<String, Object>();
-        Question ques = questionRepo.findOne(id);
-        QuestionDto dto = BeanCopierUtil.copyProperties(ques, QuestionDto.class);
-        if (ques.getQuestionType() == QuesStructType.NESTED_ANSWER_QUESTION) {
-            List<Question> subQuesList = ques.getSubQuestions();
-            List<SubQuestionDto> subQuesDtos = BeanCopierUtil.copyPropertiesOfList(subQuesList, SubQuestionDto.class);
-            for (int m = 0; m < subQuesList.size(); m++) {
-                List<QuesOptionDto> quesOptionDtos = BeanCopierUtil
-                        .copyPropertiesOfList(subQuesList.get(m).getQuesOptions(), QuesOptionDto.class);
-                subQuesDtos.get(m).setQuesOptions(quesOptionDtos);
-                subQuesDtos.get(m).setQuesAnswer(subQuesList.get(m).getQuesAnswer());
-                subQuesDtos.get(m).setNumber(m + 1);
-                dto.setSubQuestions(subQuesDtos);
-            }
-        }
-        msg = "success";
-        quesMap.put("quesDto", dto);
-        quesMap.put("msg", msg);
-        return quesMap;
-    }
-}

+ 14 - 2
cqb-paper/src/main/java/com/qmth/cqb/paper/web/ExtractConfigController.java

@@ -1,13 +1,13 @@
 package com.qmth.cqb.paper.web;
 
 
+import java.util.HashMap;
 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;
@@ -87,7 +87,7 @@ public class ExtractConfigController {
     public ResponseEntity extract(@PathVariable Long exam_id, @PathVariable String course_code,@PathVariable String group_code) {
 		try{
 			Map<String, Object> returnMap = extractConfigService.extract(exam_id, course_code, group_code);
-			if(StringUtils.isBlank(returnMap.get("errorMsg")+"")){
+			if(returnMap.get("errorMsg")==null){
 				PaperDto paperDto = (PaperDto) returnMap.get("paperDto");
 				return new ResponseEntity<PaperDto>(paperDto, HttpStatus.OK);
 			}else{
@@ -98,4 +98,16 @@ public class ExtractConfigController {
 			return new ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR);
 		}
 	}
+	
+	@ApiOperation(value = "抽取单个试题", notes = "抽取单个试题")
+    @GetMapping(value = "/extractQues/{ques_id}")
+    public ResponseEntity extractQuestion(@PathVariable String ques_id) {
+        Map<String, Object> quesMap = new HashMap<String, Object>();
+        quesMap = extractConfigService.getQuestionById(ques_id);
+        if (quesMap.get("msg").equals("success")) {
+            return new ResponseEntity(quesMap.get("quesDto"), HttpStatus.OK);
+        } else {
+            return new ResponseEntity(quesMap.get("msg"), HttpStatus.INTERNAL_SERVER_ERROR);
+        }
+    }
 }	

+ 0 - 60
cqb-paper/src/main/java/com/qmth/cqb/paper/web/ExtractController.java

@@ -1,60 +0,0 @@
-package com.qmth.cqb.paper.web;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import cn.com.qmth.examcloud.common.uac.annotation.Uac;
-import cn.com.qmth.examcloud.common.uac.enums.RoleMeta;
-import cn.com.qmth.examcloud.common.uac.enums.UacPolicy;
-
-import com.qmth.cqb.paper.model.ExtractConfig;
-import com.qmth.cqb.paper.service.ExtractService;
-
-import io.swagger.annotations.ApiOperation;
-
-/**
- * Created by songyue on 16/12/28.
- */
-@RestController
-@RequestMapping("${api_cqb}/")
-public class ExtractController {
-
-    @Autowired
-    ExtractService extractService;
-
-    /*@ApiOperation(value = "抽取试卷", notes = "抽取试卷")
-    @GetMapping(value = "/extract/{exam_id}/{course_code}/{group_code}")
-    public ResponseEntity extract(@PathVariable String exam_id, @PathVariable String course_code,
-            @PathVariable String group_code) {
-        Map<String, Object> paperMap = new HashMap<String, Object>();
-        ExtractConfig config = extractService.findConfig(Long.parseLong(exam_id), course_code);
-        if ("RANDOM_PAPER".equals(config.getPolicy().getKey())) {
-            paperMap = extractService.randomPaper(config.getExamId(), config.getCourseCode(), group_code);
-        }
-        if (paperMap.get("msg").equals("success")) {
-            return new ResponseEntity(paperMap.get("paperDto"), HttpStatus.OK);
-        } else {
-            return new ResponseEntity(paperMap.get("msg"), HttpStatus.INTERNAL_SERVER_ERROR);
-        }
-    }*/
-
-    @ApiOperation(value = "抽取单个试题", notes = "抽取单个试题")
-    @GetMapping(value = "/extractQues/{ques_id}")
-    public ResponseEntity extractQuestion(@PathVariable String ques_id) {
-        Map<String, Object> quesMap = new HashMap<String, Object>();
-        quesMap = extractService.getQuestionById(ques_id);
-        if (quesMap.get("msg").equals("success")) {
-            return new ResponseEntity(quesMap.get("quesDto"), HttpStatus.OK);
-        } else {
-            return new ResponseEntity(quesMap.get("msg"), HttpStatus.INTERNAL_SERVER_ERROR);
-        }
-    }
-}