Browse Source

提交调用规则代码

chenken 8 năm trước cách đây
mục cha
commit
eb618a1136

+ 1 - 2
cqb-paper/src/main/java/com/qmth/cqb/paper/dao/ExtractConfigRepo.java

@@ -3,9 +3,8 @@ package com.qmth.cqb.paper.dao;
 import org.springframework.data.mongodb.repository.MongoRepository;
 import org.springframework.data.repository.query.QueryByExampleExecutor;
 
-import com.qmth.cqb.paper.model.ExamPaper;
 import com.qmth.cqb.paper.model.ExtractConfig;
 
-public interface ExtractConfigRepo extends MongoRepository<ExtractConfig, Long>,QueryByExampleExecutor<ExtractConfig> {
+public interface ExtractConfigRepo extends MongoRepository<ExtractConfig, String>,QueryByExampleExecutor<ExtractConfig> {
 
 }

+ 35 - 25
cqb-paper/src/main/java/com/qmth/cqb/paper/model/ExamPaper.java

@@ -3,7 +3,7 @@ package com.qmth.cqb.paper.model;
 import java.io.Serializable;
 
 import org.springframework.data.annotation.Id;
-import org.springframework.data.mongodb.core.index.Indexed;
+import org.springframework.data.mongodb.core.mapping.DBRef;
 
 public class ExamPaper implements Serializable {
 
@@ -11,23 +11,32 @@ public class ExamPaper implements Serializable {
 
     @Id
     private String id;
-
-    @Indexed(unique = true)
+    /**
+     * 考试ID
+     */
     private Long examId;
-
+    /**
+     * 课程代码
+     */
     private String courseCode;
-
+    /**
+     * 试卷类型
+     */
     private String groupCode;
-
-    private String paperId;
-
-    private Integer extractCount;// 抽取试卷次数
-
-    private Double weight;// 抽取权重比例
-
-    public static long getSerialVersionUID() {
-        return serialVersionUID;
-    }
+    /**
+     * 关联试卷
+     */
+    @DBRef
+    private Paper paper;
+    /**
+     * 抽取试卷次数
+     */
+    private Integer extractCount;
+    /**
+     * 抽取权重比例
+     * 整数类型 例如:70%  数据库里存70
+     */
+    private Integer weight;
 
     public String getId() {
         return id;
@@ -61,14 +70,6 @@ public class ExamPaper implements Serializable {
         this.groupCode = groupCode;
     }
 
-    public String getPaperId() {
-        return paperId;
-    }
-
-    public void setPaperId(String paperId) {
-        this.paperId = paperId;
-    }
-
     public Integer getExtractCount() {
         return extractCount;
     }
@@ -77,11 +78,20 @@ public class ExamPaper implements Serializable {
         this.extractCount = extractCount;
     }
 
-    public Double getWeight() {
+    public Integer getWeight() {
         return weight;
     }
 
-    public void setWeight(Double weight) {
+    public void setWeight(Integer weight) {
         this.weight = weight;
     }
+
+	public Paper getPaper() {
+		return paper;
+	}
+
+	public void setPaper(Paper paper) {
+		this.paper = paper;
+	}
+
 }

+ 153 - 14
cqb-paper/src/main/java/com/qmth/cqb/paper/model/ExtractConfig.java

@@ -1,27 +1,94 @@
 package com.qmth.cqb.paper.model;
 
 import java.io.Serializable;
+import java.util.List;
 import java.util.Map;
 
 import org.springframework.data.annotation.Id;
 
 import com.qmth.cqb.utils.enums.ExtractPolicy;
 
+/**
+ * 调卷规则
+ * @author chenken
+ *
+ */
 public class ExtractConfig implements Serializable {
 
     private static final long serialVersionUID = -5234564748332601375L;
-
+    /**
+     * 调卷规则ID
+     */
     @Id
     private String id;
-
+    /**
+     * 考试ID
+     */
     private Long examId;
-
+    /**
+     * 考试类型
+     * 		网络考试
+     * 		传统考试
+     */
+    private String examType;
+    /**
+     * 考试名称
+     */
+    private String examName;
+    /**
+     * 课程名称
+     */
+    private String courseName;
+    /**
+     * 课程代码
+     */
     private String courseCode;
-
-    private ExtractPolicy policy;// 抽卷规则
-
-    private Map params;// 类型参数
-
+    /**
+     * 调卷类型
+     * 		成套调用
+     * 		重组调用
+     */
+    private String callType;
+    /**
+     * 是否生成 1:生成 0:没生成
+     */
+    private Short ifFinish;
+    /**
+     * 抽取试卷对象集合
+     */
+    private List<ExamPaper> examPaperList;
+    /**
+     * 小题乱序
+     * 1:乱序
+     * 0:不乱序
+     */
+    private Short scrambling_the_question_order;
+    /**
+     * 选项乱序
+     * 1:乱序
+     * 0:不乱序
+     */
+    private Short scrambling_the_option_order;
+    
+    /**
+     * 抽卷规则
+     */
+    private ExtractPolicy policy;
+    /**
+     * 类型参数
+     */
+    private Map<String,Object> params;
+    /**
+     * 机构ID
+     */
+    private String orgId;
+    
+    public ExtractConfig(){}
+    
+    public ExtractConfig(String id){
+    	this.id = id;
+    }
+    
     public Long getExamId() {
         return examId;
     }
@@ -53,17 +120,89 @@ public class ExtractConfig implements Serializable {
     public void setPolicy(ExtractPolicy policy) {
         this.policy = policy;
     }
-
-    public Map getParams() {
+    
+    public String getExamType() {
+		return examType;
+	}
+
+	public void setExamType(String examType) {
+		this.examType = examType;
+	}
+
+	public String getExamName() {
+		return examName;
+	}
+
+	public void setExamName(String examName) {
+		this.examName = examName;
+	}
+
+	public String getCourseName() {
+		return courseName;
+	}
+
+	public void setCourseName(String courseName) {
+		this.courseName = courseName;
+	}
+
+	public String getCallType() {
+		return callType;
+	}
+
+	public void setCallType(String callType) {
+		this.callType = callType;
+	}
+
+	public Short getIfFinish() {
+		return ifFinish;
+	}
+
+	public void setIfFinish(Short ifFinish) {
+		if(ifFinish==null){
+			this.ifFinish = 0;
+		}else{
+			this.ifFinish = ifFinish;
+		}
+	}
+
+	public Map<String,Object> getParams() {
         return params;
     }
 
-    public void setParams(Map params) {
+    public void setParams(Map<String,Object> params) {
         this.params = params;
     }
 
-    public static long getSerialversionuid() {
-        return serialVersionUID;
-    }
+	public String getOrgId() {
+		return orgId;
+	}
+
+	public void setOrgId(String orgId) {
+		this.orgId = orgId;
+	}
+
+	public List<ExamPaper> getExamPaperList() {
+		return examPaperList;
+	}
+
+	public void setExamPaperList(List<ExamPaper> examPaperList) {
+		this.examPaperList = examPaperList;
+	}
+
+	public Short getScrambling_the_question_order() {
+		return scrambling_the_question_order;
+	}
+
+	public void setScrambling_the_question_order(Short scrambling_the_question_order) {
+		this.scrambling_the_question_order = scrambling_the_question_order;
+	}
+
+	public Short getScrambling_the_option_order() {
+		return scrambling_the_option_order;
+	}
 
+	public void setScrambling_the_option_order(Short scrambling_the_option_order) {
+		this.scrambling_the_option_order = scrambling_the_option_order;
+	}
+    
 }

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

@@ -19,6 +19,12 @@ public interface ExtractConfigService {
 	 * @return
 	 */
 	public ExtractConfig findConfig(ExtractConfig extractConfig);
+	/**
+	 * 根据ID获取调卷规则
+	 * @param id
+	 * @return
+	 */
+	public ExtractConfig findConfigById(String id);
 	/**
 	 * 保存调卷规则
 	 */

+ 11 - 5
cqb-paper/src/main/java/com/qmth/cqb/paper/service/ExtractConfigServiceImpl.java

@@ -80,6 +80,13 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 		extractConfigRepo.save(extractConfig);
 	}
 
+	@Override
+	public ExtractConfig findConfigById(String id) {
+		if(StringUtils.isBlank(id)){
+			return null;
+		}
+		return extractConfigRepo.findOne(id);
+	}
 	@Override
 	public Map<String, Object> randomPaper(String extractConfigId,Long examId, String courseCode,String groupCode) {
 		ExtractConfig extractConfig = this.findConfig(new ExtractConfig(extractConfigId));
@@ -141,16 +148,14 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 		if(examPaperList == null || examPaperList.size() == 0) {
        	 	return null;  
         }
-		double sum = 0.0;  
+		int sum = 0;  
         for (int i = 0;i<examPaperList.size();i++) {  
              sum += examPaperList.get(i).getWeight();  
         }
-        //得到权重总和
-        int boundary = Integer.valueOf(Math.rint(sum)+"");
         // 从1开始  
-        Integer rand = new Random().nextInt(boundary) + 1;  
+        Integer rand = new Random().nextInt(sum) + 1;  
         for (int i = 0;i<examPaperList.size();i++) {
-            rand -= Integer.valueOf(Math.rint(examPaperList.get(i).getWeight())+"");
+            rand -= examPaperList.get(i).getWeight();
             // 选中
             if (rand <= 0) {
                 return examPaperList.get(i);
@@ -158,4 +163,5 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
         } 
         return null;
 	}
+
 }

+ 11 - 6
cqb-paper/src/main/java/com/qmth/cqb/paper/web/ExamPaperController.java

@@ -32,7 +32,8 @@ public class ExamPaperController {
 	@Autowired
 	private ExamPaperService examPaperService;
 	
-	@ApiOperation(value = "获取卷库考试试卷,按试卷类型分组", notes = "获取卷库考试试卷,按试卷类型分组")
+	@ApiOperation(value = "根据考试ID和课程代码获取卷库考试试卷,按试卷类型分组"
+				, notes = "根据考试ID和课程代码获取卷库考试试卷,按试卷类型分组")
     @GetMapping(value = "/examPaper/listByGroupCode/{examId}/{courseCode}")
 	public ResponseEntity<Map<String, List<Paper>>> findExamPaper(@PathVariable Long examId, @PathVariable String courseCode){
 		ExamPaper condition = new ExamPaper();
@@ -45,12 +46,16 @@ public class ExamPaperController {
 		for(int i = 0;i<examPaperList.size();i++){
 			ExamPaper examPaper = examPaperList.get(i);
 			if(!examPaperMap.containsKey(examPaper.getGroupCode())){
-				List<Paper> epList = new ArrayList<Paper>();
-				epList.add(examPaper.getPaper());
-				examPaperMap.put(examPaper.getGroupCode(), epList);
+				if(examPaper.getPaper()!=null){
+					List<Paper> epList = new ArrayList<Paper>();
+					epList.add(examPaper.getPaper());
+					examPaperMap.put(examPaper.getGroupCode(), epList);
+				}
 			}else{
-				List<Paper> epList = examPaperMap.get(examPaper.getGroupCode());
-				epList.add(examPaper.getPaper());
+				if(examPaper.getPaper()!=null){
+					List<Paper> epList = examPaperMap.get(examPaper.getGroupCode());
+					epList.add(examPaper.getPaper());
+				}
 			}
 		}
 		return new ResponseEntity<Map<String, List<Paper>>>(examPaperMap, HttpStatus.OK);

+ 7 - 0
cqb-paper/src/main/java/com/qmth/cqb/paper/web/ExtractConfigController.java

@@ -42,6 +42,13 @@ public class ExtractConfigController {
 		return new ResponseEntity<ExtractConfig>(extractConfig,HttpStatus.OK);
 	}
 	
+	@ApiOperation(value = "根据ID获取调卷规则", notes = "根据ID获取调卷规则")
+    @GetMapping(value = "/extractConfig/{id}")
+	public ResponseEntity<ExtractConfig> findExtractConfigById(@PathVariable String id){
+		ExtractConfig extractConfig = extractConfigService.findConfigById(id);
+		return new ResponseEntity<ExtractConfig>(extractConfig,HttpStatus.OK);
+	} 
+	
 	@ApiOperation(value = "保存调卷规则", notes = "保存调卷规则")
     @PutMapping(value = "/extractConfig")
 	public Map<String,Object> saveExtractConfig(@RequestBody ExtractConfig extractConfig){