Мне нужно создать 3 отдельных файла.
Задание My Batch должно считываться из Mongo, затем анализировать информацию и находить столбец «бизнес» (3 вида бизнеса: RETAIL, HPP, SAX), а затем создавать файл для своего бизнеса. файл должен создать либо RETAIL + formattedDate; HPP + formattedDate; SAX + formattedDate как имя файла и информация, найденная в БД внутри txt-файла. Кроме того, мне нужно установить .resource (новый FileSystemResource ("C: \ filewriter \ index.txt)) во что-то, что отправит информацию в нужное место, сейчас жесткое кодирование работает, но создает только один файл .txt.
пример:
@Bean
public FlatFileItemWriter<PaymentAudit> writer() {
LOG.debug("Mongo-writer");
FlatFileItemWriter<PaymentAudit> flatFile = new
FlatFileItemWriterBuilder<PaymentAudit>()
.name("flatFileItemWriter")
.resource(new FileSystemResource("C:\\filewriter\\index.txt))
//trying to create a path instead of hard coding it
.lineAggregator(createPaymentPortalLineAggregator())
.build();
String exportFileHeader =
"CREATE_DTTM";
StringHeaderWriter headerWriter = new
StringHeaderWriter(exportFileHeader);
flatFile.setHeaderCallback(headerWriter);
return flatFile;
}
Моя идея была бы что-то вроде, но не уверен, куда идти:
public Map<String, List<PaymentAudit>> getPaymentPortalRecords() {
List<PaymentAudit> recentlyCreated =
PaymentPortalRepository.findByCreateDttmBetween(yesterdayMidnight,
yesterdayEndOfDay);
List<PaymentAudit> retailList = new ArrayList<>();
List<PaymentAudit> saxList = new ArrayList<>();
List<PaymentAudit> hppList = new ArrayList<>();
//String exportFilePath = "C://filewriter/";??????
recentlyCreated.parallelStream().forEach(paymentAudit -> {
if (paymentAudit.getBusiness().equalsIgnoreCase(RETAIL)) {
retailList.add(paymentAudit);
} else if
(paymentAudit.getBusiness().equalsIgnoreCase(SAX)) {
saxList.add(paymentAudit);
} else if
(paymentAudit.getBusiness().equalsIgnoreCase(HPP)) {
hppList.add(paymentAudit);
}
});