deason há 1 ano atrás
pai
commit
df8c38433c

+ 12 - 2
src/main/java/cn/com/qmth/examcloud/tool/service/batch_import_exam_student/BatchImportExamStudentTask.java

@@ -150,7 +150,7 @@ public class BatchImportExamStudentTask implements TaskService {
         // 开始执行导入
         // 开始执行导入
         long startTime = System.currentTimeMillis();
         long startTime = System.currentTimeMillis();
         AtomicInteger successCount = new AtomicInteger(), failCount = new AtomicInteger();
         AtomicInteger successCount = new AtomicInteger(), failCount = new AtomicInteger();
-        if (total <= 1) {
+        if (total <= 1000) {
             this.singleRun(loginUser, dataList, successCount, failCount);
             this.singleRun(loginUser, dataList, successCount, failCount);
         } else {
         } else {
             final int batchSize = 20;// 分批数量
             final int batchSize = 20;// 分批数量
@@ -177,7 +177,9 @@ public class BatchImportExamStudentTask implements TaskService {
     }
     }
 
 
     private void singleRun(User loginUser, List<ExamStudentInfo> batchList, AtomicInteger successCount, AtomicInteger failCount) {
     private void singleRun(User loginUser, List<ExamStudentInfo> batchList, AtomicInteger successCount, AtomicInteger failCount) {
-        for (ExamStudentInfo examStudent : batchList) {
+        long startTime = System.currentTimeMillis();
+        for (int n = 0; n < batchList.size(); n++) {
+            ExamStudentInfo examStudent = batchList.get(n);
             try {
             try {
                 this.saveExamStudent(loginUser, examStudent);
                 this.saveExamStudent(loginUser, examStudent);
                 successCount.incrementAndGet();
                 successCount.incrementAndGet();
@@ -185,6 +187,14 @@ public class BatchImportExamStudentTask implements TaskService {
                 failCount.incrementAndGet();
                 failCount.incrementAndGet();
                 log.error("学号:{} 执行失败!{}", examStudent.getStudentCode(), e.getMessage());
                 log.error("学号:{} 执行失败!{}", examStudent.getStudentCode(), e.getMessage());
             }
             }
+
+            long cost = Math.max((System.currentTimeMillis() - startTime) / 1000L, 1);
+            int runCount = n + 1;
+            if (runCount % 20 == 0) {
+                log.info("总数:{} 成功数:{} 失败数:{} 已执行:{}条 已耗时:{}秒 平均每秒{}条 进度:{}%"
+                        , batchList.size(), successCount.get(), failCount.get(), runCount, cost
+                        , runCount / cost, runCount * 100f / batchList.size());
+            }
         }
         }
     }
     }