Spring-batch устанавливает связь между записями ItemWriter/ItemProcessor

Я использую Spring Batch для анализа файла, который поступил от финансового учреждения в их проприетарном формате. Он в основном содержит записи для банка, его клиентов и транзакций клиентов.

  1. Файл содержит список записей, разделенных \n.
  2. Записи имеют другой тип записи. Тип записи определяется символом в определенной позиции.

Например:

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)

Где я могу сделать все взаимосвязи между банком, его клиентом и их транзакцией?

0 ответов

Другие вопросы по тегам