Explorar o código

美术阅卷11月新增需求-修复BUG

wangliang %!s(int64=5) %!d(string=hai) anos
pai
achega
1a04916e73

+ 3 - 0
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/service/DataUploadService.java

@@ -385,6 +385,9 @@ public class DataUploadService {
                     if (Objects.isNull(paper)) {
                         paper = paperRepo.findByWorkIdAndSubjectAndExamNumberAndAreaCodeAndTest(workId, subject, student.getExamNumber(), dto.getAreaCode(), TrialEnum.START_FORMAL.getId());
                     }
+                    if (paper.getIsMissing()) {
+                        throw new Exception("学生" + student.getName() + "试卷已标记为缺考");
+                    }
                     Paper paperNew = new Paper();
                     BeanUtils.copyProperties(paper, paperNew);
                     paperNew.setId(null);

+ 1 - 0
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/service/TrialService.java

@@ -167,6 +167,7 @@ public class TrialService {
                 finalPaperList.forEach(o -> {
                     markingService.levelMarkPaper(o, levelMap.get(o.getExamNumber()), true);
                     o.setTest(TrialEnum.START_FORMAL.getId());
+                    o.setActive(true);
                 });
                 paperRepo.save(finalPaperList);
             }

+ 12 - 0
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/MarkTaskRepo.java

@@ -108,6 +108,18 @@ public interface MarkTaskRepo extends JpaRepository<MarkTask, Long>, JpaSpecific
             "t.`marker_id` = ? and t.stage = ? and p.is_missing = false and p.is_test = ?  GROUP BY t.`question_id` ORDER BY q.`id`", nativeQuery = true)
     List<Object[]> countGroupByQuestion(Long markerId, Integer stageId, int test);
 
+    /**
+     * 统计评卷员各试题已评数及总数(分档阶段)
+     *
+     * @param markerId
+     * @return
+     */
+    @Query(value = "SELECT q.`id`,q.`name`,SUM(IF(t.`result` IS NULL,1,0)),COUNT(t.question_id), q.area_code \n" +
+            "FROM mark_task t LEFT OUTER JOIN exam_question q ON t.`question_id` = q.`id` LEFT  JOIN paper p ON t.paper_id = p.id WHERE " +
+            "t.`marker_id` = ? and t.stage = ? and p.is_missing = false GROUP BY t.`question_id` ORDER BY q.`id`", nativeQuery = true)
+    List<Object[]> countGroupByQuestion(Long markerId, Integer stageId);
+
+
     /**
      * 统计评卷员指定试题的各档位数量
      *

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

@@ -31,7 +31,7 @@ public interface PaperRepo extends JpaRepository<Paper, Long>, JpaSpecificationE
 
     List<Paper> findByWorkIdAndSubjectAndIsMissingFalseAndActiveFalseAndTest(Long workId, Subject subject, int test);
 
-    List<Paper> findByWorkIdAndSubjectAndIsMissingFalseAndActiveTrueAndBatchNoNotNull(Long workId, Subject subject, Sort sort);
+    List<Paper> findByWorkIdAndSubjectAndIsMissingFalseAndActiveTrue(Long workId, Subject subject, Sort sort);
 
     List<Paper> findByWorkIdAndSubject(Long workId, Subject subject, Sort sort);
 
@@ -136,9 +136,9 @@ public interface PaperRepo extends JpaRepository<Paper, Long>, JpaSpecificationE
      * @return
      */
     @Query(value = "SELECT p.`question_id`,p.question_name,SUM(IF(p.score IS NULL,1,0)),COUNT(p.`question_id`) ,MAX(p.area_code) \n" +
-            "FROM paper p WHERE p.`work_id` = ? AND p.`subject` = ? AND p.`is_test` = ? AND p.is_missing = false " +
+            "FROM paper p WHERE p.`work_id` = ? AND p.`subject` = ? AND p.is_missing = false " +
             "GROUP BY p.`question_id` ,p.question_name ORDER BY p.`question_id`", nativeQuery = true)
-    List<Object[]> countGroupByQuestionForScore(Long workId, String string, int test);
+    List<Object[]> countGroupByQuestionForScore(Long workId, String string);
 
     /**
      * 统计科目未分档的试卷数

+ 5 - 1
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MakrerApi.java

@@ -184,7 +184,11 @@ public class MakrerApi {
         List<QuestionStatDTO> questionStatDTOs = new ArrayList<>();
         List<Object[]> qStats = null;
         MarkSubject markSubject = markSubjectRepo.findOne(marker.getWorkId() + "-" + marker.getSubject().toString());
-        qStats = markTaskRepo.countGroupByQuestion(marker.getId(), markSubject.getStage().ordinal(), markSubject.getTest());
+        if (markSubject.getStage() == MarkStage.SCORE) {
+            qStats = markTaskRepo.countGroupByQuestion(marker.getId(), markSubject.getStage().ordinal());
+        } else {
+            qStats = markTaskRepo.countGroupByQuestion(marker.getId(), markSubject.getStage().ordinal(), markSubject.getTest());
+        }
         if (qStats != null) {
             for (Object[] objects : qStats) {
                 QuestionStatDTO dto = questionStatAssembler.toDTO(objects);

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

@@ -110,7 +110,7 @@ public class MarkSubjectApi {
         if (markSubject.getStage() == MarkStage.LEVEL) {
             qStats = paperRepo.countGroupByQuestionForLevel(markSubject.getWorkId(), markSubject.getSubject().toString(), markSubject.getTest());
         } else {
-            qStats = paperRepo.countGroupByQuestionForScore(markSubject.getWorkId(), markSubject.getSubject().toString(), markSubject.getTest());
+            qStats = paperRepo.countGroupByQuestionForScore(markSubject.getWorkId(), markSubject.getSubject().toString());
         }
         for (Object[] objects : qStats) {
             QuestionStatDTO dto = questionStatAssembler.toDTO(objects);

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

@@ -180,7 +180,7 @@ public class StageControlService {
         }
         this.isPtFull(workId, markSubject);
         Sort sort = new Sort("questionId");
-        List<Paper> papers = paperRepo.findByWorkIdAndSubjectAndIsMissingFalseAndActiveTrueAndBatchNoNotNull(workId, subject, sort);
+        List<Paper> papers = paperRepo.findByWorkIdAndSubjectAndIsMissingFalseAndActiveTrue(workId, subject, sort);
         List<MarkerGroup> markerGroups = markerGroupRepo.findByWorkIdAndSubject(workId, subject);
         if (markerGroups.size() == 0) {
             statusMap.put(markSubject.getId(), false);