xiatian 8 月之前
父節點
當前提交
a1ddde5071

+ 3 - 0
install/mysql/init/scan_central_db.sql

@@ -127,6 +127,9 @@ CREATE TABLE IF NOT EXISTS `sc_exam_summary`
     `package_scanned_count`       int(11) NOT NULL,
     `student_answer_count`        int(11) NOT NULL,
     `upload_progress`             double  NOT NULL,
+    `ok_count`         int(11) NOT NULL,
+    `absent_count`       int(11) NOT NULL,
+    `todo_count`        int(11) NOT NULL,
     PRIMARY KEY (`id`)
 ) ENGINE = InnoDB
   DEFAULT CHARSET = utf8mb4 COLLATE=utf8mb4_bin;

+ 35 - 0
src/main/java/cn/com/qmth/scancentral/entity/ExamSummaryEntity.java

@@ -1,6 +1,8 @@
 package cn.com.qmth.scancentral.entity;
 
 import cn.com.qmth.scancentral.vo.ScanAnswerInfoVo;
+import io.swagger.annotations.ApiModelProperty;
+
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -12,6 +14,15 @@ public class ExamSummaryEntity {
     @TableId(type = IdType.INPUT)
     private Long id;
 
+    @ApiModelProperty(value = "缺考校验-正常数量")
+    private Integer okCount;
+
+    @ApiModelProperty(value = "缺考校验-缺考数量")
+    private Integer absentCount;
+
+    @ApiModelProperty(value = "缺考校验-缺考待确认数量")
+    private Integer todoCount;
+
     private Integer studentCount = 0;
 
     private Integer subjectCount = 0;
@@ -191,4 +202,28 @@ public class ExamSummaryEntity {
         this.studentAnswerCount = studentAnswerCount;
     }
 
+    public Integer getOkCount() {
+        return okCount;
+    }
+
+    public void setOkCount(Integer okCount) {
+        this.okCount = okCount;
+    }
+
+    public Integer getAbsentCount() {
+        return absentCount;
+    }
+
+    public void setAbsentCount(Integer absentCount) {
+        this.absentCount = absentCount;
+    }
+
+    public Integer getTodoCount() {
+        return todoCount;
+    }
+
+    public void setTodoCount(Integer todoCount) {
+        this.todoCount = todoCount;
+    }
+
 }

+ 4 - 9
src/main/java/cn/com/qmth/scancentral/service/impl/ExamServiceImpl.java

@@ -26,7 +26,6 @@ import cn.com.qmth.scancentral.entity.ExamSummaryEntity;
 import cn.com.qmth.scancentral.entity.SubjectEntity;
 import cn.com.qmth.scancentral.enums.CheckStatus;
 import cn.com.qmth.scancentral.enums.ExamMode;
-import cn.com.qmth.scancentral.enums.ExamStatus;
 import cn.com.qmth.scancentral.enums.OP;
 import cn.com.qmth.scancentral.enums.Role;
 import cn.com.qmth.scancentral.enums.TaskStatus;
@@ -185,7 +184,7 @@ public class ExamServiceImpl extends ServiceImpl<ExamDao, ExamEntity> implements
         vo.setName(exam.getName());
 
         ExamSummaryEntity summary = examSummaryService.find(examId);
-        vo.getBasic().setStudentCount(summary.getStudentCount());
+        vo.getBasic().setStudentCount(studentService.getCountByExam(examId));
         vo.getBasic().setSubjectCount(summary.getSubjectCount());
         vo.getBasic().setCardCount(answerCardService.getCountByExam(examId));
 
@@ -239,13 +238,9 @@ public class ExamServiceImpl extends ServiceImpl<ExamDao, ExamEntity> implements
         vo.getOmr().setCustomizeTodoCount(customizeTodoCount);
         vo.getOmr().setCustomizeFinishRate(customizeFinishRate);
 
-        int absentCount = studentService.countByExamIdAndExamStatus(examId, ExamStatus.ABSENT);
-        int okCount = studentService.countByExamIdAndExamStatus(examId, ExamStatus.OK);
-        int todoCount = studentService.countByExamIdAndExamStatus(examId, ExamStatus.UNCHECK1, ExamStatus.UNCHECK2,
-                ExamStatus.UNCHECK3);
-        vo.getAbsentCheck().setAbsentCount(absentCount);
-        vo.getAbsentCheck().setOkCount(okCount);
-        vo.getAbsentCheck().setTodoCount(todoCount);
+        vo.getAbsentCheck().setAbsentCount(summary.getAbsentCount());
+        vo.getAbsentCheck().setOkCount(summary.getOkCount());
+        vo.getAbsentCheck().setTodoCount(summary.getTodoCount());
 
         return vo;
     }

+ 10 - 19
src/main/java/cn/com/qmth/scancentral/service/impl/ExamSummaryServiceImpl.java

@@ -3,6 +3,7 @@ package cn.com.qmth.scancentral.service.impl;
 import cn.com.qmth.scancentral.dao.ExamSummaryDao;
 import cn.com.qmth.scancentral.entity.ExamEntity;
 import cn.com.qmth.scancentral.entity.ExamSummaryEntity;
+import cn.com.qmth.scancentral.enums.ExamStatus;
 import cn.com.qmth.scancentral.service.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.slf4j.Logger;
@@ -41,19 +42,7 @@ public class ExamSummaryServiceImpl extends ServiceImpl<ExamSummaryDao, ExamSumm
     @Override
     @Transactional
     public ExamSummaryEntity find(Long examId) {
-        // 独立模式下优先取定时计算结果
-        // if (SystemMode.current() == SystemMode.STANDALONE) {
-        ExamSummaryEntity es = getById(examId);
-        if (es == null) {
-            es = build(examId);
-            saveOrUpdate(es);
-        }
-        return es;
-        // }
-        // // 云阅卷模式下每次实时计算
-        // else {
-        // return build(examId);
-        // }
+        return getById(examId);
     }
 
     private ExamSummaryEntity build(Long examId) {
@@ -67,16 +56,18 @@ public class ExamSummaryServiceImpl extends ServiceImpl<ExamSummaryDao, ExamSumm
         es.setPackageScannedCount(packageResultService.getCountByExam(examId));
         es.setUploadProgress(studentService.getUploadProgress(examId));
         es.setStudentAnswerCount(studentService.getStudentAnswerCount(examId));
+        int absentCount = studentService.countByExamIdAndExamStatus(examId, ExamStatus.ABSENT);
+        int okCount = studentService.countByExamIdAndExamStatus(examId, ExamStatus.OK);
+        int todoCount = studentService.countByExamIdAndExamStatus(examId, ExamStatus.UNCHECK1, ExamStatus.UNCHECK2,
+                ExamStatus.UNCHECK3);
+        es.setAbsentCount(absentCount);
+        es.setOkCount(okCount);
+        es.setTodoCount(todoCount);
         return es;
     }
 
-    // @Scheduled(fixedDelay = 20 * 1000, initialDelay = 20 * 1000)
-    @Scheduled(cron = "0/60 * * * * ?")
+    @Scheduled(fixedDelay = 30 * 1000, initialDelay = 10 * 1000)
     public void cronRefresh() {
-        // 只有独立模式下开启定时刷新
-        // if (SystemMode.MARKINGCLOUD.equals(SystemMode.current())) {
-        // return;
-        // }
         List<ExamEntity> list = examService.listEnable();
         for (ExamEntity exam : list) {
             log.info("ExamSummaryJob running for examId={}", exam.getId());