Class ProcessamentoTransactionalHelper

java.lang.Object
br.com.vantroba.bi.transporte.processamento.ProcessamentoTransactionalHelper

@Singleton public class ProcessamentoTransactionalHelper extends Object
Operações transacionais sobre os dados do BI por período (evita problemas de proxy com @Async).

Usa o caminho idempotente BulkUpserter (UPSERT diff-aware + DELETE seletivo) para colapsar checkpoints PowerSync conforme spec 004. O caminho legado DELETE+COPY foi removido na fase 6 da spec.

  • Constructor Details

    • ProcessamentoTransactionalHelper

      public ProcessamentoTransactionalHelper(BulkUpserter bulkUpserter)
      Cria o helper transacional.
      Parameters:
      bulkUpserter - componente de UPSERT diff-aware usado na mescla dos dados
  • Method Details

    • mesclarDadosDoPeriodo

      public MesclaResumo mesclarDadosDoPeriodo(LocalDate periodoInicio, LocalDate periodoFim, List<Faturamento> faturamentos, List<Movimento> movimentos, Consumer<String> log)
      Mescla o lote do upload em bi_faturamento e bi_movimento usando UPSERT diff-aware + DELETE seletivo (spec 004). Preserva id e xmin para linhas inalteradas — zero evento de WAL para reuploads idênticos.

      Primeira instrução: BulkUpserter.adquirirLockMescla(Consumer) (advisory lock liberado no COMMIT desta transação) — serializa mesclas concorrentes e elimina deadlock 40P01 entre arquivos processados em paralelo. O parse do Excel (fase cara) continua paralelo; só a fase de banco enfileira.

      Parameters:
      periodoInicio - data inicial do período abrangido pelo lote
      periodoFim - data final do período abrangido pelo lote
      faturamentos - registros de faturamento a mesclar
      movimentos - registros de movimento a mesclar
      log - consumidor de mensagens de progresso
      Returns:
      MesclaResumo com métricas detalhadas por tabela.