xiatian 1 год назад
Родитель
Сommit
b4c7d61f18

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

@@ -17,6 +17,7 @@ import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PutMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -38,6 +39,7 @@ import cn.com.qmth.examcloud.core.questions.service.ExtractConfigFileService;
 import cn.com.qmth.examcloud.core.questions.service.ExtractConfigService;
 import cn.com.qmth.examcloud.core.questions.service.bean.CouresInfo;
 import cn.com.qmth.examcloud.core.questions.service.bean.dto.ExportPaperInfoModel;
+import cn.com.qmth.examcloud.core.questions.service.bean.extract.SaveRandomPaperExtractConfigDomain;
 import cn.com.qmth.examcloud.core.questions.service.cache.ExtractConfigCache;
 import cn.com.qmth.examcloud.reports.commons.bean.AdminOperateReport;
 import cn.com.qmth.examcloud.reports.commons.util.ReportsUtil;
@@ -373,5 +375,11 @@ public class ExtractConfigController extends ControllerSupport {
 		String answerHtml = extractConfigService.getAnswerHtml(paperId);
 		return new ResponseEntity<>(answerHtml, HttpStatus.OK);
 	}
+	
+	@ApiOperation("随机抽卷调卷规则创建")
+    @PostMapping("extract_config/randompaper/save")
+	public void saveRandomPaperExtractConfig(SaveRandomPaperExtractConfigDomain req) {
+    	extractConfigService.saveExtractConfigForRandomPaper(getAccessUser().getRootOrgId(),req);
+	}
 
 }

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

@@ -10,6 +10,8 @@ import cn.com.qmth.examcloud.core.questions.dao.entity.ExamPaper;
 import cn.com.qmth.examcloud.core.questions.dao.entity.ExtractConfig;
 import cn.com.qmth.examcloud.core.questions.dao.entity.Paper;
 import cn.com.qmth.examcloud.core.questions.service.bean.CouresInfo;
+import cn.com.qmth.examcloud.core.questions.service.bean.extract.SaveRandomPaperExtractConfigDomain;
+
 import org.springframework.data.domain.Page;
 
 import java.util.List;
@@ -154,4 +156,6 @@ public interface ExtractConfigService {
 
 	String saveExtractConfigForRandomPaperByOuter(SaveRandomPaperExtractConfigReq savereq);
 
+	public void saveExtractConfigForRandomPaper(Long rootOrgId, SaveRandomPaperExtractConfigDomain req);
+
 }

+ 41 - 0
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/bean/extract/SaveRandomPaperExtractConfigDomain.java

@@ -0,0 +1,41 @@
+package cn.com.qmth.examcloud.core.questions.service.bean.extract;
+
+import io.swagger.annotations.ApiModelProperty;
+
+public class SaveRandomPaperExtractConfigDomain{
+
+	@ApiModelProperty(value = "考试编码(不传时取考试名称)", example = "xxxxxx", required = true)
+	private String examCode;
+
+	@ApiModelProperty(value = "考试名称", example = "2018年6月期末考试", required = true)
+	private String examName;
+
+	@ApiModelProperty(value = " 课程代码", example = "xxxxxx", required = true)
+	private String courseCode;
+
+	public String getExamCode() {
+		return examCode;
+	}
+
+	public void setExamCode(String examCode) {
+		this.examCode = examCode;
+	}
+
+	public String getExamName() {
+		return examName;
+	}
+
+	public void setExamName(String examName) {
+		this.examName = examName;
+	}
+
+	public String getCourseCode() {
+		return courseCode;
+	}
+
+	public void setCourseCode(String courseCode) {
+		this.courseCode = courseCode;
+	}
+
+	
+}

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

@@ -81,6 +81,7 @@ import cn.com.qmth.examcloud.core.questions.service.bean.PaperDetailDtoAssembler
 import cn.com.qmth.examcloud.core.questions.service.bean.PaperDetailUnitDtoAssembler;
 import cn.com.qmth.examcloud.core.questions.service.bean.PaperDtoAssembler;
 import cn.com.qmth.examcloud.core.questions.service.bean.SubQuestionDtoAssembler;
+import cn.com.qmth.examcloud.core.questions.service.bean.extract.SaveRandomPaperExtractConfigDomain;
 import cn.com.qmth.examcloud.core.questions.service.bean.randompaper.RandomPaperListVo;
 import cn.com.qmth.examcloud.core.questions.service.cache.ExtractConfigCache;
 import cn.com.qmth.examcloud.examwork.api.ExamCloudService;
@@ -1458,4 +1459,54 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
         ExtractConfig tempConfig = this.mongoTemplate.findOne(query, ExtractConfig.class);
         return tempConfig;
     }
+
+    @Transactional
+	@Override
+	public void saveExtractConfigForRandomPaper(Long rootOrgId, SaveRandomPaperExtractConfigDomain req) {
+    	if(rootOrgId==null) {
+    		throw new StatusException("rootOrgId不能为空");
+    	}
+    	GetExamReq examReq=new GetExamReq();
+    	examReq.setRootOrgId(rootOrgId);
+    	examReq.setName(req.getExamName());
+    	examReq.setCode(req.getExamCode());
+    	GetExamResp examRes=examCloudService.getExam(examReq);
+    	if(!CallType.RANDOM_PAPER.equals(examRes.getExamBean().getCallType())) {
+    		throw new StatusException("只能对随机抽题的考试创建调卷规则");
+    	}
+    	Course course = courseService.getCourse(rootOrgId, req.getCourseCode());
+    	GetExamCourseReq settingReq = new GetExamCourseReq();
+        settingReq.setExamId(examRes.getExamBean().getId());
+        settingReq.setCourseId(Long.valueOf(course.getId()));
+        GetExamCourseResp settingResp = examCloudService.getExamCourseSetting(settingReq);
+        if(settingResp.getBean()==null) {
+        	throw new StatusException("请先同步考生后再创建相应课程的调卷规则");
+        }
+    	List<RandomPaperListVo> rps=randomPaperService.getList(rootOrgId, Long.valueOf(course.getId()));
+    	if(CollectionUtils.isEmpty(rps)) {
+    		throw new StatusException("没有启用的随机抽题模板");
+    	}
+    	if(rps.size()>1) {
+    		throw new StatusException("存在多个启用的随机抽题模板");
+    	}
+    	ExtractConfig extractConfig=findConfig(examRes.getExamBean().getId(), req.getCourseCode());
+    	if(extractConfig!=null) {
+    		extractConfig.setRandomPaperId(rps.get(0).getId());
+    	}else {
+	    	extractConfig=new ExtractConfig();
+	    	extractConfig.setExamId(examRes.getExamBean().getId());
+	    	extractConfig.setCallType(CallType.RANDOM_PAPER);
+	    	extractConfig.setOrgId(rootOrgId.toString());
+	    	extractConfig.setExamName(examRes.getExamBean().getName());
+	    	extractConfig.setExamType(examRes.getExamBean().getExamType());
+	    	extractConfig.setCourseCode(course.getCode());
+	        extractConfig.setCourse(course);
+	        extractConfig.setCourseName(course.getName());
+			extractConfig.setRandomPaperId(rps.get(0).getId());
+			extractConfig.setPlayTime(1);
+    	}
+        extractConfigRepo.save(extractConfig);
+     // 清除缓存
+ 		extractConfigCache.remove(extractConfig.getExamId(), extractConfig.getCourseCode());
+	}
 }