package gcom.gui.relatorio.micromedicao; import gcom.cadastro.empresa.Empresa; import gcom.cadastro.empresa.FiltroEmpresa; import gcom.cadastro.imovel.Categoria; import gcom.cadastro.imovel.FiltroCategoria; import gcom.cadastro.imovel.FiltroImovelPerfil; import gcom.cadastro.imovel.Imovel; import gcom.cadastro.imovel.ImovelPerfil; import gcom.cadastro.imovel.bean.ImovelMicromedicao; import gcom.cadastro.localidade.FiltroLocalidade; import gcom.cadastro.localidade.Localidade; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.fachada.Fachada; import gcom.faturamento.FaturamentoGrupo; import gcom.faturamento.FiltroFaturamentoGrupo; import gcom.gui.micromedicao.LeituraConsumoActionForm; import gcom.micromedicao.FiltroLeituraSituacao; import gcom.micromedicao.FiltroLigacaoTipo; import gcom.micromedicao.consumo.ConsumoAnormalidade; import gcom.micromedicao.consumo.FiltroConsumoAnormalidade; import gcom.micromedicao.consumo.LigacaoTipo; import gcom.micromedicao.leitura.FiltroLeituraAnormalidade; import gcom.micromedicao.leitura.LeituraAnormalidade; import gcom.micromedicao.leitura.LeituraSituacao; import gcom.micromedicao.medicao.FiltroMedicaoHistoricoSql; import gcom.micromedicao.medicao.FiltroMedicaoTipo; import gcom.micromedicao.medicao.MedicaoTipo; import gcom.relatorio.ExibidorProcessamentoTarefaRelatorio; import gcom.relatorio.RelatorioVazioException; import gcom.relatorio.micromedicao.FiltrarAnaliseExcecoesLeiturasHelper; import gcom.relatorio.micromedicao.RelatorioAnaliseConsumo; import gcom.seguranca.acesso.usuario.FiltroUsuario; import gcom.seguranca.acesso.usuario.Usuario; import gcom.tarefa.TarefaRelatorio; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.util.ArrayList; import java.util.Collection; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; /** * @author Vivianne Sousa * @date 06/11/2007 */ public class GerarRelatorioAnaliseConsumoAction extends ExibidorProcessamentoTarefaRelatorio { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = null; LeituraConsumoActionForm leituraConsumoActionForm = (LeituraConsumoActionForm) actionForm; Fachada fachada = Fachada.getInstancia(); HttpSession sessao = httpServletRequest.getSession(false); /* * Colocado por Raphael Rossiter em 04/12/2007 - Analista: Claudio Lira * OBJ: N�o perder os registros selecionados na pagina��o */ //======================================================================================== // HashMap<String, String[]> idsImovelPorPagina = this.capturarSelecao(sessao, httpServletRequest); // String[] idsImovel = null; // // if (idsImovelPorPagina == null){ // throw new ActionServletException("atencao.relatorio.vazio"); // } // else{ // // //ORDENANDO POR PAGINA // TreeMap<String, String[]> idsImovelOrdenadosPorPagina = new TreeMap(idsImovelPorPagina); // // idsImovel = this.gerarArray(idsImovelOrdenadosPorPagina); // } // // //======================================================================================== // // String valoresIdsImovel = ""; // // for (int i = 0; i < idsImovel.length; i++) { // if (!idsImovel[i].equals("")) { // valoresIdsImovel = valoresIdsImovel + idsImovel[i] + ","; // } // } // // valoresIdsImovel = valoresIdsImovel.substring(0, valoresIdsImovel.length() - 1); String mesAnoPesquisa = (String) sessao.getAttribute("mesAnoPesquisa"); FiltrarAnaliseExcecoesLeiturasHelper filtrarAnaliseExcecoesLeiturasHelper = (FiltrarAnaliseExcecoesLeiturasHelper) sessao.getAttribute("filtrarAnaliseExcecoesLeiturasHelper"); FiltroMedicaoHistoricoSql filtroMedicaoHistoricoSql = new FiltroMedicaoHistoricoSql(); if (sessao.getAttribute("filtroMedicaoHistoricoSql") != null) { filtroMedicaoHistoricoSql = (FiltroMedicaoHistoricoSql) sessao.getAttribute("filtroMedicaoHistoricoSql"); } Collection colecaoImoveisGerarRelatorio = (Collection) sessao.getAttribute("colecaoImoveisGerarRelatorio"); Collection colecaoIdsImovel = (Collection)sessao.getAttribute("colecaoIdsImovelTotal"); if (colecaoIdsImovel != null && !colecaoIdsImovel.isEmpty()) { int index = (Integer) sessao.getAttribute("index"); Imovel imovel = ((ImovelMicromedicao) ((List) colecaoIdsImovel) .get(index)).getImovel(); // Verifica se o im�vel o im�vel atual foi selecionado, em caso // afirmativo adiciona-o a cole��o if (httpServletRequest.getParameter("gerarRelatorio") != null && !httpServletRequest.getParameter("gerarRelatorio") .trim().equals("")) { if (colecaoImoveisGerarRelatorio == null) { colecaoImoveisGerarRelatorio = new ArrayList<Imovel>(); } if (!colecaoImoveisGerarRelatorio.contains(imovel.getId())) { colecaoImoveisGerarRelatorio.add(imovel.getId()); } } else { if (colecaoImoveisGerarRelatorio != null && colecaoImoveisGerarRelatorio.contains(imovel.getId())) { colecaoImoveisGerarRelatorio.remove(imovel.getId()); } } } // --- Faturamento Grupo FiltroFaturamentoGrupo filtroFaturamentoGrupo = new FiltroFaturamentoGrupo(); filtroFaturamentoGrupo.adicionarParametro(new ParametroSimples( FiltroFaturamentoGrupo.ID, new Integer(leituraConsumoActionForm.getIdGrupoFaturamentoFiltro()))); Collection<FaturamentoGrupo> colecaoFaturamentoGrupo = fachada .pesquisar(filtroFaturamentoGrupo, FaturamentoGrupo.class.getName()); FaturamentoGrupo faturamentoGrupo = (FaturamentoGrupo)Util.retonarObjetoDeColecao(colecaoFaturamentoGrupo); SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema(); // Parte que vai mandar o relat�rio para a tela // cria uma inst�ncia da classe do relat�rio RelatorioAnaliseConsumo relatorioAnaliseConsumo = new RelatorioAnaliseConsumo((Usuario)(httpServletRequest.getSession(false)).getAttribute("usuarioLogado")); relatorioAnaliseConsumo.addParametro("colecaoImoveisGerarRelatorio", colecaoImoveisGerarRelatorio); String tipoRelatorio = TarefaRelatorio.TIPO_PDF + ""; relatorioAnaliseConsumo.addParametro("tipoFormatoRelatorio", Integer.parseInt(tipoRelatorio)); relatorioAnaliseConsumo.addParametro("mesAnoPesquisa", mesAnoPesquisa); relatorioAnaliseConsumo.addParametro("mesAnoArrecadacao", Util.formatarAnoMesParaMesAno(sistemaParametro.getAnoMesArrecadacao().intValue())); relatorioAnaliseConsumo.addParametro("grupo", faturamentoGrupo.getDescricao()); relatorioAnaliseConsumo.addParametro("filtrarAnaliseExcecoesLeiturasHelper", filtrarAnaliseExcecoesLeiturasHelper); relatorioAnaliseConsumo.addParametro("filtroMedicaoHistoricoSql", filtroMedicaoHistoricoSql); this.setarParametrosDoRelatorio(relatorioAnaliseConsumo,leituraConsumoActionForm,fachada); try { retorno = processarExibicaoRelatorio(relatorioAnaliseConsumo, tipoRelatorio, httpServletRequest, httpServletResponse, actionMapping); } catch (RelatorioVazioException ex) { // manda o erro para a p�gina no request atual reportarErros(httpServletRequest, "atencao.relatorio.vazio"); // seta o mapeamento de retorno para a tela de aten��o de popup retorno = actionMapping.findForward("telaAtencaoPopup"); } return retorno; } /** * Capturar os im�veis selecionados pelo usu�rio * * @author Raphael Rossiter * @date 05/12/2007 * */ // public HashMap<String, String[]> capturarSelecao(HttpSession sessao, HttpServletRequest httpServletRequest){ // // HashMap<String, String[]> imoveisPorPagina = null; // // //CASO VENHA DA TELA DE ANALISE // String telaAnalise = httpServletRequest.getParameter("concluir"); // // if (telaAnalise == null){ // // String paginaCorrente = httpServletRequest.getParameter("paginaCorrente"); // // String idsImoveisJuntos = httpServletRequest.getParameter("idRegistrosImovel"); // String[] idsImovel = null; // // if (idsImoveisJuntos != null && idsImoveisJuntos.length() > 0){ // idsImovel = idsImoveisJuntos.split(","); // } // // imoveisPorPagina = (HashMap) sessao.getAttribute("idsImoveisJaSelecionados"); // // if (imoveisPorPagina != null && !imoveisPorPagina.isEmpty()){ // // if (imoveisPorPagina.containsKey(paginaCorrente)){ // // if (idsImovel != null && idsImovel.length > 0){ // // //ATUALIZA��O // imoveisPorPagina.put(paginaCorrente, idsImovel); // } // else{ // // //REMO��O // imoveisPorPagina.remove(paginaCorrente); // } // } // else if (idsImovel != null && idsImovel.length > 0){ // //PAGINA NAO CADASTRADA // imoveisPorPagina.put(paginaCorrente, idsImovel); // } // // } // else if (idsImovel != null && idsImovel.length > 0){ // // //PRIMEIRA SELECAO // imoveisPorPagina = new HashMap<String, String[]>(); // imoveisPorPagina.put(paginaCorrente, idsImovel); // // sessao.setAttribute("idsImoveisJaSelecionados", imoveisPorPagina); // } // } // // return imoveisPorPagina; // } // // // public String[] gerarArray(TreeMap<String, String[]> idsImovelOrdenadosPorPagina){ // // String retorno[] = null; // String paginaAtual[] = null; // // Iterator it = idsImovelOrdenadosPorPagina.values().iterator(); // // while(it.hasNext()){ // // paginaAtual = (String[]) it.next(); // // if (retorno == null){ // retorno = paginaAtual; // } // else{ // // String temp[] = retorno; // String arrayPaginaAtual[] = paginaAtual; // // // retorno = new String[temp.length + arrayPaginaAtual.length]; // System.arraycopy(temp,0,retorno,0,temp.length); // // System.arraycopy(arrayPaginaAtual, 0, retorno, temp.length, arrayPaginaAtual.length); // } // } // // return retorno; // } /** * @author Hugo Amorim * @date 15/07/2009 */ public void setarParametrosDoRelatorio(RelatorioAnaliseConsumo relatorioAnaliseConsumo, LeituraConsumoActionForm form,Fachada fachada){ if(form.getImovelFiltro()!=null && !form.getImovelFiltro().equals("")){ relatorioAnaliseConsumo.addParametro("matImovel",form.getImovelFiltro()); } if(form.getImovelCondominioFiltro()!=null && !form.getImovelCondominioFiltro().equals("")){ relatorioAnaliseConsumo.addParametro("matImovelCondominio", form.getImovelCondominioFiltro()); } if(form.getIdEmpresaFiltro()!=null && !form.getIdEmpresaFiltro().equals("")){ FiltroEmpresa filtroEmpresa = new FiltroEmpresa(); filtroEmpresa.adicionarParametro(new ParametroSimples( FiltroEmpresa.ID,form.getIdEmpresaFiltro())); Collection empresas = fachada.pesquisar(filtroEmpresa,Empresa.class.getName()); Empresa empresa = (Empresa) Util.retonarObjetoDeColecao(empresas); if(empresa!=null && !empresa.equals("")){ relatorioAnaliseConsumo.addParametro("empresa", empresa.getDescricao()); } } if(form.getLocalidadeFiltro()!=null && !form.getLocalidadeFiltro().equals("")){ FiltroLocalidade filtroLocalidade = new FiltroLocalidade(); filtroLocalidade.adicionarParametro(new ParametroSimples( FiltroLocalidade.ID,form.getLocalidadeFiltro())); Collection localidades = fachada.pesquisar(filtroLocalidade,Localidade.class.getName()); Localidade localidade = (Localidade) Util.retonarObjetoDeColecao(localidades); if(localidade!=null && !localidade.equals("")){ relatorioAnaliseConsumo.addParametro("localidadeCodigo", localidade.getId().toString()); relatorioAnaliseConsumo.addParametro("localidadeDescricao", localidade.getDescricao().toString()); } } if(form.getSetorComercialFiltro()!=null && !form.getSetorComercialFiltro().equals("")){ relatorioAnaliseConsumo.addParametro("setorComercial", form.getSetorComercialFiltro()); } if(form.getQuadraInicialFiltro()!=null && !form.getQuadraInicialFiltro().equals("")){ relatorioAnaliseConsumo.addParametro("quadraInicial", form.getQuadraInicialFiltro()); } if(form.getQuadraFinalFiltro()!=null && !form.getQuadraFinalFiltro().equals("")){ relatorioAnaliseConsumo.addParametro("quadraFinal", form.getQuadraFinalFiltro()); } if(form.getRotaFiltro()!=null && !form.getRotaFiltro().equals("")){ relatorioAnaliseConsumo.addParametro("rota", form.getRotaFiltro()); } if(form.getIdUsuarioAlteracao()!=null && !form.getIdUsuarioAlteracao().equals("")){ FiltroUsuario filtroUsuario = new FiltroUsuario(); filtroUsuario.adicionarParametro(new ParametroSimples( FiltroUsuario.ID,form.getIdUsuarioAlteracao())); Collection usuarios = fachada.pesquisar(filtroUsuario,Usuario.class.getName()); Usuario usuario = (Usuario) Util.retonarObjetoDeColecao(usuarios); if(usuario!=null){ relatorioAnaliseConsumo.addParametro("nomeUsuario", usuario.getNomeUsuario()); relatorioAnaliseConsumo.addParametro("loginUsuario", usuario.getLogin()); } } if(form.getIndicadorImovelCondominioFiltro()!=null){ String valor = form.getIndicadorImovelCondominioFiltro(); if(valor.equalsIgnoreCase("S")){ relatorioAnaliseConsumo.addParametro("indicadorImovelCondominio", "SIM"); }else if(valor.equalsIgnoreCase("N")){ relatorioAnaliseConsumo.addParametro("indicadorImovelCondominio", "N�O"); }else{ relatorioAnaliseConsumo.addParametro("indicadorImovelCondominio", "TODOS"); } } if(form.getIndicadorDebitoAutomatico()!=null){ String valor = form.getIndicadorDebitoAutomatico(); if(valor.equalsIgnoreCase("S")){ relatorioAnaliseConsumo.addParametro("indicadorDebitoAutomatico", "SIM"); }else if(valor.equalsIgnoreCase("N")){ relatorioAnaliseConsumo.addParametro("indicadorDebitoAutomatico", "N�O"); }else{ relatorioAnaliseConsumo.addParametro("indicadorDebitoAutomatico", "TODOS"); } } if(form.getIndicadorImovelCondominioFiltro()!=null){ String valor = form.getIndicadorAnalisado(); if(valor.equals("1")){ relatorioAnaliseConsumo.addParametro("indicadorAnalisado", "SIM"); }else if(valor.equals("2")){ relatorioAnaliseConsumo.addParametro("indicadorAnalisado", "N�O"); }else{ relatorioAnaliseConsumo.addParametro("indicadorAnalisado", "TODOS"); } } if(form.getPerfilImovelFiltro()!=null && !form.getPerfilImovelFiltro().equals("-1")){ FiltroImovelPerfil filtroImovelPerfil = new FiltroImovelPerfil(); filtroImovelPerfil.adicionarParametro(new ParametroSimples( FiltroImovelPerfil.ID,form.getPerfilImovelFiltro()[0])); Collection imovelperfis = fachada.pesquisar(filtroImovelPerfil,ImovelPerfil.class.getName()); ImovelPerfil imovelPerfil = (ImovelPerfil) Util.retonarObjetoDeColecao(imovelperfis); if(imovelPerfil!=null){ relatorioAnaliseConsumo.addParametro("imovelPerfil", imovelPerfil.getDescricao()); } } if(form.getCategoriaImovelFiltro()!=null && !form.getCategoriaImovelFiltro().equals("-1")){ FiltroCategoria filtroCategoria = new FiltroCategoria(); filtroCategoria.adicionarParametro(new ParametroSimples( FiltroCategoria.CODIGO,form.getCategoriaImovelFiltro())); Collection categorias = fachada.pesquisar(filtroCategoria,Categoria.class.getName()); Categoria categoria = (Categoria) Util.retonarObjetoDeColecao(categorias); if(categoria!=null){ relatorioAnaliseConsumo.addParametro("categoriaImovel", categoria.getDescricao()); } } if(form.getQuantidadeEconomiaFiltro()!=null && !form.getQuantidadeEconomiaFiltro().equals("")){ relatorioAnaliseConsumo.addParametro("quantidadeEconomias", form.getQuantidadeEconomiaFiltro()); } if(form.getTipoMedicaoFiltro()!=null && !form.getTipoMedicaoFiltro().equals("-1")){ FiltroMedicaoTipo filtroMedicaoTipo = new FiltroMedicaoTipo(); filtroMedicaoTipo.adicionarParametro(new ParametroSimples( FiltroMedicaoTipo.ID,form.getTipoMedicaoFiltro())); Collection medicoesTipo = fachada.pesquisar( filtroMedicaoTipo,MedicaoTipo.class.getName()); MedicaoTipo medicaoTipo = (MedicaoTipo) Util.retonarObjetoDeColecao(medicoesTipo); if(medicaoTipo!=null){ relatorioAnaliseConsumo.addParametro("medicaoTipo", medicaoTipo.getDescricao()); } } if(form.getTipoLigacaoFiltro()!=null && !form.getTipoLigacaoFiltro().equals("-1")){ FiltroLigacaoTipo filtroLigacaoTipo = new FiltroLigacaoTipo(); filtroLigacaoTipo.adicionarParametro(new ParametroSimples( FiltroLigacaoTipo.ID,form.getTipoLigacaoFiltro())); Collection ligacoesTipo = fachada.pesquisar( filtroLigacaoTipo,LigacaoTipo.class.getName()); LigacaoTipo ligacaoTipo = (LigacaoTipo) Util.retonarObjetoDeColecao(ligacoesTipo); if(ligacaoTipo!=null){ relatorioAnaliseConsumo.addParametro("ligacaoTipo", ligacaoTipo.getDescricao()); } } if(form.getAnormalidadeLeituraInformadaFiltro()!=null && !form.getAnormalidadeLeituraInformadaFiltro().equals("-1")){ FiltroLeituraAnormalidade filtroLeituraAnormalidade = new FiltroLeituraAnormalidade(); filtroLeituraAnormalidade.adicionarParametro(new ParametroSimples( FiltroLeituraAnormalidade.ID,form.getAnormalidadeLeituraInformadaFiltro()[0])); Collection leiturasAnormalidade = fachada.pesquisar( filtroLeituraAnormalidade,LeituraAnormalidade.class.getName()); LeituraAnormalidade leituraAnormalidade = (LeituraAnormalidade) Util.retonarObjetoDeColecao(leiturasAnormalidade); if(leituraAnormalidade!=null){ relatorioAnaliseConsumo.addParametro("leituraAnormalidadeInformada", leituraAnormalidade.getDescricao()); } } if(form.getAnormalidadeLeituraFaturadaFiltro()!=null && !form.getAnormalidadeLeituraFaturadaFiltro().equals("-1")){ FiltroLeituraAnormalidade filtroLeituraAnormalidade = new FiltroLeituraAnormalidade(); filtroLeituraAnormalidade.adicionarParametro(new ParametroSimples( FiltroLeituraAnormalidade.ID,form.getAnormalidadeLeituraFaturadaFiltro()[0])); Collection leiturasAnormalidade = fachada.pesquisar( filtroLeituraAnormalidade,LeituraAnormalidade.class.getName()); LeituraAnormalidade leituraAnormalidade = (LeituraAnormalidade) Util.retonarObjetoDeColecao(leiturasAnormalidade); if(leituraAnormalidade!=null){ relatorioAnaliseConsumo.addParametro("leituraAnormalidadeFaturada", leituraAnormalidade.getDescricao()); } } if(form.getAnormalidadeConsumoFiltro()!=null && !form.getAnormalidadeConsumoFiltro().equals("-1")){ FiltroConsumoAnormalidade filtroConsumoAnormalidade = new FiltroConsumoAnormalidade(); filtroConsumoAnormalidade.adicionarParametro(new ParametroSimples( FiltroConsumoAnormalidade.ID,form.getAnormalidadeConsumoFiltro()[0])); Collection anormalidadesConsumo = fachada.pesquisar( filtroConsumoAnormalidade,ConsumoAnormalidade.class.getName()); ConsumoAnormalidade consumoAnormalidade = (ConsumoAnormalidade) Util.retonarObjetoDeColecao(anormalidadesConsumo); if(consumoAnormalidade!=null){ relatorioAnaliseConsumo.addParametro("anormalidadeConsumo", consumoAnormalidade.getDescricao()); } } if(form.getLeituraSituacaoAtualFiltro()!=null && !form.getLeituraSituacaoAtualFiltro().equals("-1")){ FiltroLeituraSituacao filtroLeituraSituacao = new FiltroLeituraSituacao(); filtroLeituraSituacao.adicionarParametro(new ParametroSimples( FiltroLeituraSituacao.ID,form.getLeituraSituacaoAtualFiltro())); Collection situacoesLeitura = fachada.pesquisar( filtroLeituraSituacao,LeituraSituacao.class.getName()); LeituraSituacao leituraSituacao = (LeituraSituacao) Util.retonarObjetoDeColecao(situacoesLeitura); if(leituraSituacao!=null){ relatorioAnaliseConsumo.addParametro("leituraSituacao", leituraSituacao.getDescricao()); } } if(form.getConsumoFaturadoInicialFiltro()!= null && !form.getConsumoFaturadoInicialFiltro().equals("") ){ relatorioAnaliseConsumo.addParametro("consumoFaturadoInicial", form.getConsumoFaturadoInicialFiltro()); } if(form.getConsumoFaturadoFinalFiltro()!= null && !form.getConsumoFaturadoFinalFiltro().equals("") ){ relatorioAnaliseConsumo.addParametro("consumoFaturadoFinal", form.getConsumoFaturadoFinalFiltro()); } if(form.getConsumoMedidoInicialFiltro()!= null && !form.getConsumoMedidoInicialFiltro().equals("") ){ relatorioAnaliseConsumo.addParametro("consumoMedidoInicial", form.getConsumoMedidoInicialFiltro()); } if(form.getConsumoMedidoFinalFiltro()!= null && !form.getConsumoMedidoFinalFiltro().equals("") ){ relatorioAnaliseConsumo.addParametro("consumoMedidoFinal", form.getConsumoMedidoFinalFiltro()); } if(form.getConsumoMedioInicialFiltro()!= null && !form.getConsumoMedioInicialFiltro().equals("") ){ relatorioAnaliseConsumo.addParametro("consumoMedioInicial", form.getConsumoMedioInicialFiltro()); } if(form.getConsumoMedioFinalFiltro()!= null && !form.getConsumoMedioFinalFiltro().equals("") ){ relatorioAnaliseConsumo.addParametro("consumoMedioFinal", form.getConsumoMedioFinalFiltro()); } } }