Bom dia!
Eu tenho uma lista na qual eu faço um for para percorrer, dentro desse for ele seta os valores e salva no banco em duas tabelas, porém ele só salva se percorrer o for todo, ou seja, se ele fizer o for 10 vezes ele só vai salvar o objeto do primeiro for se ele fizer as 10 vezes!
Gostaria de saber se é isso mesmo, ou se tem algum outro modo de fazer!
@Timeout
public void inclusaoLoteDividaAtivaAmigavel(Timer timer){
System.out.println("=====Entrou em inclusaoLoteDividaAtivaAmigavel=====");
int ano = Calendar.getInstance().get(Calendar.YEAR);
int anoMenosSeis = ano - 6;
List<Pessoa> listaPessoas = null;
int i = 0;
int teste = 0;
int max = 5;
try {
do{
listaPessoas = pessoaFacade.buscaPessoaseDividasPInclusaoAutomaticaDivAnuidade(ano, anoMenosSeis, max);
System.out.println("###Tamanho da Lista de Dividas### " + listaPessoas.size());
System.out.println("=====Dentro do try inclusaoLoteDividaAtivaAmigavel===== " + teste);
if(listaPessoas != null & !listaPessoas.isEmpty()){
for (Pessoa pessoa : listaPessoas) {
for(FinDivida verificaDivida : pessoa.getListaDividas()){
int x = 0;
FinTermosInscricao termoInscricao = new FinTermosInscricao();
System.out.println("Pessoa ID >>> " + pessoa.getId());
System.out.println("Divida da Pessoa >>> " + pessoa.getListaDividas().get(x).toString());
x++;
// Verifica se a divida já possui termo
FinDividaTermosInscricao verificaSePossuiTermo = finDividaTermosInscricaoFacade.verificaSeDividaPossuiTermo(verificaDivida.getCodigo());
System.out.println("@@@@@@ " + verificaSePossuiTermo + " @@@@@");
//Se não tiver cadastrada, irá ser cadastrada
if(verificaSePossuiTermo == null || verificaSePossuiTermo.equals(null)){
//Seta os Valores que serão salvos no banco
termoInscricao.setPessoa(pessoa);
termoInscricao.setTipoPessoa(pessoa.getTipoPessoa());
termoInscricao.setFinNatureza(finNaturezaFacade.getById(6L));
termoInscricao.setDataInclusao(Calendar.getInstance());
termoInscricao.setFinFase(finFaseFacade.buscarFasePorCodigo(1l));
termoInscricao.setFinProcesso(null);
termoInscricao.setObservacao("INCLUSÃO DE DÍVIDA DE ANUIDADE");
termoInscricao.setAtivo(true);
termoInscricao.setNumero(geradorSequenciaOficioDAO.getSequenciaNumeroTermoInscricao("RDA"));
//Cadastra no banco
finTermosInscricaoFacade.cadastrar(termoInscricao);
System.out.println("!!!SALVOU TERMO INSCRIÇÃO!!!");
for(FinDivida divida : pessoa.getListaDividas()){
System.out.println("FinDivida, Tamanho da Lista das Dividas por Pessoa " + pessoa.getListaDividas().size());
//Busca o termo cadastrado pra cadastrar na tabela Fin_Divida_Termos_Inscricao
FinTermosInscricao termo = finTermosInscricaoFacade.buscaTermoInscricao(termoInscricao.getCodigo());
//Cria uma nova instancia e seta os dados na tabela
FinDividaTermosInscricao dividaTermoInscricao = new FinDividaTermosInscricao();
dividaTermoInscricao.setFinDivida(divida.getCodigo());
dividaTermoInscricao.setFinTermoInscricao(termo.getCodigo());
System.out.println("FK_Divida " + divida.getCodigo());
System.out.println("FK_Termo " + termo.getCodigo());
//Cadastra os dados na tabela
finDividaTermosInscricaoFacade.cadastrar(dividaTermoInscricao);
}
}else{
System.out.println("Já existe termo para essa Dívida ");
}
}
i++;
}
System.out.println("=====No for em inclusaoLoteDividaAtivaAmigavel===== " + i);
System.out.println("MAX>>> " + max);
log.info("Foram incluidos "+i+" em divida ativa");
}
}while(listaPessoas.size() > 0);
} catch (RuntimeException e) {
e.printStackTrace();
}
}