diff --git a/modules/calculation/src/main/java/com/thing/calculation/service/impl/CalcLogServiceImpl.java b/modules/calculation/src/main/java/com/thing/calculation/service/impl/CalcLogServiceImpl.java index 13d24f3..cc0cd62 100644 --- a/modules/calculation/src/main/java/com/thing/calculation/service/impl/CalcLogServiceImpl.java +++ b/modules/calculation/src/main/java/com/thing/calculation/service/impl/CalcLogServiceImpl.java @@ -107,7 +107,20 @@ public class CalcLogServiceImpl extends BaseServiceImpl logs) { - mapper.batchSaveOrUpdate(logs); + if (CollectionUtils.isEmpty(logs)) { + return; + } + // 将 logs 分割成多个子集合,每个子集合包含 BATCH_SIZE 条数据 + List logList = new ArrayList<>(logs); + int totalSize = logList.size(); + for (int i = 0; i < totalSize; i += 1000) { + // 计算每一批的结束索引,确保不越界 + int end = Math.min(i + 1000, totalSize); + // 获取当前批次的数据 + List batch = logList.subList(i, end); + // 执行批量保存或更新 + mapper.batchSaveOrUpdate(batch); + } } /** 清理已过期的计算记录(状态为已计算,且为两天前的计算日志) */