组的弹簧批处理页眉/页脚/尾部

时间:2018-09-15 14:17:20

标签: spring-batch

我必须生成一个文件,其中包含以下格式的不同商人的货币交易:

FILE_HEADER
       MERCHANT_AND_CURRENCY_HEADER
         TRANSACTION_WITH_AMOUNT_AND_SAME_CURRENCY_INDICATED_IN_HEADER
       MERCHANT_FOOTER_WITH_COUNTER_AND_TOTAL_AMOUNT_OF_TRANSACTIONS_FOR_CURRENT_CURRENCY
       MERCHANT_AND_CURRENCY_HEADER
         TRANSACTION_WITH_AMOUNT_AND_SAME_CURRENCY_INDICATED_IN_HEADER
       MERCHANT_FOOTER_WITH_COUNTER_AND_TOTAL_AMOUNT_OF_TRANSACTIONS_FOR_CURRENT_CURRENCY
       MERCHANT_AND_CURRENCY_HEADER
         TRANSACTION_WITH_AMOUNT_AND_SAME_CURRENCY_INDICATED_IN_HEADER
       MERCHANT_FOOTER_WITH_COUNTER_AND_TOTAL_AMOUNT_OF_TRANSACTIONS_FOR_CURRENT_CURRENCY
FILE_FOOTER

现在,我的解决方案是从数据库中提取商人和货币订购的所有交易,并检查每个项目是否当前交易的货币和商人与前一个相同,并且如果这些字段不同,我要附加到归档前一组的页脚和当前组的页眉。 spring-batch中是否有其他方法可以解决这种情况?我当时正在考虑开始使用嵌套作业,但是我不确定这是正确的方法。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在您看来,逻辑输出项可能是:

MERCHANT_AND_CURRENCY_HEADER
   TRANSACTION_WITH_AMOUNT_AND_SAME_CURRENCY_INDICATED_IN_HEADER
MERCHANT_FOOTER_WITH_COUNTER_AND_TOTAL_AMOUNT_OF_TRANSACTIONS_FOR_CURRENT_CURRENCY

例如,您可以做的是

  • 使用FlatFileHeaderCallbackFlatFileFooterCallback全局写入FILE_HEADERFILE_FOOTER
  • 定义一个逻辑项,以便在编写时产生前三行