Răsfoiți Sursa

扫描统计速度优化

wangliang 11 luni în urmă
părinte
comite
1e275dd7fc

+ 11 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/statistics/ScanCalculateResult.java

@@ -23,6 +23,17 @@ public class ScanCalculateResult implements Serializable {
     @ApiModelProperty(value = "扫描进度")
     private BigDecimal scanUploadRate;
 
+    @ApiModelProperty(value = "已扫人数")
+    private int uploadCount;
+
+    public int getUploadCount() {
+        return uploadCount;
+    }
+
+    public void setUploadCount(int uploadCount) {
+        this.uploadCount = uploadCount;
+    }
+
     public int getSheetCount() {
         return sheetCount;
     }

+ 19 - 6
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/statistics/ScanCountResult.java

@@ -61,12 +61,16 @@ public class ScanCountResult implements Serializable {
     @ExcelProperty(name = "考生数", width = 20, index = 5)
     private int studentCount;
 
+    @ApiModelProperty(value = "已扫人数")
+    @ExcelProperty(name = "已扫人数", width = 20, index = 6)
+    private int uploadCount;
+
     @ApiModelProperty(value = "已扫张数")
-    @ExcelProperty(name = "已扫张数", width = 20, index = 6)
+    @ExcelProperty(name = "已扫张数", width = 20, index = 7)
     private int sheetCount;
 
     @ApiModelProperty(value = "缺考数")
-    @ExcelProperty(name = "缺考数", width = 20, index = 7)
+    @ExcelProperty(name = "缺考数", width = 20, index = 8)
     private int absentCount;
 
     @ApiModelProperty(value = "扫描进度")
@@ -80,12 +84,21 @@ public class ScanCountResult implements Serializable {
     private String cardTypeStr;
 
     @ApiModelProperty(value = "扫描进度str")
-    @ExcelProperty(name = "扫描进度", width = 40, index = 8)
+    @ExcelProperty(name = "扫描进度", width = 40, index = 9)
     private String scanUploadRateStr;
 
-    public void updateRateAndSheetCount(ScanCalculateResult scanCalculateResult){
-        this.setScanUploadRate(scanCalculateResult.getScanUploadRate());
-        this.setSheetCount(scanCalculateResult.getSheetCount());
+    public int getUploadCount() {
+        return uploadCount;
+    }
+
+    public void setUploadCount(int uploadCount) {
+        this.uploadCount = uploadCount;
+    }
+
+    public void updateRateAndSheetCount(ScanCalculateResult scanCalculateResult) {
+        this.scanUploadRate = scanCalculateResult.getScanUploadRate();
+        this.sheetCount = scanCalculateResult.getSheetCount();
+        this.uploadCount = scanCalculateResult.getUploadCount();
     }
 
     public Long getExamId() {

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

@@ -174,7 +174,8 @@ 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);
+    public ScanCalculateResult scanCalculate(@Param("examId") Long examId, @Param("courseId") Long courseId, @Param("paperNumber") String paperNumber, @Param("studentCount") int studentCount, @Param("absentCount") int absentCount);
 }

+ 0 - 11
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskService.java

@@ -256,15 +256,4 @@ public interface ExamTaskService extends IService<ExamTask> {
      * @return
      */
     public List<ScanCountResult> scanCountListExport(Long semesterId, Long examId, Long collegeId, Long courseId, String paperNumber, CardTypeEnum cardType);
-
-    /**
-     * 统计计算
-     *
-     * @param examId
-     * @param courseId
-     * @param paperNumber
-     * @param studentCount
-     * @return
-     */
-    public ScanCalculateResult scanCalculate(Long examId, Long courseId, String paperNumber, int studentCount);
 }

+ 2 - 16
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());
+                ScanCalculateResult scanCalculateResult = this.baseMapper.scanCalculate(s.getExamId(), s.getCourseId(), s.getPaperNumber(), s.getStudentCount(), s.getAbsentCount());
                 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());
+                ScanCalculateResult scanCalculateResult = this.baseMapper.scanCalculate(s.getExamId(), s.getCourseId(), s.getPaperNumber(), s.getStudentCount(), s.getAbsentCount());
                 if (Objects.nonNull(scanCalculateResult)) {
                     s.updateRateAndSheetCount(scanCalculateResult);
                 }
@@ -2057,20 +2057,6 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         return scanCountResultList;
     }
 
-    /**
-     * 统计计算
-     *
-     * @param examId
-     * @param courseId
-     * @param paperNumber
-     * @param studentCount
-     * @return
-     */
-    @Override
-    public ScanCalculateResult scanCalculate(Long examId, Long courseId, String paperNumber, int studentCount) {
-        return null;
-    }
-
     private ExamTaskPaperData saveTikuPaperData(Long examId, Long paperId, String uuid, File zipFile) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         String zipDestPath = null;

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

@@ -1326,7 +1326,7 @@
 
     <sql id="printCountCommon">
         select t.*,
-        if(t.unGenerated = 0 and t.unPrinted = 0,'FINISH','UN_FINISH') as finishStatus from(select
+        if(t.totalExamination <![CDATA[ > ]]> 0 and t.unGenerated = 0 and t.unPrinted = 0,'FINISH','UN_FINISH') as finishStatus from(select
         t.*,
         GROUP_CONCAT(distinct ec.type) as cardType,
         (<include refid="printStatusCount" />)) as totalExamination,
@@ -1526,13 +1526,14 @@
 
     <select id="scanCalculate" resultType="com.qmth.distributed.print.business.bean.result.statistics.ScanCalculateResult">
         select
-            if(#{studentCount} > 0 ,ROUND(t.isUpload / #{studentCount} * 100, 2) ,0) as scanUploadRate,
-            ROUND(t.sheetCount / 2, 2) as sheetCount
+            if(#{studentCount} > 0 ,ROUND((t.uploadCount + #{absentCount}) / #{studentCount} * 100, 2) ,0) as scanUploadRate,
+            ROUND(t.sheetCount / 2, 2) as sheetCount,
+            t.uploadCount
         from
             (
                 select
                     sum(ms.sheet_count) as sheetCount,
-                    sum(case when ms.is_upload = 1 then 1 else 0 end) as isUpload
+                    sum(case when ms.is_upload = 1 then 1 else 0 end) as uploadCount
                 from
                     mark_student ms
                 <where>