You could spilt this up into two routes:
Route 1 : receive individual files and aggregate into a single file
Route 2 : receive aggregated single file and perform processing
This separates the concerns of batching/correlating the individual files and the actual processing logic for dealing with a batched input. You know that the input to route 2 will always be processed as a single unit. Any failures in route 1 related to receive/aggregation are isolated and can be dealt with separately.