Class ProcessamentoService

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

@Singleton public class ProcessamentoService extends Object
Orquestra recepção de arquivos, deduplicação por checksum e agendamento do processamento assíncrono.
  • Constructor Details

    • ProcessamentoService

      public ProcessamentoService(ProcessamentoRepository processamentoRepository, ProcessamentoProcessador processador, ArmazenamentoArquivoService armazenamento, ZipXlsExtrator zipExtrator, ConjuntoLoteService conjuntoLoteService, LogsConfig logs)
      Cria o serviço de recepção e orquestração de processamentos.
      Parameters:
      processamentoRepository - repositório de acesso aos registros de processamento
      processador - executor assíncrono do processamento
      armazenamento - coordenador de armazenamento do binário XLS (Postgres/Garage)
      zipExtrator - desempacotador do .zip de lote
      conjuntoLoteService - ciclo de vida do lote (.zip) e resumo Telegram
      logs - configuração do diretório de logs (app.logs.*)
  • Method Details

    • receberZip

      public ProcessamentoService.LoteResultado receberZip(byte[] zipBytes)
      Recebe o .zip de lote (o cliente manda só o .zip: o zip É o lote) e agenda o processamento de cada entrada, reusando receber(byte[], String, String). O conjunto_id é gerado no servidor (zip-<sha256>, idempotente) e o total do lote é o nº de entradas .xlsx — o resumo do Telegram sai quando todas terminam. Entradas rejeitadas (tipo/magic inválido) contam para o lote fechar mesmo assim.
      Parameters:
      zipBytes - bytes do .zip enviado
      Returns:
      resumo do recebimento por entrada
    • receber

      public ProcessamentoResponse receber(byte[] arquivoBytes, String nomeArquivo, String conjuntoId)
      Recebe o arquivo, valida, deduplica por checksum e agenda processamento assíncrono. Chamado por entrada do receberZip(byte[]): o cliente não informa data/hora (o período real é extraído do conteúdo no processamento).
      Parameters:
      arquivoBytes - conteúdo binário do arquivo .xlsx recebido
      nomeArquivo - nome original do arquivo
      conjuntoId - id do lote (.zip) a que este arquivo pertence, ou null
      Returns:
      HTTP 200 se já existia SUCESSO com o mesmo checksum; 202 se agendado.
    • removerProcessamento

      public void removerProcessamento(Long id)
      Remove o registro e tenta apagar o arquivo de log em disco (chamar só após checar ambiente dev na UI).
      Parameters:
      id - identificador do processamento a remover
    • reprocessarParaPendente

      public void reprocessarParaPendente(Long id)
      Volta para PENDENTE e reenfileira o job (chamar só após checar ambiente dev na UI).
      Parameters:
      id - identificador do processamento a reprocessar