objetos.add(acompReferenciaItem);
for (Iterator itAcompReferenciaItemLimites = acompReferenciaItem.getAcompRefItemLimitesArlis().iterator(); itAcompReferenciaItemLimites
.hasNext();) {
AcompRefItemLimitesArli limite = (AcompRefItemLimitesArli) itAcompReferenciaItemLimites.next();
setPKAcompReferenciaItemLimite(limite);
session.save(limite);
objetos.add(limite);
}
/* salva os realizados fisicos conforme regra*/
if(iett.getItemEstrtIndResulIettrs() != null && !iett.getItemEstrtIndResulIettrs().isEmpty()){
boolean gravaARF = false;
if(listNiveis != null && listNiveis.size() > 0) {
if(iett.getItemEstruturaNivelIettns() != null && iett.getItemEstruturaNivelIettns().size() > 0) {
Iterator itNiveis = iett.getItemEstruturaNivelIettns().iterator();
while(itNiveis.hasNext() && !gravaARF) {
SisAtributoSatb nivel = (SisAtributoSatb) itNiveis.next();
if(listNiveis.contains(nivel)) {
gravaARF = true;
}
}
}
} else {
gravaARF = true;
}
if(gravaARF) {
for (Iterator itIettir = iett.getItemEstrtIndResulIettrs().iterator(); itIettir
.hasNext();) {
ItemEstrtIndResulIettr iettir = (ItemEstrtIndResulIettr) itIettir.next();
//Mantis-POA: caso 0010021
//Testar se indicador (iettir) est� exclu�do antes de criar ARF para ele.
//Se indicador est� exclu�do, n�o cria ARF
if("N".equals(iettir.getIndAtivoIettr())){
continue;
}
//verificacao de grupo de meta f�sica
if(!listAtribMetasFisicasCfg.isEmpty()) {
if(iettir.getSisAtributoSatb() == null || !listAtribMetasFisicasCfg.contains(iettir.getSisAtributoSatb())) {
// n�o gravar ARF para o indicador, se o indicador n�o tiver a meta f�sica configurada no tipo de acomp.
continue;
}
}
////
// verificar a exist�ncia do ARF
AcompRealFisicoArf arf = arfDao.buscarPorIettir(
Long.valueOf(acompReferenciaItem.getAcompReferenciaAref().getMesAref()),
Long.valueOf(acompReferenciaItem.getAcompReferenciaAref().getAnoAref()),
iettir.getCodIettir());
if(arf == null) {
long mes = Long.valueOf(acompReferenciaItem.getAcompReferenciaAref().getMesAref()).longValue();
long ano = Long.valueOf(acompReferenciaItem.getAcompReferenciaAref().getAnoAref()).longValue();
AcompRealFisicoArf arfAnterior = arfDao.getArfAnterior(iettir, mes, ano);
if(arfAnterior != null){
if(arfAnterior.getSituacaoSit() != null && "S".equals(arfAnterior.getSituacaoSit().getIndConcluidoSit())){
//Se o ARF anterior representa conclus�o, n�o gero ARF deste indicador para o acompanhamento.
continue;
}
}
arf = new AcompRealFisicoArf();
arf.setItemEstrtIndResulIettr(iettir);
arf.setDataInclusaoArf(Data.getDataAtual());
arf.setItemEstruturaIett(iett);
arf.setMesArf(Long.valueOf(acompReferenciaItem.getAcompReferenciaAref().getMesAref()));
arf.setAnoArf(Long.valueOf(acompReferenciaItem.getAcompReferenciaAref().getAnoAref()));
session.save(arf);
objetos.add(arf);
}
}
}
}
/* salva os relat�rios (se existirem) */
if(acompReferenciaItem.getAcompRelatorioArels() != null){
for (Iterator itAcompRel = acompReferenciaItem.getAcompRelatorioArels().iterator(); itAcompRel
.hasNext();) {
AcompRelatorioArel acompRel = (AcompRelatorioArel) itAcompRel.next();
session.save(acompRel);
objetos.add(acompRel);
}
}
}
for (Iterator itObjetosDeletados = objetosParaExcluir.iterator(); itObjetosDeletados
.hasNext();) {
ItemEstruturaIett itemRemoverMonitoramento = (ItemEstruturaIett) itObjetosDeletados.next();
AcompReferenciaItemAri acompReferenciaItemAExcluir = this.getAcompReferenciaItemByItemEstruturaIett(acompanhamento, itemRemoverMonitoramento);
List filhos = new ArrayList();
/* excluir os realizados f�sico e Relatorios do acompanhamento */
filhos.addAll(acompReferenciaItemAExcluir.getAcompRelatorioArels());
if (acompReferenciaItemAExcluir.getItemEstrUplCategIettuc() != null && acompReferenciaItemAExcluir.getItemEstrUplCategIettuc().size() > 0){
List<ItemEstrUplCategIettuc> categoriasUpload = new ArrayList<ItemEstrUplCategIettuc>(acompReferenciaItemAExcluir.getItemEstrUplCategIettuc());
List historicosCategoriaExcluir = new HistoricoItemEstrutUploadDao(request).getHistoricoPorCategoriaUpload(categoriasUpload);
//Adiciona o hist�rico de upload aos objetos a serem exclu�dos
filhos.addAll(historicosCategoriaExcluir);
}
// verificar o ARF correspondente ao ARI que podem ser exclu�do
StringBuilder query = new StringBuilder("select ARI from AcompReferenciaItemAri as ARI")
.append(" where ARI.itemEstruturaIett.codIett = :codIett")
.append(" and ARI.acompReferenciaAref.diaAref = :dia")
.append(" and ARI.acompReferenciaAref.mesAref = :mes")
.append(" and ARI.acompReferenciaAref.anoAref = :ano")
.append(" and ARI.codAri<> :codAri")
.append(" and ARI.itemEstruturaIett.indAtivoIett = 'S'");
Query q = this.getSession().createQuery(query.toString());
q.setLong("codIett", acompReferenciaItemAExcluir.getItemEstruturaIett().getCodIett().longValue());
q.setString("dia", acompReferenciaItemAExcluir.getAcompReferenciaAref().getDiaAref());
q.setString("mes", acompReferenciaItemAExcluir.getAcompReferenciaAref().getMesAref());
q.setString("ano", acompReferenciaItemAExcluir.getAcompReferenciaAref().getAnoAref());
q.setLong("codAri", acompReferenciaItemAExcluir.getCodAri().longValue());
List listaARI = q.list();
if(listaARI == null || listaARI.isEmpty()) {
// o ARF correspondente pode ser removido pois n�o est� em uso
List listArf = arfDao.buscarPorIett(
acompReferenciaItemAExcluir.getItemEstruturaIett().getCodIett(),
Long.valueOf(acompReferenciaItemAExcluir.getAcompReferenciaAref().getMesAref()),
Long.valueOf(acompReferenciaItemAExcluir.getAcompReferenciaAref().getAnoAref()));
if(listArf != null && !listArf.isEmpty()) {
for (Iterator itListArf = listArf.iterator(); itListArf
.hasNext();) {
filhos.add(itListArf.next());
}
}
}
for (Iterator itExcluirFilhos = filhos.iterator(); itExcluirFilhos.hasNext();) {
session.delete(itExcluirFilhos.next());
}
for (Iterator itExcluirFilhos = filhos.iterator(); itExcluirFilhos.hasNext();) {
objetos.add(itExcluirFilhos.next());
}
session.delete(acompReferenciaItemAExcluir);
objetos.add(acompReferenciaItemAExcluir);
}
Set setNovosArlis = new HashSet();
Set setNovosArels = new HashSet();
for (Iterator itObjetosAlterados = objetosParaAlterar.iterator(); itObjetosAlterados.hasNext();) {
ItemEstruturaIett itemAlterarMonitoramento = (ItemEstruturaIett) itObjetosAlterados.next();
AcompReferenciaItemAri acompReferenciaItemAlterar = this.getAcompReferenciaItemByItemEstruturaIett(acompanhamento, itemAlterarMonitoramento);
acompReferenciaItemAlterar.setDataUltManutAri(Data.getDataAtual());
acompReferenciaItemAlterar.setDataInicioAri(acompanhamento.getDataInicioAref());
acompReferenciaItemAlterar.setDataLimiteAcompFisicoAri(acompanhamento.getDataLimiteAcompFisicoAref());
acompReferenciaItemAlterar.setCodUsuUltManutAri(Long.valueOf(Pagina.getParamStr(request, "codUsuario")));
session.update(acompReferenciaItemAlterar);
objetos.add(acompReferenciaItemAlterar);
for (Iterator it = acompReferenciaItemAlterar.getAcompRefItemLimitesArlis().iterator(); it.hasNext();) {
AcompRefItemLimitesArli acompRefItemLimites = (AcompRefItemLimitesArli) it.next();
AcompRefLimitesArl limiteAcomp = acompReferenciaDao.getAcompRefLimitesByFuncaoAcomp(acompanhamento, acompRefItemLimites.getTipoFuncAcompTpfa());
acompRefItemLimites.setDataLimiteArli(limiteAcomp.getDataLimiteArl());
session.update(acompRefItemLimites);
objetos.add(acompRefItemLimites);
}
// Mantis: 10715 (Criar AREL (parecer) para novas fun��es de acompanhamento)
//Testar confirma��o do usu�rio se confirma cria��o de parecer para novas fun��es de acompanhamento
if("S".equals(Pagina.getParamStr(request, "existeAriFaltandoParecerConfirma"))) {
// S� gerar AREL(parecer) para itens que foram selecionados na tela
if(itensSelecionadosEmTela.contains(itemAlterarMonitoramento)) {
Set arelsGravados = acompReferenciaItemAlterar.getAcompRelatorioArels();
// obtem as fun��es de acompanhamento do item que emitem posi��o
Iterator it = itemEstUsutpfuacDao.getFuacEmitePosicaoOrderByFuncAcomp(itemAlterarMonitoramento).iterator();
while(it.hasNext()){
TipoFuncAcompTpfa funcAcomp = ((ItemEstUsutpfuacIettutfa)it.next()).getTipoFuncAcompTpfa();
// S� gerar AREL(parecer) para as fun��es cadastradas no tipo de acompanhamento
Iterator itTafc = ta.getTipoAcompFuncAcompTafcs().iterator();
while(itTafc.hasNext()){
TipoAcompFuncAcompTafc tafc = (TipoAcompFuncAcompTafc) itTafc.next();
//verifica a fun��o e se ela n�o est� como "ignorar"
if(tafc.getTipoFuncAcompTpfa().equals(funcAcomp) && (tafc.getIndObrigatorio().equals("S") || tafc.getIndOpcional().equals("S"))){
boolean existeArelParaFuncao = false;
Iterator itArelsGravados = arelsGravados.iterator();
while(itArelsGravados.hasNext() && !existeArelParaFuncao){
AcompRelatorioArel arel = (AcompRelatorioArel)itArelsGravados.next();
if(arel.getTipoFuncAcompTpfa().equals(funcAcomp)) {
existeArelParaFuncao = true;
}
}
if(!existeArelParaFuncao) {
AcompRefLimitesArl arlAcomp = acompReferenciaDao.getAcompRefLimitesByFuncaoAcomp(acompanhamento, funcAcomp);
if(arlAcomp != null) {
AcompRefItemLimitesArli arliAri = acompReferenciaDao.getAcompRefItemLimitesArliByAriAndTpfa(acompReferenciaItemAlterar.getCodAri(), funcAcomp.getCodTpfa());
if(arliAri == null) {
AcompRefItemLimitesArli acompRefItemLimite = new AcompRefItemLimitesArli();
acompRefItemLimite.setDataLimiteArli(arlAcomp.getDataLimiteArl());
acompRefItemLimite.setAcompReferenciaItemAri(acompReferenciaItemAlterar);
acompRefItemLimite.setTipoFuncAcompTpfa(funcAcomp);
acompRefItemLimite.atribuirPKPai();
if(!setNovosArlis.contains(acompRefItemLimite)) {
setNovosArlis.add(acompRefItemLimite);
}
}
}