br.com.postalis.folhapgto.steps.importarRubricas.ImportarRubricasFolhaPgtoDecider.java Source code

Java tutorial

Introduction

Here is the source code for br.com.postalis.folhapgto.steps.importarRubricas.ImportarRubricasFolhaPgtoDecider.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.postalis.folhapgto.steps.importarRubricas;

import br.com.postalis.folhapgto.entidade.PosGpxConsignacaoPopulisControle;
import br.com.postalis.folhapgto.repository.ConsignacaoPopulisRepository;
import br.com.postalis.folhapgto.repository.ControleRepository;
import java.util.Date;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.StepExecution;
import org.springframework.batch.core.job.flow.FlowExecutionStatus;
import org.springframework.batch.core.job.flow.JobExecutionDecider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 *
 * @author jonathan.salcedo
 */
@Component("importarRubricasFolhaPgtoDecider")
public class ImportarRubricasFolhaPgtoDecider implements JobExecutionDecider {
    private final Logger LOGGER = LoggerFactory.getLogger(this.getClass());

    @Autowired
    private ConsignacaoPopulisRepository consignacaoPopulisRepository;

    @Autowired
    private ControleRepository controleRepository;

    private Date dtReferencia;
    private PosGpxConsignacaoPopulisControle controle;
    private int loop = 0;
    private int qtdErro = 0;

    public FlowExecutionStatus decide(JobExecution jobExecution, StepExecution stepExecution) {

        dtReferencia = (Date) jobExecution.getJobParameters().getParameters().get("dtReferencia").getValue();
        controle = (PosGpxConsignacaoPopulisControle) jobExecution.getExecutionContext().get("controle");
        qtdErro = (Integer) jobExecution.getExecutionContext().get("qtdErro");

        LOGGER.info("Verificando se ainda existem registros a processar...");
        long qtdFaltam = consignacaoPopulisRepository
                .countByDtReferenciaAndVlVerbaGreaterThanAndCsFuncionarioCdEmpresa(dtReferencia);
        if (qtdFaltam > 0) {
            loop++;
            if (loop <= 5) {
                LOGGER.warn(
                        "Encontrou " + qtdFaltam + " registros a processar, voltando para procesar o que falta!!!");
                return new FlowExecutionStatus("LOOP");
            } else {
                LOGGER.warn("ATENO!!!ATENO!!!ATENO!!!");
                LOGGER.warn("AINDA FALTAM: " + qtdFaltam + " LANAMENTOS PARA SEREM ENVIADOS. ");
                LOGGER.warn("O SISTEMA RE-EXECUTA AUTOMTICAMENTE APENAS 5 VEZES. ");
                LOGGER.warn(
                        "CASO QUEIRA ENVIAR OS LANAMENTOS PENDENTES, EXECUTE NOVAMENTE O SISTEMA MANUALMENTE!!! ");
                return FlowExecutionStatus.COMPLETED;
            }
        } else {
            controle.setIdExportado('S');
            controleRepository.save(controle);
            if (qtdErro > 0) {
                LOGGER.warn("ATENO!!!ATENO!!!ATENO!!!");
                LOGGER.warn("ALGUMAS RUBRICAS FORAM CRITICADAS PELA ECT. FAVOR, VERIFICAR NA BASE!!! ");
            }
            return FlowExecutionStatus.COMPLETED;
        }
    }

}