同步学生信息
This commit is contained in:
@@ -62,27 +62,27 @@ public class CphTask {
|
||||
try {
|
||||
System.out.println("开始同步学生成绩数据...");
|
||||
long startTime = System.currentTimeMillis();
|
||||
|
||||
|
||||
// 清空现有数据
|
||||
cphStuScoreMiddlesService.emptyTableDate();
|
||||
System.out.println("已清空现有数据");
|
||||
|
||||
|
||||
// 配置参数
|
||||
int pageSize = 3000;
|
||||
int threadPoolSize = 8; // 定时任务使用较少线程,避免影响其他任务
|
||||
|
||||
|
||||
// 获取总数
|
||||
int studentInfoNumber = cphStuScoreMiddlesService.serectCphStuScoreMiddleCount(null);
|
||||
int totalPages = (int) Math.ceil((double) studentInfoNumber / pageSize);
|
||||
|
||||
|
||||
System.out.println("总记录数: " + studentInfoNumber + ", 总页数: " + totalPages);
|
||||
|
||||
|
||||
// 创建线程池
|
||||
ExecutorService executor = Executors.newFixedThreadPool(threadPoolSize);
|
||||
CountDownLatch latch = new CountDownLatch(totalPages);
|
||||
AtomicInteger successCount = new AtomicInteger(0);
|
||||
AtomicInteger errorCount = new AtomicInteger(0);
|
||||
|
||||
|
||||
// 提交任务
|
||||
for (int pageNum = 1; pageNum <= totalPages; pageNum++) {
|
||||
final int currentPage = pageNum;
|
||||
@@ -90,12 +90,12 @@ public class CphTask {
|
||||
try {
|
||||
List<Map<String, Object>> cphStuScoreMiddles = cphStuScoreMiddlesService
|
||||
.serectCphStuScoreMiddlesXh(currentPage, pageSize, null);
|
||||
|
||||
|
||||
if (cphStuScoreMiddles != null && !cphStuScoreMiddles.isEmpty()) {
|
||||
cphStuScoreMiddlesService.selectCphStuScoreMiddleEmptyAndAdd(cphStuScoreMiddles);
|
||||
successCount.incrementAndGet();
|
||||
}
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
errorCount.incrementAndGet();
|
||||
System.err.println("处理第" + currentPage + "页时发生错误: " + e.getMessage());
|
||||
@@ -104,24 +104,24 @@ public class CphTask {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// 等待所有任务完成
|
||||
boolean completed = latch.await(30, TimeUnit.MINUTES);
|
||||
|
||||
|
||||
if (!completed) {
|
||||
System.err.println("同步任务未在指定时间内完成");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// 关闭线程池
|
||||
executor.shutdown();
|
||||
|
||||
|
||||
long endTime = System.currentTimeMillis();
|
||||
long duration = endTime - startTime;
|
||||
|
||||
System.out.println("学生成绩同步完成 - 总耗时: " + duration + "ms, 成功页数: " +
|
||||
|
||||
System.out.println("学生成绩同步完成 - 总耗时: " + duration + "ms, 成功页数: " +
|
||||
successCount.get() + ", 失败页数: " + errorCount.get());
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
System.err.println("同步学生成绩数据时发生严重错误: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
|
||||
Reference in New Issue
Block a user