xiatian 4 жил өмнө
parent
commit
f0cea41be6

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

@@ -0,0 +1,63 @@
+package cn.com.qmth.examcloud.core.questions.api.controller;
+
+
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+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.ModelAttribute;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import cn.com.qmth.examcloud.api.commons.security.bean.User;
+import cn.com.qmth.examcloud.core.questions.dao.entity.PaperSearchInfo;
+import cn.com.qmth.examcloud.core.questions.service.PaperService;
+import cn.com.qmth.examcloud.web.support.ControllerSupport;
+import io.swagger.annotations.ApiOperation;
+
+@RestController
+@RequestMapping("${api_cqb}/paper_storage")
+public class PaperStorageController extends ControllerSupport {
+
+    @Autowired
+    PaperService paperService;
+
+    @ApiOperation(value = "试卷仓库分页查询", notes = "试卷仓库分页查询")
+    @ResponseBody
+    @GetMapping(value = "/findPage/{curPage}/{pageSize}")
+    public ResponseEntity<Object> getGenPapers(@ModelAttribute PaperSearchInfo paperSearchInfo,
+                                               @PathVariable int curPage, @PathVariable int pageSize) {
+        User user = getAccessUser();
+        paperSearchInfo.setOrgId(user.getRootOrgId().toString());
+        return new ResponseEntity<>(paperService.getStoragePaperPage(paperSearchInfo, curPage, pageSize), HttpStatus.OK);
+    }
+    
+    @ResponseBody
+    @ApiOperation(value = "回收试卷", notes = "回收试卷")
+    @PutMapping(value = "/recovery/{paperIds}")
+    public ResponseEntity<Object> recoveryPaper(@PathVariable String paperIds) {
+    	User user = getAccessUser();
+        List<String> paperList = Stream.of(paperIds.split(",")).collect(Collectors.toList());
+        paperService.updatePapersStorage(paperList,1,user.getRootOrgId().toString());
+        return new ResponseEntity<>(HttpStatus.OK);
+
+    }
+    
+    @ResponseBody
+    @ApiOperation(value = "释放试卷", notes = "释放试卷")
+    @PutMapping(value = "/release/{paperIds}")
+    public ResponseEntity<Object> releasePaper(@PathVariable String paperIds) {
+    	User user = getAccessUser();
+        List<String> paperList = Stream.of(paperIds.split(",")).collect(Collectors.toList());
+        paperService.updatePapersStorage(paperList,0,user.getRootOrgId().toString());
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
+
+}

+ 13 - 0
examcloud-core-questions-dao/src/main/java/cn/com/qmth/examcloud/core/questions/dao/entity/Paper.java

@@ -79,6 +79,11 @@ public class Paper extends MongoBaseEntity {
     @Transient
     private Map<String,Double> quesScore;
     
+    
+    /**
+     * 是否在仓库:1-在 ,空或者0不在
+     */
+    private Integer storage;
 
     public String getName() {
         return name;
@@ -277,5 +282,13 @@ public class Paper extends MongoBaseEntity {
 		this.quesScore = quesScore;
 	}
 
+	public Integer getStorage() {
+		return storage;
+	}
+
+	public void setStorage(Integer storage) {
+		this.storage = storage;
+	}
+
 	
 }

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

@@ -313,4 +313,8 @@ public interface PaperService {
 	public List<PaperAnswerDomain> answerExport(Paper paper);
 
 	public void answerImport(Paper paper,MultipartFile dataFile);
+
+	Page<Paper> getStoragePaperPage(PaperSearchInfo paperSearchInfo, int curPage, int pageSize);
+
+	void updatePapersStorage(List<String> paperIds, int storage, String orgId);
 }

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

@@ -20,6 +20,7 @@ import java.util.Set;
 import java.util.UUID;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.io.FileUtils;
@@ -358,6 +359,41 @@ public class PaperServiceImpl implements PaperService {
         Query query = new Query();
         query.addCriteria(Criteria.where("orgId").is(paperSearchInfo.getOrgId()));
         query.addCriteria(Criteria.where("paperType").is(PaperType.GENERATE.name()));
+        query.addCriteria(Criteria.where("storage").ne(1));
+        query.addCriteria(Criteria.where("course.enable").is("true"));
+        if (StringUtils.isNotBlank(paperSearchInfo.getCourseNo())) {
+            query.addCriteria(Criteria.where("course.code").is(paperSearchInfo.getCourseNo()));
+        }
+        if (StringUtils.isNoneBlank(paperSearchInfo.getName())) {
+            String paperName = CommonUtils.escapeExprSpecialWord(paperSearchInfo.getName());
+            query.addCriteria(Criteria.where("name").regex(".*?\\.*" + paperName + ".*"));
+        }
+        if (StringUtils.isNotBlank(paperSearchInfo.getLevel())) {
+            query.addCriteria(Criteria.where("course.level").is(paperSearchInfo.getLevel()));
+        }
+        if (StringUtils.isNoneBlank(paperSearchInfo.getCreator())) {
+            String creator = CommonUtils.escapeExprSpecialWord(paperSearchInfo.getCreator());
+            query.addCriteria(Criteria.where("creator").regex(".*?\\.*" + creator + ".*"));
+        }
+        if (StringUtils.isNoneBlank(paperSearchInfo.getLastModifyName())) {
+            String lastModifyName = CommonUtils.escapeExprSpecialWord(paperSearchInfo.getLastModifyName());
+            query.addCriteria(Criteria.where("lastModifyName").regex(".*?\\.*" + lastModifyName + ".*"));
+        }
+        long count = this.mongoTemplate.count(query, Paper.class);
+        query.with(new Sort(new Order(Direction.DESC, "createTime")));
+        query.limit(pageSize);
+        query.skip((curPage - 1L) * pageSize);
+        List<Paper> paperList = this.mongoTemplate.find(query, Paper.class);
+        setPaperQuesCountAndScore(paperList);
+        return new PageImpl<Paper>(paperList, new PageRequest(curPage - 1, pageSize), count);
+    }
+    
+    @Override
+    public Page<Paper> getStoragePaperPage(PaperSearchInfo paperSearchInfo, int curPage, int pageSize) {
+        Query query = new Query();
+        query.addCriteria(Criteria.where("orgId").is(paperSearchInfo.getOrgId()));
+        query.addCriteria(Criteria.where("paperType").is(PaperType.GENERATE.name()));
+        query.addCriteria(Criteria.where("storage").is(1));
         query.addCriteria(Criteria.where("course.enable").is("true"));
         if (StringUtils.isNotBlank(paperSearchInfo.getCourseNo())) {
             query.addCriteria(Criteria.where("course.code").is(paperSearchInfo.getCourseNo()));
@@ -545,6 +581,18 @@ public class PaperServiceImpl implements PaperService {
         });
         paperRepo.saveAll(papers);
     }
+    
+    @Override
+    public void updatePapersStorage(List<String> paperIds,int storage,String orgId) {
+    	List<Paper> papers = CommonUtils.toList(paperRepo.findByIdIn(paperIds));
+    	List<Paper> papersList=papers.stream().filter(p-> orgId.equals(p.getOrgId())).collect(Collectors.toList());
+    	papersList.stream().forEach(paper -> {
+    		paper.setStorage(storage);
+        });
+    	if(papersList.size()>0) {
+    		paperRepo.saveAll(papersList);
+    	}
+    }
 
     /**
      * 批量不通过试卷