xiaof 4 anni fa
parent
commit
153db0c888

+ 2 - 0
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/PaperRepo.java

@@ -382,5 +382,7 @@ public interface PaperRepo extends JpaRepository<Paper, Long>, JpaSpecificationE
 
     List<Paper> findByworkIdAndSubjectAndQuestionIdAndIsMissingAndTestAndLevelIsNull(Long workId, Subject valueOf, Long questionId, boolean b, int ordinal);
 
+    long countByWorkIdAndQuestionIdAndIsMissingIsFalse(Long workId, Long questionId);
+
 //    List<Paper> findByWorkIdAndSubjectAndInspectRange(Long workId, Subject subject, Long inspectRange);
 }

+ 18 - 2
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MakrerApi.java

@@ -138,6 +138,7 @@ public class MakrerApi {
         Map<String, Level> levelMap = levels.stream().collect(Collectors.toMap(Level::getCode, l -> l));
 
         Integer levelShowAllPaper = ParamCache.paramMap.get(marker.getWorkId()).getLevelShowAllPaper();
+        Integer propDenominator = ParamCache.paramMap.get(marker.getWorkId()).getPropDenominator();
         Long batchNo = null;
         if(levelShowAllPaper == 0){
             batchNo = paperRepo.findMaxBatchNoByWorkIdAndSubject(marker.getWorkId(), marker.getSubject());
@@ -157,7 +158,14 @@ public class MakrerApi {
                     kdtotal = markTaskRepo.countByQuestionIdAndBatchNo(questionId, finalBatchNo, marker.getId());
                 }
                 //当前考区内试卷总数
-                long total = paperRepo.countByWorkIdAndQuestionId(markSubject.getWorkId(), questionId);
+                long total = 0;
+                if(propDenominator == 1){
+                    // 全部考生
+                    total = paperRepo.countByWorkIdAndQuestionId(markSubject.getWorkId(), questionId);
+                } else if (propDenominator == 2) {
+                    // 去除缺考考生
+                    total = paperRepo.countByWorkIdAndQuestionIdAndIsMissingIsFalse(markSubject.getWorkId(), questionId);
+                }
                 map.put("kdtotal", kdtotal);
                 map.put("total", total);
                 return map;
@@ -254,6 +262,7 @@ public class MakrerApi {
         List<Level> levels = levelRepo.findByWorkId(markSubject.getWorkId());
         Map<String, Level> levelMap = levels.stream().collect(Collectors.toMap(Level::getCode, l -> l));
         Integer levelShowAllPaper = ParamCache.paramMap.get(marker.getWorkId()).getLevelShowAllPaper();
+        Integer propDenominator = ParamCache.paramMap.get(marker.getWorkId()).getPropDenominator();
         Long batchNo = null;
         if(levelShowAllPaper == 0){
             batchNo = paperRepo.findMaxBatchNoByWorkIdAndSubject(marker.getWorkId(), marker.getSubject());
@@ -271,7 +280,14 @@ public class MakrerApi {
                     kdtotal = markTaskRepo.countByQuestionIdAndBatchNo(questionId, finalBatchNo, marker.getId());
                 }
                 //当前考区内试卷总数
-                long total = paperRepo.countByWorkIdAndQuestionId(markSubject.getWorkId(), questionId);
+                long total = 0;
+                if(propDenominator == 1){
+                    // 全部考生
+                    total = paperRepo.countByWorkIdAndQuestionId(markSubject.getWorkId(), questionId);
+                } else if (propDenominator == 2) {
+                    // 去除缺考考生
+                    total = paperRepo.countByWorkIdAndQuestionIdAndIsMissingIsFalse(markSubject.getWorkId(), questionId);
+                }
                 map.put("kdtotal", kdtotal);
                 map.put("total", total);
                 return map;