This commit is contained in:
2026-08-29 22:36:11 +08:00
parent 6f6d7be344
commit 95e314cef4
3 changed files with 732 additions and 1 deletions
@@ -1571,7 +1571,8 @@ public class ShopDataCrawlTaskService {
return;
}
snapshot.setShopName(firstNonBlank(payload.getShopName(), snapshot.getShopName()));
snapshot.setCountryResults(copyCountryResults(payload.getCountryResults()));
// 按国家增量合并:本次未回传的国家保留快照中的旧结果,同一国家按行去重合并
snapshot.setCountryResults(mergeCountryResults(snapshot.getCountryResults(), payload.getCountryResults()));
if (!blank(payload.getError())) {
snapshot.setError(payload.getError().trim());
}
@@ -2327,6 +2328,26 @@ public class ShopDataCrawlTaskService {
return;
}
deleteTransientResultChunks(job.getTaskId());
// Task 37:异步文件作业成功钩子——组装作业完成后显式刷新任务状态:
// 仍有未完成组装作业则保持 RUNNING,全部完成才进入终态。
// worker 在 markSuccess 后、任务锁内调用本方法,此处刷新与提交是安全的。)
if ("SUCCESS".equals(job.getStatus())) {
refreshTaskStatusAfterAssembleJob(job.getTaskId());
}
}
private void refreshTaskStatusAfterAssembleJob(Long taskId) {
FileTaskEntity task = fileTaskMapper.selectById(taskId);
if (task == null || !MODULE_TYPE.equals(task.getModuleType())) {
return;
}
List<FileResultEntity> rows = listTaskRows(taskId);
if (rows.isEmpty()) {
return;
}
updateTaskStatusFromRows(task, rows);
fileTaskMapper.updateById(task);
taskCacheService.deleteTaskCache(taskId);
}
private void deleteTransientResultChunks(Long taskId) {