Sfoglia il codice sorgente

增加分档分组功能

ting.yin 6 anni fa
parent
commit
50086de3f1

+ 47 - 43
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/service/InspectRangeService.java

@@ -64,7 +64,6 @@ public class InspectRangeService {
         List<MarkUser> sxInspectors = markUserRepo.findByWorkIdAndSubjectAndRole(inspectRange.getWorkId(), Subject.SX, Role.INSPECTOR);
         List<MarkUser> smInspectors = markUserRepo.findByWorkIdAndSubjectAndRole(inspectRange.getWorkId(), Subject.SM, Role.INSPECTOR);
 
-
         List<InspectStudent> inspectStudents = inspectStudentRepo.findByInspectRangeId(id);
 
         List<InspectTask> inspectTasks = new ArrayList<>();
@@ -76,52 +75,57 @@ public class InspectRangeService {
 
 
             //色彩的
-            for (MarkUser inspector : scInspectors) {
-                InspectTask inspectTask = new InspectTask();
-
-                inspectTask.setMarkerId(inspector.getId());
-                inspectTask.setMarkerName(inspector.getName());
-                inspectTask.setSubject(inspector.getSubject());
-                inspectTask.setWorkId(inspectRange.getWorkId());
-                inspectTask.setInspectRangeId(id);
-                inspectTask.setPaper(scPaper);
-                inspectTask.setQuestionId(scPaper.getQuestionId());
-                inspectTask.setCreatedOn(new Date());
-
-                inspectTasks.add(inspectTask);
+            if(scPaper != null){
+            	for (MarkUser inspector : scInspectors) {
+            		InspectTask inspectTask = new InspectTask();
+            		
+            		inspectTask.setMarkerId(inspector.getId());
+            		inspectTask.setMarkerName(inspector.getName());
+            		inspectTask.setSubject(inspector.getSubject());
+            		inspectTask.setWorkId(inspectRange.getWorkId());
+            		inspectTask.setInspectRangeId(id);
+            		inspectTask.setPaper(scPaper);
+            		inspectTask.setQuestionId(scPaper.getQuestionId());
+            		inspectTask.setCreatedOn(new Date());
+            		
+            		inspectTasks.add(inspectTask);
+            	}
             }
-
-            for (MarkUser inspector : sxInspectors) {
-                InspectTask inspectTask = new InspectTask();
-
-                inspectTask.setMarkerId(inspector.getId());
-                inspectTask.setMarkerName(inspector.getName());
-                inspectTask.setSubject(inspector.getSubject());
-                inspectTask.setWorkId(inspectRange.getWorkId());
-                inspectTask.setInspectRangeId(id);
-                inspectTask.setPaper(sxPaper);
-                inspectTask.setQuestionId(sxPaper.getQuestionId());
-                inspectTask.setCreatedOn(new Date());
-
-                inspectTasks.add(inspectTask);
+            //速写
+            if(sxPaper != null){
+            	for (MarkUser inspector : sxInspectors) {
+            		InspectTask inspectTask = new InspectTask();
+            		
+            		inspectTask.setMarkerId(inspector.getId());
+            		inspectTask.setMarkerName(inspector.getName());
+            		inspectTask.setSubject(inspector.getSubject());
+            		inspectTask.setWorkId(inspectRange.getWorkId());
+            		inspectTask.setInspectRangeId(id);
+            		inspectTask.setPaper(sxPaper);
+            		inspectTask.setQuestionId(sxPaper.getQuestionId());
+            		inspectTask.setCreatedOn(new Date());
+            		
+            		inspectTasks.add(inspectTask);
+            	}
             }
-
-            for (MarkUser inspector : smInspectors) {
-                InspectTask inspectTask = new InspectTask();
-
-                inspectTask.setMarkerId(inspector.getId());
-                inspectTask.setMarkerName(inspector.getName());
-                inspectTask.setSubject(inspector.getSubject());
-                inspectTask.setWorkId(inspectRange.getWorkId());
-                inspectTask.setInspectRangeId(id);
-                inspectTask.setPaper(smPaper);
-                inspectTask.setQuestionId(smPaper.getQuestionId());
-                inspectTask.setCreatedOn(new Date());
-
-                inspectTasks.add(inspectTask);
+            //素描
+            if(smPaper != null){
+            	for (MarkUser inspector : smInspectors) {
+            		InspectTask inspectTask = new InspectTask();
+            		
+            		inspectTask.setMarkerId(inspector.getId());
+            		inspectTask.setMarkerName(inspector.getName());
+            		inspectTask.setSubject(inspector.getSubject());
+            		inspectTask.setWorkId(inspectRange.getWorkId());
+            		inspectTask.setInspectRangeId(id);
+            		inspectTask.setPaper(smPaper);
+            		inspectTask.setQuestionId(smPaper.getQuestionId());
+            		inspectTask.setCreatedOn(new Date());
+            		
+            		inspectTasks.add(inspectTask);
+            	}
             }
 
-
         }
 
         inspectTaskRepo.save(inspectTasks);

+ 6 - 4
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MakrerApi.java

@@ -12,6 +12,7 @@ import cn.com.qmth.stmms.ms.marking.assembler.QuestionStatAssembler;
 import cn.com.qmth.stmms.ms.marking.dto.LevelStatDTO;
 import cn.com.qmth.stmms.ms.marking.dto.MarkerDTO;
 import cn.com.qmth.stmms.ms.marking.dto.QuestionStatDTO;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -78,12 +79,13 @@ public class MakrerApi {
      */
     @RequestMapping(method = RequestMethod.GET)
     public List<MarkUser> list(@RequestParam Long workId,
-                               @RequestParam Subject subject,
-                               @RequestParam MarkStage markStage) {
+                               @RequestParam Subject subject) {
         List<MarkUser> markUsers = markUserRepo.findByWorkIdAndSubjectAndRole(workId, subject, Role.MARKER);
-        if (MarkStage.LEVEL == markStage) {
+        String markSubjectId = workId + "-" + subject.toString();
+        MarkSubject markSubject = markSubjectRepo.findOne(markSubjectId);
+        if (MarkStage.INIT == markSubject.getStage()) {
             markUsers = markUsers.stream().filter(m -> m.getMarkRight() == MarkRight.ALLOW_LEVELING || m.getMarkRight() == MarkRight.ALLOW_ALL).collect(Collectors.toList());
-        } else if (MarkStage.SCORE == markStage) {
+        } else if (MarkStage.LEVEL == markSubject.getStage()) {
             markUsers = markUsers.stream().filter(m -> m.getMarkRight() == MarkRight.ALLOW_SCORING || m.getMarkRight() == MarkRight.ALLOW_ALL).collect(Collectors.toList());
         }
         return markUsers;

+ 3 - 1
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/PaperApi.java

@@ -91,7 +91,8 @@ public class PaperApi {
     }
 
     @RequestMapping(value="listByQuestion",method = RequestMethod.GET)
-    public PageableDTO listByQuerion(@RequestParam String areaCode,
+    public PageableDTO listByQuerion(@RequestParam Long workId,
+    								 @RequestParam String areaCode,
                                      @RequestParam Subject subject,
                                      @RequestParam(required = false) Long startNumber,
                                      @RequestParam(required = false) Long endNumber,
@@ -99,6 +100,7 @@ public class PaperApi {
                                      Pageable pageable){
         Specification<Paper> specification = (root,query,builder) -> {
             List<Predicate> predicates = new ArrayList<>();
+            predicates.add(builder.equal(root.get("workId"),workId));
             predicates.add(builder.equal(root.get("areaCode"),areaCode));
             predicates.add(builder.equal(root.get("subject"),subject));
             if(startNumber != null && endNumber != null){

+ 11 - 0
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/AssignTaskService.java

@@ -3,6 +3,7 @@ package cn.com.qmth.stmms.ms.marking.service;
 import java.util.*;
 import java.util.stream.Collectors;
 
+import cn.com.qmth.stmms.ms.core.domain.MarkStage;
 import cn.com.qmth.stmms.ms.core.domain.MarkSubject;
 import cn.com.qmth.stmms.ms.core.domain.Paper;
 
@@ -15,6 +16,7 @@ import cn.com.qmth.stmms.ms.core.domain.task.MarkTask;
 import cn.com.qmth.stmms.ms.core.domain.user.MarkUser;
 import cn.com.qmth.stmms.ms.core.domain.user.MarkerGroup;
 import cn.com.qmth.stmms.ms.core.repository.MarkTaskRepo;
+import cn.com.qmth.stmms.ms.core.repository.MarkerGroupRepo;
 
 /**
  * 评卷任务分配
@@ -25,6 +27,8 @@ public class AssignTaskService {
 
     @Autowired
     private MarkTaskRepo markTaskRepo;
+    @Autowired
+    private MarkerGroupRepo markerGroupRepo;
 
     @Value("${sys.config.random-bundle-size}")
     private int randomBundleSize;
@@ -106,6 +110,13 @@ public class AssignTaskService {
             }
             idx++;
         }
+        //进入分档阶段后,清空当前分组,以便打分阶段前重新分组
+        if(MarkStage.LEVEL.equals(markSubject.getStage())){
+        	for (MarkerGroup markerGroup : markerGroups) {
+        		markerGroup.setMarkers(null);
+			}
+        	markerGroupRepo.delete(markerGroups);
+        }
     }
 
 }

+ 7 - 1
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/StageControlService.java

@@ -113,7 +113,13 @@ public class StageControlService {
             levels.get(i).setLevelValue(i);
         }
         levelRepo.save(levels);
-        assignTaskService.assignForAll(papers, levelMarkers, markSubject);
+        //assignTaskService.assignForAll(papers, levelMarkers, markSubject);
+        List<MarkerGroup> markerGroups = markerGroupRepo.findByWorkIdAndSubject(workId, subject);
+        if (markerGroups.size() == 0) {
+            statusMap.put(markSubject.getId(), false);
+            throw new RuntimeException("评卷员没有进行分组");
+        }
+        assignTaskService.assignForGrouping(papers, markerGroups, markSubject);
     }
 
     /**