Parcourir la source

导入试卷管理页面前后台联调修改

gaoxing il y a 8 ans
Parent
commit
acfeffc333

+ 4 - 1
cqb-base/src/main/java/com/qmth/cqb/base/dao/CourseRepo.java

@@ -2,6 +2,8 @@ package com.qmth.cqb.base.dao;
 
 import com.qmth.cqb.base.model.Course;
 
+import java.util.List;
+
 import org.springframework.data.mongodb.repository.MongoRepository;
 import org.springframework.data.repository.query.QueryByExampleExecutor;
 
@@ -9,5 +11,6 @@ import org.springframework.data.repository.query.QueryByExampleExecutor;
  * Created by songyue on 16/12/26.
  */
 public interface CourseRepo extends MongoRepository<Course, String>,QueryByExampleExecutor<Course> {
-    Course findByCourseName(String loginName);
+    List<Course> findByCourseNameLike(String courseName);
+    
 }

+ 17 - 4
cqb-base/src/main/java/com/qmth/cqb/base/service/CourseService.java

@@ -1,10 +1,17 @@
 package com.qmth.cqb.base.service;
 
+import static org.springframework.data.domain.ExampleMatcher.GenericPropertyMatchers.startsWith;
+
+import java.util.List;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Example;
+import org.springframework.data.domain.ExampleMatcher;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Service;
 
@@ -65,11 +72,17 @@ public class CourseService {
 
     
     /**
-     * 根据课程名称查找课程
-     * @param typeId
+     * 根据课程名称或者课程No.查找课程
+     * @param 
      * @return
      */
-    public Course findById(String courseName){
-        return courseRepo.findByCourseName(courseName);
+    public List<Course> findCoursesByKeyword(String keyword){
+    	keyword = keyword.replace("(","").replace(")", "");		
+    	Criteria likeNo = Criteria.where("courseNo").regex(keyword);//模糊匹配相当于SQL中“%Keyword%”
+	    Criteria likeName = Criteria.where("courseName").regex(keyword);
+	    Query query = new Query(new Criteria().orOperator(likeName,likeNo));
+	    List<Course> courselist = mongoTemplate.find(query, Course.class);
+	    return courselist;
+       
     }
 }

+ 6 - 4
cqb-base/src/main/java/com/qmth/cqb/base/web/CourseController.java

@@ -1,5 +1,7 @@
 package com.qmth.cqb.base.web;
 
+import java.util.List;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Example;
 import org.springframework.data.domain.Page;
@@ -84,13 +86,13 @@ public class CourseController {
     }
     
     /**
-     * 根据课程名称获取课程信息
+     * 根据课程名称或者课程编号获取课程信息
      * @param courseName
      * @return
      */
-    @GetMapping(value = "/course/{course_name}")
-    public Course getCourseByName(@PathVariable String course_name){
-        return courseService.findById(course_name);
+    @GetMapping(value = "/course/{keyword}")
+    public List<Course> getCourseByKeyword(@PathVariable String keyword){
+        return courseService.findCoursesByKeyword(keyword);
     }
 
 }

+ 30 - 5
cqb-paper/src/main/java/com/qmth/cqb/paper/model/ImportPaperSearchCondition.java

@@ -1,6 +1,7 @@
 package com.qmth.cqb.paper.model;
 
 import java.io.Serializable;
+import java.util.Map;
 
 public class ImportPaperSearchCondition implements Serializable{
 
@@ -14,8 +15,13 @@ public class ImportPaperSearchCondition implements Serializable{
 
     private String updateTime;//更新时间
 
-    private String creatorId;//创建人id
+    private String creatorName;//录入员
+    
+    private String lastModifyName;//最后修改人名称
 
+    private String courseId;//课程ID
+        
+    
 	public String getId() {
 		return id;
 	}
@@ -48,14 +54,33 @@ public class ImportPaperSearchCondition implements Serializable{
 		this.updateTime = updateTime;
 	}
 
-	public String getCreatorId() {
-		return creatorId;
+	public String getCreatorName() {
+		return creatorName;
 	}
 
-	public void setCreatorId(String creatorId) {
-		this.creatorId = creatorId;
+	public void setCreatorName(String creatorName) {
+		this.creatorName = creatorName;
 	}
 
+	public String getLastModifyName() {
+		return lastModifyName;
+	}
+
+	public void setLastModifyName(String lastModifyName) {
+		this.lastModifyName = lastModifyName;
+	}
+
+	public String getCourseId() {
+		return courseId;
+	}
+
+	public void setCourseId(String courseId) {
+		this.courseId = courseId;
+	}
 
+	public static long getSerialversionuid() {
+		return serialVersionUID;
+	}
 
+	
 }

+ 25 - 13
cqb-paper/src/main/java/com/qmth/cqb/paper/model/Paper.java

@@ -22,18 +22,20 @@ public class Paper implements Serializable {
     
     private String title;//试卷标题
     
-    private double totalScore;//试卷总分
+    private Double totalScore;//试卷总分
     
-    private int paperDetailCount;//大题数量
+    private Integer paperDetailCount;//大题数量
     
     //private String corusecode;//课程代码
     
     //private String groupCode;//试卷类型
     
-    private String creatorId;//创建人id
+    private String creatorName;//创建人id
      
     private String createTime;//创建时间
 
+    private String lastModifyName;//最后修改人名称
+    
     private String word;//原始试卷word
 
     private String html;//原始试卷html
@@ -64,29 +66,30 @@ public class Paper implements Serializable {
 		this.title = title;
 	}
 
-	public double getTotalScore() {
+	public Double getTotalScore() {
 		return totalScore;
 	}
 
-	public void setTotalScore(double totalScore) {
+	public void setTotalScore(Double totalScore) {
 		this.totalScore = totalScore;
 	}
 	
 
-	public int getPaperDetailCount() {
+	public Integer getPaperDetailCount() {
 		return paperDetailCount;
 	}
 
-	public void setPaperDetailCount(int paperDetailCount) {
+	public void setPaperDetailCount(Integer paperDetailCount) {
 		this.paperDetailCount = paperDetailCount;
 	}
-
-	public String getCreatorId() {
-		return creatorId;
+	
+	
+	public String getCreatorName() {
+		return creatorName;
 	}
 
-	public void setCreatorId(String creatorId) {
-		this.creatorId = creatorId;
+	public void setCreatorName(String creatorName) {
+		this.creatorName = creatorName;
 	}
 
 	public String getCreateTime() {
@@ -100,7 +103,7 @@ public class Paper implements Serializable {
 //	public void setCorusecode(String corusecode) {
 //		this.corusecode = corusecode;
 //	}
-//	
+	
 //	public String getGroupCode() {
 //		return groupCode;
 //	}
@@ -141,7 +144,16 @@ public class Paper implements Serializable {
 		return serialVersionUID;
 	}
     
+	public String getLastModifyName() {
+		return lastModifyName;
+	}
+
+	public void setLastModifyName(String lastModifyName) {
+		this.lastModifyName = lastModifyName;
+	}
+	
 	public Paper() {
     }
+
     
 }

+ 9 - 9
cqb-paper/src/main/java/com/qmth/cqb/paper/model/PaperDetail.java

@@ -17,16 +17,16 @@ public class PaperDetail implements Serializable {
 	@DBRef
 	private Paper paper;//关联的试卷
 	
-	private int number;//大题序号
+	private Integer number;//大题序号
 	
 	private String name;//大题名称
 	
 	@DBRef
 	private QuestionType questionType;//大题类型
 	
-	private double score;//大题分数
+	private Double score;//大题分数
 	
-	private int unitCount;//大题下的小题数量
+	private Integer unitCount;//大题下的小题数量
 
 	public String getId() {
 		return id;
@@ -44,11 +44,11 @@ public class PaperDetail implements Serializable {
 		this.paper = paper;
 	}
 
-	public int getNumber() {
+	public Integer getNumber() {
 		return number;
 	}
 
-	public void setNumber(int number) {
+	public void setNumber(Integer number) {
 		this.number = number;
 	}
 
@@ -68,19 +68,19 @@ public class PaperDetail implements Serializable {
 		this.questionType = questionType;
 	}
 
-	public double getScore() {
+	public Double getScore() {
 		return score;
 	}
 
-	public void setScore(double score) {
+	public void setScore(Double score) {
 		this.score = score;
 	}
 
-	public int getUnitCount() {
+	public Integer getUnitCount() {
 		return unitCount;
 	}
 
-	public void setUnitCount(int unitCount) {
+	public void setUnitCount(Integer unitCount) {
 		this.unitCount = unitCount;
 	}
 

+ 6 - 6
cqb-paper/src/main/java/com/qmth/cqb/paper/model/PaperDetailUnit.java

@@ -17,9 +17,9 @@ public class PaperDetailUnit implements Serializable{
 	@DBRef
 	private Paper paper;//关联的试卷
 	
-	private int number;//小题序号
+	private Integer number;//小题序号
 	
-	private double score;//小题分数
+	private Double score;//小题分数
 	
 	@DBRef
 	private PaperDetail paperDetail;//关联的大题
@@ -46,19 +46,19 @@ public class PaperDetailUnit implements Serializable{
 		this.paper = paper;
 	}
 
-	public int getNumber() {
+	public Integer getNumber() {
 		return number;
 	}
 
-	public void setNumber(int number) {
+	public void setNumber(Integer number) {
 		this.number = number;
 	}
 
-	public double getScore() {
+	public Double getScore() {
 		return score;
 	}
 
-	public void setScore(double score) {
+	public void setScore(Double score) {
 		this.score = score;
 	}
 

+ 48 - 5
cqb-paper/src/main/java/com/qmth/cqb/paper/service/ImportPaperService.java

@@ -2,6 +2,11 @@ package com.qmth.cqb.paper.service;
 
 import static org.springframework.data.domain.ExampleMatcher.GenericPropertyMatchers.startsWith;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 import com.qmth.cqb.paper.dao.PaperRepo;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -11,6 +16,7 @@ import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.mongodb.core.MongoTemplate;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
 import com.qmth.cqb.paper.model.Paper;
 import com.qmth.cqb.paper.model.ImportPaperSearchCondition;
@@ -31,7 +37,10 @@ public class ImportPaperService {
     @Autowired
     PaperRepo paperRepo;
 
+    @Autowired
+    PaperDetailService paperDetailService;
 
+    
     /**
      * 查询所有已导入试卷
      * @param searchCondition
@@ -42,12 +51,35 @@ public class ImportPaperService {
     public PagingAndSortingResponse<Paper> findAll(ImportPaperSearchCondition searchCondition,int curPage,int pageSize){
     	Paper importPaper = new Paper();
     	BeanUtils.copyProperties(searchCondition,importPaper);
-    	ExampleMatcher matcher = ExampleMatcher.matching().withMatcher("paperName", startsWith());
-        Page<Paper> importPaperList = paperRepo.findAll(Example.of(importPaper,matcher),new PageRequest(curPage-1,pageSize));
+    	if(searchCondition.getCourseId() != null){
+        	Map<String,String> param = new HashMap<String,String>();
+        	param.put("courseId", searchCondition.getCourseId());
+        	importPaper.setParams(param);
+    	}
+        Page<Paper> importPaperList = paperRepo.findAll(Example.of(importPaper),new PageRequest(curPage-1,pageSize));
         return new PagingAndSortingResponse<Paper>(importPaperList.getNumber(),importPaperList.getSize(),
                 importPaperList.getTotalPages(),importPaperList.getTotalElements(),importPaperList.getContent());
     }
 
+    /**
+     * 查询所有已导入试卷
+     * @param searchCondition
+     * @param curPage
+     * @param pageSize
+     * @return
+     */
+    public Page<Paper> getImportPapersByCourseId(String courseId,int curPage,int pageSize){
+    	Paper importPaper = new Paper();
+    	if(!StringUtils.isEmpty(courseId)){
+        	Map<String,String> param = new HashMap<String,String>();
+        	param.put("courseId", courseId);
+        	importPaper.setParams(param);
+    	}
+        Page<Paper> importPaperList = paperRepo.findAll(Example.of(importPaper),new PageRequest(curPage-1,pageSize));
+        return importPaperList;
+    }
+
+    
     /**
      * 按ID查询导入试卷
      * @param paperId
@@ -68,12 +100,23 @@ public class ImportPaperService {
     }
 
     /**
-     * 删除导入试卷
+     * 批量删除导入试卷
      * @param paperId
      * @return
      */
-    public void deleteImportPaper(String paperId){
-    	paperRepo.delete(paperId);
+    public void deleteImportPaper(String[] paperIds){
+    	//需要同时删除paperDetail,paperdetailUnit
+    	Iterable<Paper> papers = new ArrayList<Paper>();
+        List<String> ids = new ArrayList<String>();
+    	for(int i=0;i<paperIds.length;i++){
+    		ids.add(paperIds[i]);
+    	}
+    	papers = paperRepo.findAll(ids);
+    	for(Paper paper:papers){
+    		paperDetailService.deletePaperDetailsByPaper(paper);
+    	}   
+    	paperRepo.delete(papers);
+    	
     }
     
 

+ 10 - 0
cqb-paper/src/main/java/com/qmth/cqb/paper/service/PaperDetailService.java

@@ -72,5 +72,15 @@ public class PaperDetailService {
     	List<PaperDetail> paperDetails = paperDetailRepo.findAll(Example.of(pd));
     	return paperDetails;
     }
+    
+    /**
+     * 先删掉大题下面的小题,然后再删掉大题
+     * @param paper
+     */
+     public void deletePaperDetailsByPaper(Paper paper){
+    	List<PaperDetail> details = this.getPaperDetailsByPaper(paper);
+    	unitService.deleteUnitsByPaperDetails(details);
+    	paperDetailRepo.delete(details);
+    }
 }
 

+ 13 - 0
cqb-paper/src/main/java/com/qmth/cqb/paper/service/PaperDetailUnitService.java

@@ -1,6 +1,7 @@
 package com.qmth.cqb.paper.service;
 
 
+import java.util.ArrayList;
 import java.util.List;
 
 import com.qmth.cqb.question.model.Question;
@@ -71,5 +72,17 @@ public class PaperDetailUnitService {
     	List<PaperDetailUnit> units = paperDetailUnitRepo.findAll(Example.of(pdu));
     	return units;
     }
+    
+    /**
+     * 根据大题集合删除小题
+     * @param paperDetail
+     */
+    public void deleteUnitsByPaperDetails (List<PaperDetail> paperDetail){
+    	List<PaperDetailUnit> units = new ArrayList<PaperDetailUnit>();
+    	for(PaperDetail pd:paperDetail){
+    		units.addAll(this.getUnitsByPaperDetail(pd));
+    	}
+    	paperDetailUnitRepo.delete(units);
+    }
 }
 

+ 17 - 2
cqb-paper/src/main/java/com/qmth/cqb/paper/web/ImportPaperController.java

@@ -51,11 +51,26 @@ public class ImportPaperController {
      * 获取全部导入试卷
      * @return
      */
-    @GetMapping(value = "/importPaper/all/{curPage}/{paseSize}")
+    @GetMapping(value = "/importPaper/all/{curPage}/{pageSize}")
     public PagingAndSortingResponse<Paper> getAllPaper(@ModelAttribute ImportPaperSearchCondition searchCondition, @PathVariable int curPage, @PathVariable int pageSize){
       PagingAndSortingResponse<Paper> psr = importPaperService.findAll(searchCondition, curPage, pageSize);
       return psr;
     }
+    
+    /**
+     * 获取全部导入试卷
+     * @return
+     */
+    @GetMapping(value = "/importPaper/{courseId}/{curPage}/{pageSize}")
+    public ResponseEntity getImportPapersByCourseId(
+    		                              @PathVariable String courseId,
+    		                              @PathVariable int curPage, 
+    		                              @PathVariable int pageSize
+    		                              ){
+      ResponseEntity rse = new ResponseEntity(importPaperService.getImportPapersByCourseId(courseId,curPage, pageSize),HttpStatus.OK);
+      return rse;
+    }
+
 
     /**
      * 更新导入试卷信息
@@ -88,7 +103,7 @@ public class ImportPaperController {
      * @return
      */
     @DeleteMapping(value = "/importPaper/{importPaper_id}")
-    public ResponseEntity removePaper(@PathVariable String importPaper_id){
+    public ResponseEntity removePaper(@PathVariable String[] importPaper_id){
     	importPaperService.deleteImportPaper(importPaper_id);
     	ResponseEntity res = new ResponseEntity(importPaper_id,HttpStatus.OK);
 		return res;

+ 1 - 1
cqb-starter/src/main/resources/application.properties

@@ -1,4 +1,4 @@
 spring.data.mongodb.uri=mongodb://192.168.1.99:27017/comm-ques-bank
 spring.data.mongodb.grid-fs-database=comm-ques-bank
 server.port=8888
-api_cqb=/api/cqb
+api_cqb=/api/ecs_ques