Spring Batch — объединить каждый элемент блока в один список в пользовательском элементе Writer

#java #spring-boot #spring-batch

#java #spring-boot #spring-batch

Вопрос:

У меня есть пользовательский элемент записи для записи в XLSX с использованием JasperReports. Моя проблема в том, что, поскольку данные передаются элементом блока, файл просто перезаписывается последним элементом блока. Как я могу объединить каждый элемент в один список и передать список методу JasperReports? Или у вас есть какой-либо другой подход для этого.

 public class CustomerReportWriter implements ItemWriter<Customer> {

    @Autowired
    GenerateReportService generateReportService;

    @Override
    public void write(List<? extends Customer> list) throws Exception {
        // Merge List?
        generateReportService.jasperReport(list);
    }

}
  

Комментарии:

1. Поддерживает ли ваша generateReportService поддержка добавление элементов в отчет или для этого требуются все элементы сразу?

2. Привет @MahmoudBenHassine, для этого требуется все сразу. Он не может быть добавлен.

3. В этом случае модель обработки блоков, вероятно, не лучший вариант. Если все ваши элементы могут храниться в памяти, вы можете добавить их в общую коллекцию внутри writer и сгенерировать отчет из этой коллекции в StepExecutionListener#afterStep методе.