/* Se for Valores Aprovados, pegar valores dos indicadores do item (qtdes previstas)*/
if("A".equals(tipoValor)){
/*
* Se for valores aprovados, mostrar itens que n�o possuem revis�o.*/
ItemEstruturarevisaoIettrev ultRevProduto = getUltimaRevisaoIett(item.getItemEstruturarevisaoIettrevs());
if(ultRevProduto == null){
List indicadores = new ArrayList(item.getItemEstrtIndResulIettrs());
if(indicadores != null && indicadores.size() > 0){
Iterator itInd = indicadores.iterator();
while(itInd.hasNext()){
ItemEstrtIndResulIettr indicador = (ItemEstrtIndResulIettr) itInd.next();
nome = item.getDescricaoR3(); //NomePPA
tipo = indicador.getNomeIettir();
unidade = indicador.getUnidMedidaIettr();
if(item.getItemEstrutLocalIettls() != null && item.getItemEstrutLocalIettls().size() > 0){
List lLocal = new ArrayList(item.getItemEstrutLocalIettls());
ItemEstrutLocalIettl local = (ItemEstrutLocalIettl) lLocal.get(0);
//regiao = local.getLocalItemLit().getLocalGrupoLgp().getIdentificacaoLgp();
regiao = local.getLocalItemLit().getIdentificacaoLit();
}
tipoSituacao = "";
valor = indResulDao.getSomaQuantidadePrevista(indicador);
geraXMLItemProduto(builder, item, nome, tipo, unidade, tipoSituacao, regiao, valor, "");
gerouProduto = true;
}
}
}
}
/* Se for Valores Revisados, pegar valores dos indicadores das revis�es (qtdes revisadas)*/
else if ("R".equals(tipoValor)){
/* Altera��o ref. Mantis 5879.
*
* Caso o item tenha sido modificado ou inclu�do, ent�o valem as metas f�sicas da revis�o.
* Se o item n�o passou por mudan�a, ent�o valem as quantidades da tabela original.
* */
List revisoes = new ArrayList(item.getItemEstruturarevisaoIettrevs());
if(revisoes.isEmpty()){
//Se n�o possui revis�es, pegar dados da tabela original
List indicadores = new ArrayList(item.getItemEstrtIndResulIettrs());
if(indicadores != null && indicadores.size() > 0){
Iterator itInd = indicadores.iterator();
while(itInd.hasNext()){
ItemEstrtIndResulIettr indicador = (ItemEstrtIndResulIettr) itInd.next();
nome = item.getDescricaoR3(); //NomePPA
tipo = indicador.getNomeIettir();
unidade = indicador.getUnidMedidaIettr();
if(item.getItemEstrutLocalIettls() != null && item.getItemEstrutLocalIettls().size() > 0){
List lLocal = new ArrayList(item.getItemEstrutLocalIettls());
ItemEstrutLocalIettl local = (ItemEstrutLocalIettl) lLocal.get(0);
//regiao = local.getLocalItemLit().getLocalGrupoLgp().getIdentificacaoLgp();
regiao = local.getLocalItemLit().getIdentificacaoLit();
}
tipoSituacao = "";
valor = indResulDao.getSomaQuantidadePrevista(indicador);
geraXMLItemProduto(builder, item, nome, tipo, unidade, tipoSituacao, regiao, valor, "");
gerouProduto = true;
}
}
}
else {
//Possui revis�es
Iterator itRevisoes = revisoes.iterator();
while(itRevisoes.hasNext()){
ItemEstruturarevisaoIettrev iettRev = (ItemEstruturarevisaoIettrev) itRevisoes.next();
/*
* Ref Mantis 6264:
* 1) Ao somar as quantidades do exerc�cios das metas f�sicas de revis�o, se um exerc�cio
* estiver nulo/n�o foi informado ent�o buscar o valor de exerc�cio correspondente na
* meta f�sica do item.
* Ex.: Na revis�o foi informado apenas o ano 2004. Deve-se somar o ano de 2004 da revis�o
* com os anos 2005, 2006, 2007 informado no cadastro de item.
*
* 2) Ao somar as quantidades, respeitar as regras do Indicador (se permite
* totaliza��o, maior, �ltimo, etc..)
*
* O exerc�cio da meta f�sica do item � o que foi informado na meta f�sica de revis�o.
* Conforme conversa com elmar em 17/08/2006, se esta meta f�sica do item n�o foi
* informada da meta f�sica de revis�o, deve-se para a gera��o do relat�rio e exibir
* mensagem de erro com o item que falta a informa��o.
*/
if(iettRev.getIettIndResulRevIettrrs() != null && iettRev.getIettIndResulRevIettrrs().size() > 0){
//Se a revis�o possui indicadores de revis�o, fazer um "merge" entre os valores da meta f�sica
//de revis�o e a meta f�sica do item. Ex.: Na revis�o foi informado apenas o ano 2004.
//Deve-se somar o ano de 2004 da revis�o com os anos 2005, 2006, 2007
//informado no cadastro de item.
Iterator itIndRev = iettRev.getIettIndResulRevIettrrs().iterator();
while(itIndRev.hasNext()){
IettIndResulRevIettrr indRev = (IettIndResulRevIettrr) itIndRev.next();
nome = "";
if(iettRev.getDescricaoR3rev() != null && !"".equals(iettRev.getDescricaoR3rev()))
nome = iettRev.getDescricaoR3rev();
else
nome = iettRev.getNomeIettrev();
if("".equals(nome)){
if(item.getDescricaoR3() != null && !"".equals(item.getDescricaoR3()))
nome = item.getDescricaoR3(); //NomePPA
else
nome = item.getNomeIett();
}
/*
* Ref Mantis 6010
* Se a revis�o n�o possuir o indicador informado, pegar os dados
* do primeiro indicador do item informado
*
* NOVA REGRA: Ref. Mantis 6264, se a revis�o possui meta f�sica
* mas a meta f�sica de revis�o n�o possui associa��o com o indicador
* do item, ent�o exibir mensagem de erro e para a gera��o de relat�rio.
*/
if(indRev.getItemEstrtIndResulIettr() == null)
throw new ECARException("Erro na gera��o do Relat�rio do Ap�ndice 2 do PPA: O Item \"" + item.getSiglaIett() + "-" + item.getNomeIett() + "\" possui Meta F�sica de Revis�o sem tipo informado.");
tipo = indRev.getItemEstrtIndResulIettr().getNomeIettir();
unidade = indRev.getItemEstrtIndResulIettr().getUnidMedidaIettr();
valor = somaValoresMetasRevisadas(indRev);
//regiao = itemEstLocalDao.getAbrangencia(iettRev.getCodIettrev());
if(iettRev.getItemEstLocalRevIettlrs() != null && iettRev.getItemEstLocalRevIettlrs().size() > 0){
List lLocal = new ArrayList(iettRev.getItemEstLocalRevIettlrs());
ItemEstLocalRevIettlr local = (ItemEstLocalRevIettlr) lLocal.get(0);
regiao = local.getLocalItemLit().getIdentificacaoLit();
}
else {
//Se a revis�o n�o possui locais cadastrados, buscar local do item. Ref Mantis: 6010
if(item.getItemEstrutLocalIettls() != null && item.getItemEstrutLocalIettls().size() > 0){
List lLocal = new ArrayList(item.getItemEstrutLocalIettls());
ItemEstrutLocalIettl local = (ItemEstrutLocalIettl) lLocal.get(0);
regiao = local.getLocalItemLit().getIdentificacaoLit();
}
}
tipoSituacao = iettRev.getSituacaoIettrev();
if(!"E".equals(tipoSituacao)){
geraXMLItemProduto(builder, item, nome, tipo, unidade, tipoSituacao, regiao, valor, "");
gerouProduto = true;
}
}
}
else{
//Se a revis�o n�o possui indicadores na revis�o,
//somar somente os indicadores do item da revis�o
nome = "";
if(iettRev.getDescricaoR3rev() != null && !"".equals(iettRev.getDescricaoR3rev()))
nome = iettRev.getDescricaoR3rev();
else
nome = iettRev.getNomeIettrev();
if("".equals(nome)){
if(item.getDescricaoR3() != null && !"".equals(item.getDescricaoR3()))
nome = item.getDescricaoR3(); //NomePPA
else
nome = item.getNomeIett();
}
/*
* Ref. Mantis 6010:
* Se a revis�o n�o possuir o indicador informado, pegar os dados
* do primeiro indicador do item informado
*
* Como aqui a revis�o n�o possui metas f�sicas cadastradas, valem os valores
* e regras do indicador do item.
*/
tipo = "n�o informado";
unidade = "n�o informado";
valor = "-";
List indResulIett = new ArrayList(item.getItemEstrtIndResulIettrs());
if(indResulIett != null && !indResulIett.isEmpty()){
ItemEstrtIndResulIettr indResul = (ItemEstrtIndResulIettr) indResulIett.get(0);
tipo = indResul.getNomeIettir();
unidade = indResul.getUnidMedidaIettr();
valor = indResulDao.getSomaQuantidadePrevista(indResul);
}
//regiao = itemEstLocalDao.getAbrangencia(iettRev.getCodIettrev());
if(iettRev.getItemEstLocalRevIettlrs() != null && iettRev.getItemEstLocalRevIettlrs().size() > 0){
List lLocal = new ArrayList(iettRev.getItemEstLocalRevIettlrs());
ItemEstLocalRevIettlr local = (ItemEstLocalRevIettlr) lLocal.get(0);
regiao = local.getLocalItemLit().getIdentificacaoLit();
}
else {
//Se a revis�o n�o possui locais cadastrados, buscar local do item. Ref Mantis: 6010
if(item.getItemEstrutLocalIettls() != null && item.getItemEstrutLocalIettls().size() > 0){
List lLocal = new ArrayList(item.getItemEstrutLocalIettls());
ItemEstrutLocalIettl local = (ItemEstrutLocalIettl) lLocal.get(0);
regiao = local.getLocalItemLit().getIdentificacaoLit();
}
}
tipoSituacao = iettRev.getSituacaoIettrev();
if(!"E".equals(tipoSituacao)){
geraXMLItemProduto(builder, item, nome, tipo, unidade, tipoSituacao, regiao, valor, "");
gerouProduto = true;
}