1
This commit is contained in:
@@ -274,45 +274,38 @@ public class TencentDocDelayedPushServiceImpl implements ITencentDocDelayedPushS
|
||||
try {
|
||||
log.info("开始执行批量同步...");
|
||||
|
||||
// 从 Redis 读取配置信息(用户通过前端配置页面设置)
|
||||
// 注意:使用与 TencentDocConfigController 相同的 key 前缀
|
||||
// 从 Redis 读取 fileId、sheetId(仅文档标识,无行数缓存)
|
||||
final String CONFIG_KEY_PREFIX = "tencent:doc:auto:config:";
|
||||
String fileId = redisCache.getCacheObject(CONFIG_KEY_PREFIX + "fileId");
|
||||
String sheetId = redisCache.getCacheObject(CONFIG_KEY_PREFIX + "sheetId");
|
||||
Integer startRow = redisCache.getCacheObject(CONFIG_KEY_PREFIX + "startRow");
|
||||
|
||||
if (startRow == null) {
|
||||
startRow = MIN_START_ROW_WHEN_USE_ROW_TOTAL;
|
||||
}
|
||||
|
||||
int batchStartRow = startRow;
|
||||
int batchEndRow = startRow + READ_ROWS_WHEN_USE_ROW_TOTAL - 1;
|
||||
|
||||
// 先获取 rowTotal,确保 batch 记录使用有效范围(避免 350 超出 324 行)
|
||||
try {
|
||||
String accessToken = tokenService.getValidAccessToken();
|
||||
if (accessToken != null) {
|
||||
int rowTotal = tencentDocService.getSheetRowTotal(accessToken, fileId, sheetId);
|
||||
if (rowTotal > 0) {
|
||||
if (startRow > rowTotal) {
|
||||
batchStartRow = Math.max(MIN_START_ROW_WHEN_USE_ROW_TOTAL, rowTotal - (READ_ROWS_WHEN_USE_ROW_TOTAL - 1));
|
||||
batchEndRow = Math.min(rowTotal, batchStartRow + READ_ROWS_WHEN_USE_ROW_TOTAL - 1);
|
||||
log.info("配置起始行 {} 超出表尾 rowTotal={},修正为第 {} ~ {} 行", startRow, rowTotal, batchStartRow, batchEndRow);
|
||||
} else {
|
||||
batchEndRow = Math.min(rowTotal, startRow + READ_ROWS_WHEN_USE_ROW_TOTAL - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.warn("获取 rowTotal 失败,使用配置起始行创建 batch: {}", e.getMessage());
|
||||
}
|
||||
|
||||
log.info("读取配置 - fileId: {}, sheetId: {}, 创建 batch 范围: {} ~ {}", fileId, sheetId, batchStartRow, batchEndRow);
|
||||
|
||||
if (StringUtils.isEmpty(fileId) || StringUtils.isEmpty(sheetId)) {
|
||||
log.error("腾讯文档配置不完整,无法执行批量同步。请先在前端配置页面设置文件ID和工作表ID");
|
||||
return;
|
||||
}
|
||||
|
||||
// 每次从接口获取当前行数,取最后 200 行,无任何缓存
|
||||
int batchStartRow;
|
||||
int batchEndRow;
|
||||
try {
|
||||
String accessToken = tokenService.getValidAccessToken();
|
||||
if (accessToken == null) {
|
||||
log.warn("无法获取 accessToken,跳过本次批量同步");
|
||||
return;
|
||||
}
|
||||
int rowCount = tencentDocService.getSheetRowTotal(accessToken, fileId, sheetId);
|
||||
if (rowCount <= 0) {
|
||||
log.warn("接口未返回有效行数,跳过本次批量同步");
|
||||
return;
|
||||
}
|
||||
batchStartRow = Math.max(MIN_START_ROW_WHEN_USE_ROW_TOTAL, rowCount - (READ_ROWS_WHEN_USE_ROW_TOTAL - 1));
|
||||
batchEndRow = rowCount;
|
||||
} catch (Exception e) {
|
||||
log.warn("获取表格行数失败,跳过本次批量同步: {}", e.getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
log.info("本次范围(接口 rowCount 取最后200行)- fileId: {}, sheetId: {}, {} ~ {}", fileId, sheetId, batchStartRow, batchEndRow);
|
||||
|
||||
// 创建批量推送记录(使用有效范围)
|
||||
batchId = batchPushService.createBatchPushRecord(
|
||||
|
||||
Reference in New Issue
Block a user