性能优化:N+1查询改批量、串行远程调用并发化、紫鸟索引巡检批量回写
Build Backend JAR / build (push) Has been cancelled

This commit is contained in:
2026-08-25 19:42:43 +08:00
parent 338493ecaa
commit 5f519f9cd5
14 changed files with 425 additions and 53 deletions
@@ -69,6 +69,7 @@ import java.util.Objects;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Collectors;
@Slf4j
@Service
@@ -449,15 +450,24 @@ public class PublishTaskService {
}
TaskOptions options = readTaskOptions(task);
List<Long> successfulFileIds = successfulFiles.stream()
.map(PublishFileEntity::getId)
.toList();
Map<Long, List<PublishItemEntity>> itemsByFileId = successfulFileIds.isEmpty()
? Map.of()
: publishItemMapper.selectList(
new LambdaQueryWrapper<PublishItemEntity>()
.eq(PublishItemEntity::getTaskId, task.getId())
.in(PublishItemEntity::getFileId, successfulFileIds)
.orderByAsc(PublishItemEntity::getRowIndex))
.stream()
.collect(Collectors.groupingBy(PublishItemEntity::getFileId,
LinkedHashMap::new, Collectors.toList()));
List<PublishWorkbookService.WorkbookInput> inputs = new ArrayList<>();
int rowCount = 0;
for (PublishFileEntity file : successfulFiles) {
List<PublishItemEntity> items = publishItemMapper.selectList(
new LambdaQueryWrapper<PublishItemEntity>()
.eq(PublishItemEntity::getTaskId, task.getId())
.eq(PublishItemEntity::getFileId, file.getId())
.orderByAsc(PublishItemEntity::getRowIndex));
List<PublishRowDto> rows = items.stream().map(this::toRowDto).toList();
List<PublishRowDto> rows = itemsByFileId.getOrDefault(file.getId(), List.of())
.stream().map(this::toRowDto).toList();
rowCount += rows.size();
inputs.add(new PublishWorkbookService.WorkbookInput(
file.getSourceFilename(), file.getShopName(), options.publishCountry(), rows));