Jelajahi Sumber

优化扫描进度

yin 8 bulan lalu
induk
melakukan
60f13d6bae

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

@@ -40,6 +40,7 @@ CREATE TABLE IF NOT EXISTS `sc_student`
     PRIMARY KEY (`id`),
     UNIQUE KEY `exam_student_subject` (`exam_id`, `subject_code`, `exam_number`),
     KEY `exam_assigned` (`exam_id`, `assigned`, `assigned_check_count`),
+    KEY `exam_sccan_status` (`exam_id`, `subject_code`, `status`),
     KEY `exam_image_check_status` (`exam_id`, `subject_code`, `image_check_status`, `file_upload_status`)
 ) ENGINE = InnoDB
   DEFAULT CHARSET = utf8mb4 COLLATE=utf8mb4_bin;

+ 1 - 1
src/main/java/cn/com/qmth/scancentral/service/StudentService.java

@@ -193,7 +193,7 @@ public interface StudentService extends IService<StudentEntity> {
 
     List<SubjectScanProgressVo> scanProgress(Long examId, String subjectCode);
 
-    int getUnscannedCountByExam(Long examId);
+    int getUnscannedCountByExamAndSubject(Long examId, String subjectCode);
 
     PageResult<StudentPageVo> studentPage(StudentPageQuery query);
 

+ 2 - 1
src/main/java/cn/com/qmth/scancentral/service/impl/StudentServiceImpl.java

@@ -469,10 +469,11 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, StudentEntity> i
     }
 
     @Override
-    public int getUnscannedCountByExam(Long examId) {
+    public int getUnscannedCountByExamAndSubject(Long examId,String subjectCode) {
         QueryWrapper<StudentEntity> wrapper = new QueryWrapper<>();
         LambdaQueryWrapper<StudentEntity> lw = wrapper.lambda();
         lw.eq(StudentEntity::getExamId, examId);
+        lw.eq(StudentEntity::getSubjectCode, subjectCode);
         lw.ne(StudentEntity::getStatus, ScanStatus.SCANNED);
         return this.count(wrapper);
     }

+ 21 - 1
src/main/java/cn/com/qmth/scancentral/service/impl/SubjectServiceImpl.java

@@ -207,7 +207,27 @@ public class SubjectServiceImpl extends MppServiceImpl<SubjectDao, SubjectEntity
     @Override
     public ScanProgressVo scanProgress(Long examId, String subjectCode) {
         ScanProgressVo ret = new ScanProgressVo();
-        List<SubjectScanProgressVo> subjects = studentService.scanProgress(examId, subjectCode);
+//        List<SubjectScanProgressVo> subjects = studentService.scanProgress(examId, subjectCode);
+
+        List<SubjectScanProgressVo> subjects = new ArrayList<>();
+        if(StringUtils.isBlank(subjectCode)){
+            SubjectEntity subject = this.findByExamIdAndCode(examId,subjectCode);
+            SubjectScanProgressVo vo = new SubjectScanProgressVo();
+            vo.setSubjectCode(subject.getCode());
+            vo.setSubjectName(subject.getName());
+            vo.setUnexistCount(studentService.getUnscannedCountByExamAndSubject(examId,subject.getCode()));
+            vo.setStudentCount(studentService.countByExamIdAndSubjectCode(examId,subject.getCode()));
+        }else{
+            List<SubjectEntity> subjectList =this.listByExamId(examId);
+            for (SubjectEntity subject:subjectList) {
+                SubjectScanProgressVo vo = new SubjectScanProgressVo();
+                vo.setSubjectCode(subject.getCode());
+                vo.setSubjectName(subject.getName());
+                vo.setUnexistCount(studentService.getUnscannedCountByExamAndSubject(examId,subject.getCode()));
+                vo.setStudentCount(studentService.countByExamIdAndSubjectCode(examId,subject.getCode()));
+            }
+        }
+
         ret.setSubjects(subjects);
         ret.setTotal(new SubjectScanProgressVo());
         if (CollectionUtils.isNotEmpty(subjects)) {