Class ProcessamentoService
java.lang.Object
br.com.vantroba.bi.transporte.processamento.ProcessamentoService
Orquestra recepção de arquivos, deduplicação por checksum e agendamento do processamento assíncrono.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final recordStatus de uma entrada .xlsx do lote (id nulo quando não gerou processamento).static final recordResultado do recebimento de um lote (.zip). -
Constructor Summary
ConstructorsConstructorDescriptionProcessamentoService(ProcessamentoRepository processamentoRepository, ProcessamentoProcessador processador, ArmazenamentoArquivoService armazenamento, ZipXlsExtrator zipExtrator, ConjuntoLoteService conjuntoLoteService, LogsConfig logs) Cria o serviço de recepção e orquestração de processamentos. -
Method Summary
Modifier and TypeMethodDescriptionRecebe o arquivo, valida, deduplica por checksum e agenda processamento assíncrono.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, reusandoreceber(byte[], String, String).voidRemove o registro e tenta apagar o arquivo de log em disco (chamar só após checar ambiente dev na UI).voidVolta para PENDENTE e reenfileira o job (chamar só após checar ambiente dev na UI).
-
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 processamentoprocessador- executor assíncrono do processamentoarmazenamento- coordenador de armazenamento do binário XLS (Postgres/Garage)zipExtrator- desempacotador do .zip de loteconjuntoLoteService- ciclo de vida do lote (.zip) e resumo Telegramlogs- configuração do diretório de logs (app.logs.*)
-
-
Method Details
-
receberZip
Recebe o .zip de lote (o cliente manda só o .zip: o zip É o lote) e agenda o processamento de cada entrada, reusandoreceber(byte[], String, String). Oconjunto_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
Recebe o arquivo, valida, deduplica por checksum e agenda processamento assíncrono. Chamado por entrada doreceberZip(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.xlsxrecebidonomeArquivo- nome original do arquivoconjuntoId- id do lote (.zip) a que este arquivo pertence, ounull- Returns:
- HTTP 200 se já existia SUCESSO com o mesmo checksum; 202 se agendado.
-
removerProcessamento
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
Volta para PENDENTE e reenfileira o job (chamar só após checar ambiente dev na UI).- Parameters:
id- identificador do processamento a reprocessar
-