Browse Source

扫描统计速度优化

wangliang 11 months ago
parent
commit
6caece250b

+ 1 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamTaskMapper.java

@@ -174,8 +174,7 @@ public interface ExamTaskMapper extends BaseMapper<ExamTask> {
      * @param courseId
      * @param paperNumber
      * @param studentCount
-     * @param absentCount
      * @return
      */
-    public ScanCalculateResult scanCalculate(@Param("examId") Long examId, @Param("courseId") Long courseId, @Param("paperNumber") String paperNumber, @Param("studentCount") int studentCount, @Param("absentCount") int absentCount);
+    public ScanCalculateResult scanCalculate(@Param("examId") Long examId, @Param("courseId") Long courseId, @Param("paperNumber") String paperNumber, @Param("studentCount") int studentCount);
 }

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -2020,7 +2020,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         IPage<ScanCountResult> scanCountResultIPage = this.baseMapper.scanCountList(iPage, schoolId, semesterId, examId, collegeId, courseId, paperNumber, Objects.nonNull(cardType) ? cardType.name() : null, dpr);
         if (Objects.nonNull(scanCountResultIPage) && !CollectionUtils.isEmpty(scanCountResultIPage.getRecords())) {
             for (ScanCountResult s : scanCountResultIPage.getRecords()) {
-                ScanCalculateResult scanCalculateResult = this.baseMapper.scanCalculate(s.getExamId(), s.getCourseId(), s.getPaperNumber(), s.getStudentCount(), s.getAbsentCount());
+                ScanCalculateResult scanCalculateResult = this.baseMapper.scanCalculate(s.getExamId(), s.getCourseId(), s.getPaperNumber(), s.getStudentCount());
                 if (Objects.nonNull(scanCalculateResult)) {
                     s.updateRateAndSheetCount(scanCalculateResult);
                 }
@@ -2048,7 +2048,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         List<ScanCountResult> scanCountResultList = this.baseMapper.scanCountListExport(schoolId, semesterId, examId, collegeId, courseId, paperNumber, Objects.nonNull(cardType) ? cardType.name() : null, dpr);
         if (!CollectionUtils.isEmpty(scanCountResultList)) {
             for (ScanCountResult s : scanCountResultList) {
-                ScanCalculateResult scanCalculateResult = this.baseMapper.scanCalculate(s.getExamId(), s.getCourseId(), s.getPaperNumber(), s.getStudentCount(), s.getAbsentCount());
+                ScanCalculateResult scanCalculateResult = this.baseMapper.scanCalculate(s.getExamId(), s.getCourseId(), s.getPaperNumber(), s.getStudentCount());
                 if (Objects.nonNull(scanCalculateResult)) {
                     s.updateRateAndSheetCount(scanCalculateResult);
                 }

+ 5 - 4
distributed-print-business/src/main/resources/mapper/ExamTaskMapper.xml

@@ -1526,14 +1526,15 @@
 
     <select id="scanCalculate" resultType="com.qmth.distributed.print.business.bean.result.statistics.ScanCalculateResult">
         select
-            if(#{studentCount} > 0 ,ROUND((t.uploadCount + #{absentCount}) / #{studentCount} * 100, 2) ,0) as scanUploadRate,
-            ROUND(t.sheetCount / 2, 2) as sheetCount,
-            t.uploadCount
+            IFNULL(if(#{studentCount} > 0 ,ROUND(t.scanCount / #{studentCount} * 100, 2) ,0),0) as scanUploadRate,
+            IFNULL(ROUND(t.sheetCount / 2, 2),0) as sheetCount,
+            IFNULL(t.uploadCount,0) as uploadCount
         from
             (
                 select
                     sum(ms.sheet_count) as sheetCount,
-                    sum(case when ms.is_upload = 1 then 1 else 0 end) as uploadCount
+                    sum(case when ms.is_upload = 1 then 1 else 0 end) as uploadCount,
+                    sum(case when ms.scan_status is not null then 1 else 0 end) as scanCount
                 from
                     mark_student ms
                 <where>