Spring-batch устанавливает связь между записями ItemWriter/ItemProcessor
Я использую Spring Batch для анализа файла, который поступил от финансового учреждения в их проприетарном формате. Он в основном содержит записи для банка, его клиентов и транзакций клиентов.
- Файл содержит список записей, разделенных \n.
- Записи имеют другой тип записи. Тип записи определяется символом в определенной позиции.
Например:
Bank Record => "01237629 2782872 11 728782822 B MERIWEST 94086090 728782822 898989"
Customer record => "01882862 7827383 12 909090909 A JOHN00000 88327823 728782822 7878333"
Transaction record => "41882221 7827383 13 AXSDFSFP T CHECK000 88327823 909090909 8898999"
Только данные в " " - это то, что мы получаем в файле.
2 символа на 45-й позиции определяют тип записи. 9 символов на 48-й позиции указывают нам номер банковского номера, номер счета клиента или номер транзакции (в зависимости от типа записи). Аналогичным образом, данные в других позициях имеют предопределенное значение.
Ссылка на банк для номера счета клиента также присутствует. 728782822 - это идентификатор банка, который находится на 80-й позиции в списке клиентов. и 909090909 - это номер счета клиента, который присутствует на 80-м месте в записи транзакции.
Мне нужно обработать этот файл и сохранить его в базе данных. Но перед этим мне нужно связать все транзакции для клиента и всех клиентов для банка. В основном, заполните ниже POJO:
Bank {
bankName;
bankId;
List<Customers> customers;
}
Customer {
id;
name;
List<Transactions>;
}
Transaction {
id;
date;
value;
}
Я также должен сделать некоторые вычисления, такие как totalTransaction, выполненные клиентом, totalNumber клиентов для банка и т. Д.
Мой опыт работы с пружинными пакетами является относительно новым, и, если я правильно понимаю, процессор обрабатывает отдельную запись (или строку). Единственное место, где я получаю полный список записей, находится на Writer. Я могу написать всю бизнес-логику в Writer, но это не очень хорошо для меня, потому что тогда я не могу обработать записи в блоках, так как мне нужно сопоставить все записи.
return stepBuilderFactory.get(“myjob”)
.<recordDTO, recordDTO>chunk(chunkSize)
Где я могу сделать все взаимосвязи между банком, его клиентом и их транзакцией?