Class IntegracaoBaixaCpag
Molde de br.com.intersys.systextil.batch.oper.oper_integracaoHttp:
credencial
gravada na propria linha (aqui, MTTM_142), trocada por um JWT de vida curta
que autoriza uma
rota de negocio. Duas diferencas deliberadas em relacao ao gemeo batch:
- a credencial nunca e consumida — a mesma conta aceita N notificacoes ao longo da vida (pagamento parcial, quitacao, estorno), e quem protege contra replay e a rota de negocio recalcular o estado a partir do banco, nao um segredo de uso unico;
- as duas chamadas HTTP sao sincronas (`httpClient.send()`) — ao
contrario do
`sendAsync` do gemeo, aqui a tela pode fechar e o processo morrer antes de um
CompletableFuturecompletar.
Nunca lanca. A baixa ja esta commitada quando este metodo roda; uma falha de rede ou do backend aqui nao pode derrubar a tela do usuario — todo erro vira log.
-
Method Summary
Modifier and TypeMethodDescriptionstatic voidDescarta o buffer desta thread sem notificar.static voidnotificar(br.com.intersys.systextil.connection.AppConnection conn, int nrDuplicata, String parcela, String cgcR, String cgcO, int cgc2, int tipoTitulo, Date dataBaixa, Date dataPagamento, String usuario, String origem) static voidnotificarPendentes(br.com.intersys.systextil.connection.AppConnection conn, String usuario, String origem) Drena os titulos registrados nesta thread, chamandonotificar(br.com.intersys.systextil.connection.AppConnection, int, java.lang.String, java.lang.String, java.lang.String, int, int, java.util.Date, java.util.Date, java.lang.String, java.lang.String)uma vez por titulo.static voidregistrar(int nrDuplicata, String parcela, String cgcR, String cgcO, int cgc2, int tipoTitulo, Date dataBaixa, Date dataPagamento) Acumula um titulo baixado para notificacao posterior, sem I/O.
-
Method Details
-
registrar
public static void registrar(int nrDuplicata, String parcela, String cgcR, String cgcO, int cgc2, int tipoTitulo, Date dataBaixa, Date dataPagamento) Acumula um titulo baixado para notificacao posterior, sem I/O. O mesmo titulo registrado mais de uma vez (varios cheques, duas linhas do mesmo arquivo) fica com uma unica entrada, com as datas do ultimo registro — a rota de negocio recalcula a soma a partir do banco, entao isso nao perde informacao.Ao contrario de
notificar(br.com.intersys.systextil.connection.AppConnection, int, java.lang.String, java.lang.String, java.lang.String, int, int, java.util.Date, java.util.Date, java.lang.String, java.lang.String), este metodo nao garante "nunca lanca": a avaliacao dos argumentos e do chamador, antes desta chamada — umNullable*do NXJ desembrulhado em branco (ex.:data_baixa .getDate()) estouraNXJNullValueExceptionno ponto de chamada, fora de qualquer try/catch deste metodo. -
notificarPendentes
public static void notificarPendentes(br.com.intersys.systextil.connection.AppConnection conn, String usuario, String origem) Drena os titulos registrados nesta thread, chamandonotificar(br.com.intersys.systextil.connection.AppConnection, int, java.lang.String, java.lang.String, java.lang.String, int, int, java.util.Date, java.util.Date, java.lang.String, java.lang.String)uma vez por titulo. So deve ser chamado depois do commit que torna as baixas permanentes (§4 do plano) — o recalculo do backend le o banco.usuarioem branco viraorigem: o DTO do backend exige usuario nao-vazio, e um 400 ali se perderia em silencio dentro docatchdenotificar(br.com.intersys.systextil.connection.AppConnection, int, java.lang.String, java.lang.String, java.lang.String, int, int, java.util.Date, java.util.Date, java.lang.String, java.lang.String).Nunca lanca:
notificar(br.com.intersys.systextil.connection.AppConnection, int, java.lang.String, java.lang.String, java.lang.String, int, int, java.util.Date, java.util.Date, java.lang.String, java.lang.String)ja captura toda falha de rede/backend, e o dreno em si fica numfinallypara garantir que o buffer desta thread nunca fique com resto de uma chamada anterior.Custo: HTTP sincrono por titulo — ate
TIMEOUT_CONEXAO(10s) +TIMEOUT_RESPOSTA(30s) cada, sem teto, rodando na thread da tela/batch chamador. Hoje o risco e baixo (uma MTTM_142 por lote de retorno), mas nada no desenho impede um lote maior amanha. UmHttpClientso por este dreno (nao um por titulo) — construido aqui e reusado nas N chamadas — e o mecanismo de conexao mantido vivo entre elas. -
limparPendentes
public static void limparPendentes()Descarta o buffer desta thread sem notificar. Usar na entrada do escopo (higiene contra resto de execucao anterior) e em todo rollback. -
notificar
-