package gcom.gui.relatorio.atendimentopublico.ordemservico; import gcom.cadastro.geografico.FiltroMicrorregiao; import gcom.cadastro.geografico.FiltroMunicipio; import gcom.cadastro.geografico.FiltroRegiao; import gcom.cadastro.geografico.Microrregiao; import gcom.cadastro.geografico.Municipio; import gcom.cadastro.geografico.Regiao; import gcom.cadastro.localidade.FiltroGerenciaRegional; import gcom.cadastro.localidade.FiltroLocalidade; import gcom.cadastro.localidade.FiltroQuadra; import gcom.cadastro.localidade.FiltroUnidadeNegocio; import gcom.cadastro.localidade.GerenciaRegional; import gcom.cadastro.localidade.Localidade; import gcom.cadastro.localidade.UnidadeNegocio; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.relatorio.ExibidorProcessamentoTarefaRelatorio; import gcom.relatorio.RelatorioVazioException; import gcom.relatorio.atendimentopublico.ordemservico.RelatorioOSExecutadasPrestadoraServico; import gcom.relatorio.atendimentopublico.ordemservico.RelatorioOSExecutadasPrestadoraServicoSintetico; import gcom.seguranca.acesso.usuario.Usuario; import gcom.tarefa.TarefaRelatorio; import gcom.util.ConstantesSistema; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import gcom.util.filtro.ParametroSimplesIn; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.Iterator; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; /** * [UC1163] Gerar Relat�rio de OS executadas por Prestadora de Servi�o * * @author Vivianne Sousa * * @date 12/04/2011 */ public class GerarRelatorioOSExecutadasPrestadoraServicoAction extends ExibidorProcessamentoTarefaRelatorio { @Override public ActionForward execute( ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { ActionForward retorno = null; GerarRelatorioOSExecutadasPrestadoraServicoActionForm form = (GerarRelatorioOSExecutadasPrestadoraServicoActionForm) actionForm; Integer idGerencia = null; Integer idUnidade = null; Integer idLocalidade = null; Date dataEncerramentoInicial = Util.converteStringParaDate(form.getPeriodoEncerramentoInicial()); Date dataEncerramentoFinal = Util.converteStringParaDate(form.getPeriodoEncerramentoFinal()); int qtdeDias = Util.obterQuantidadeDiasEntreDuasDatas(dataEncerramentoInicial,dataEncerramentoFinal); if(qtdeDias > 31){ throw new ActionServletException("atencao.periodo_informado_superior"); } if(form.getOpcaoRelatorio() == null){ throw new ActionServletException("atencao.campo.informado", null, "Op��o do Relat�rio"); } String opcaoRelatorio = form.getOpcaoRelatorio(); String filtroGerencia = ""; String filtroUnidade = ""; String filtroLocalidade = ""; if(form.getIdGerencia() != null && !form.getIdGerencia().equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)){ idGerencia = new Integer(form.getIdGerencia()); filtroGerencia = pesquisarGerenciaRegional(idGerencia); } if(form.getIdUnidadeNegocio() != null && !form.getIdUnidadeNegocio().equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)){ idUnidade = new Integer(form.getIdUnidadeNegocio()); filtroUnidade = pesquisarUnidadeNegocio(idUnidade); } if(form.getCodigoLocalidade() != null && !form.getCodigoLocalidade().equals("")){ idLocalidade = new Integer(form.getCodigoLocalidade()); filtroLocalidade = pesquisarLocalidade(idLocalidade); } String filtroRegiao = pesquisarRegiao(form.getColecaoRegiao()); String filtroMicroregiao = pesquisarMicroregiao(form.getColecaoMicrorregiao()); String filtroMunicipio = pesquisarMunicipio(form.getColecaoMunicipio()); if(opcaoRelatorio.equals("1")){ //Anal�tico String tipoRelatorio = httpServletRequest.getParameter("tipoRelatorio"); if (tipoRelatorio == null) { tipoRelatorio = TarefaRelatorio.TIPO_PDF + ""; } RelatorioOSExecutadasPrestadoraServico relatorio = new RelatorioOSExecutadasPrestadoraServico ((Usuario)(httpServletRequest.getSession(false)).getAttribute("usuarioLogado")); relatorio.addParametro("dataEncerramentoInicial", dataEncerramentoInicial); relatorio.addParametro("dataEncerramentoFinal", dataEncerramentoFinal); relatorio.addParametro("idGerencia", idGerencia); relatorio.addParametro("idUnidade", idUnidade); relatorio.addParametro("idLocalidade", idLocalidade); relatorio.addParametro("idsRegiao", form.getColecaoRegiao()); relatorio.addParametro("idsMicroregiao", form.getColecaoMicrorregiao()); relatorio.addParametro("idsMunicipio", form.getColecaoMunicipio()); relatorio.addParametro("filtroGerencia", filtroGerencia); relatorio.addParametro("filtroUnidade", filtroUnidade); relatorio.addParametro("filtroLocalidade", filtroLocalidade); relatorio.addParametro("filtroRegiao", filtroRegiao); relatorio.addParametro("filtroMicroregiao", filtroMicroregiao); relatorio.addParametro("filtroMunicipio", filtroMunicipio); relatorio.addParametro("tipoFormatoRelatorio", Integer.parseInt(tipoRelatorio)); try { retorno = processarExibicaoRelatorio(relatorio, tipoRelatorio, httpServletRequest, httpServletResponse,actionMapping); } catch (RelatorioVazioException ex) { reportarErros(httpServletRequest, "atencao.relatorio.vazio"); retorno = actionMapping.findForward("telaAtencaoPopup"); } }else if(opcaoRelatorio.equals("2")){ //Resumido String tipoRelatorio = httpServletRequest.getParameter("tipoRelatorio"); if (tipoRelatorio == null) { tipoRelatorio = TarefaRelatorio.TIPO_PDF + ""; } RelatorioOSExecutadasPrestadoraServicoSintetico relatorio = new RelatorioOSExecutadasPrestadoraServicoSintetico ((Usuario)(httpServletRequest.getSession(false)).getAttribute("usuarioLogado")); relatorio.addParametro("dataEncerramentoInicial", dataEncerramentoInicial); relatorio.addParametro("dataEncerramentoFinal", dataEncerramentoFinal); relatorio.addParametro("idGerencia", idGerencia); relatorio.addParametro("idUnidade", idUnidade); relatorio.addParametro("idLocalidade", idLocalidade); relatorio.addParametro("idsRegiao", form.getColecaoRegiao()); relatorio.addParametro("idsMicroregiao", form.getColecaoMicrorregiao()); relatorio.addParametro("idsMunicipio", form.getColecaoMunicipio()); relatorio.addParametro("filtroGerencia", filtroGerencia); relatorio.addParametro("filtroUnidade", filtroUnidade); relatorio.addParametro("filtroLocalidade", filtroLocalidade); relatorio.addParametro("filtroRegiao", filtroRegiao); relatorio.addParametro("filtroMicroregiao", filtroMicroregiao); relatorio.addParametro("filtroMunicipio", filtroMunicipio); relatorio.addParametro("tipoFormatoRelatorio", Integer.parseInt(tipoRelatorio)); try { retorno = processarExibicaoRelatorio(relatorio, tipoRelatorio, httpServletRequest, httpServletResponse,actionMapping); } catch (RelatorioVazioException ex) { reportarErros(httpServletRequest, "atencao.relatorio.vazio"); retorno = actionMapping.findForward("telaAtencaoPopup"); } }else if(opcaoRelatorio.equals("3")){ //TXT Anal�tico StringBuilder headerTxt = new StringBuilder(); String referencia = Util.formatarData(dataEncerramentoInicial) + " a " + Util.formatarData(dataEncerramentoFinal); headerTxt.append(referencia + ";"); headerTxt.append("PONTO FORTE;"); headerTxt.append(filtroGerencia + ";"); headerTxt.append(filtroUnidade + ";"); headerTxt.append(filtroLocalidade + ";"); headerTxt.append(filtroRegiao + ";"); headerTxt.append(filtroMicroregiao + ";"); headerTxt.append(filtroMunicipio + ";"); Fachada.getInstancia().gerarTxtOSExecutadasPrestadoraServico(dataEncerramentoInicial, dataEncerramentoFinal,idGerencia,idUnidade,idLocalidade,form.getColecaoRegiao(), form.getColecaoMicrorregiao(), form.getColecaoMunicipio(), headerTxt.toString()); retorno = actionMapping.findForward("telaSucesso"); montarPaginaSucesso(httpServletRequest, "Txt Anal�tico gerado com sucesso.", "Gerar outro Relat�rio de OS Executadas por Prestadora de Servi�o ", "exibirGerarRelatorioOSExecutadasPrestadoraServicoAction.do?menu=sim"); } return retorno; } private String pesquisarGerenciaRegional(Integer idGerencia){ String descricao = ""; FiltroGerenciaRegional filtroGerenciaRegional = new FiltroGerenciaRegional(); filtroGerenciaRegional.adicionarParametro( new ParametroSimples(FiltroQuadra.ID,idGerencia)); Collection colecaoGerenciaRegional = this.getFachada().pesquisar(filtroGerenciaRegional,GerenciaRegional.class.getName()); if(colecaoGerenciaRegional != null && !colecaoGerenciaRegional.isEmpty()){ GerenciaRegional gerencia = (GerenciaRegional)Util.retonarObjetoDeColecao(colecaoGerenciaRegional); descricao = gerencia.getNome(); } return descricao; } private String pesquisarUnidadeNegocio(Integer idUnidadeNegocio){ String descricao = ""; FiltroUnidadeNegocio filtroUnidadeNegocio = new FiltroUnidadeNegocio(); filtroUnidadeNegocio.adicionarParametro( new ParametroSimples(FiltroUnidadeNegocio.ID,idUnidadeNegocio)); Collection colecaoUnidadeNegocio = this.getFachada().pesquisar(filtroUnidadeNegocio,UnidadeNegocio.class.getName()); if(colecaoUnidadeNegocio != null && !colecaoUnidadeNegocio.isEmpty()){ UnidadeNegocio unidadeNegocio = (UnidadeNegocio)Util.retonarObjetoDeColecao(colecaoUnidadeNegocio); descricao = unidadeNegocio.getNome(); } return descricao; } private String pesquisarLocalidade(Integer idLocalidade) { String descricao = ""; Fachada fachada = Fachada.getInstancia(); // Pesquisa a localidade na base FiltroLocalidade filtroLocalidade = new FiltroLocalidade(); filtroLocalidade.adicionarParametro(new ParametroSimples( FiltroLocalidade.ID, idLocalidade)); Collection<Localidade> localidadePesquisada = fachada.pesquisar( filtroLocalidade, Localidade.class.getName()); // obtem o imovel pesquisado if (localidadePesquisada != null && !localidadePesquisada.isEmpty()) { Localidade localidade = localidadePesquisada.iterator().next(); descricao = localidade.getDescricao(); } return descricao; } private String pesquisarRegiao(String[] idsRegiao){ String descricao = ""; if(idsRegiao != null && idsRegiao.length > 0 && !((String)idsRegiao[0]).equals("-1")){ Collection colecaoIds = new ArrayList(); for (int i = 0; i < idsRegiao.length; i++) { colecaoIds.add((String)idsRegiao[i]); } FiltroRegiao filtroRegiao = new FiltroRegiao(); filtroRegiao.adicionarParametro(new ParametroSimplesIn(FiltroRegiao.ID,colecaoIds)); Collection<Regiao> colecaoRegiao = this.getFachada().pesquisar(filtroRegiao,Regiao.class.getName()); if (colecaoRegiao == null || colecaoRegiao.isEmpty()) { Iterator iterator = colecaoRegiao.iterator(); int cont = 0; while (iterator.hasNext()) { Regiao regiao = (Regiao) iterator.next(); cont++; if(cont == 5){ descricao = descricao + "..."; break; } if(cont == 1){ descricao = regiao.getNome(); }else{ descricao = descricao + "," + regiao.getNome() ; } } } } return descricao; } private String pesquisarMicroregiao(String[] idsMicrorregiao){ String descricao = ""; if(idsMicrorregiao != null && idsMicrorregiao.length > 0 && !((String)idsMicrorregiao[0]).equals("-1")){ Collection colecaoIds = new ArrayList(); for (int i = 0; i < idsMicrorregiao.length; i++) { colecaoIds.add((String)idsMicrorregiao[i]); } FiltroMicrorregiao filtroMicrorregiao = new FiltroMicrorregiao(); filtroMicrorregiao.adicionarParametro(new ParametroSimplesIn(FiltroMicrorregiao.ID,colecaoIds)); Collection<Microrregiao> colecaoMicrorregiao = this.getFachada().pesquisar(filtroMicrorregiao,Microrregiao.class.getName()); if (colecaoMicrorregiao == null || colecaoMicrorregiao.isEmpty()) { Iterator iterator = colecaoMicrorregiao.iterator(); int cont = 0; while (iterator.hasNext()) { Microrregiao microrregiao = (Microrregiao) iterator.next(); cont++; if(cont == 5){ descricao = descricao + "..."; break; } if(cont == 1){ descricao = microrregiao.getNome(); }else{ descricao = descricao + "," + microrregiao.getNome() ; } } } } return descricao; } private String pesquisarMunicipio(String[] idsMunicipio){ String descricao = ""; if(idsMunicipio != null && idsMunicipio.length > 0 && !((String)idsMunicipio[0]).equals("-1")){ Collection colecaoIds = new ArrayList(); for (int i = 0; i < idsMunicipio.length; i++) { colecaoIds.add((String)idsMunicipio[i]); } FiltroMunicipio filtroMunicipio = new FiltroMunicipio(); filtroMunicipio.adicionarParametro(new ParametroSimplesIn(FiltroMunicipio.ID,colecaoIds)); Collection<Municipio> colecaoMunicipio = this.getFachada().pesquisar(filtroMunicipio,Municipio.class.getName()); if (colecaoMunicipio == null || colecaoMunicipio.isEmpty()) { Iterator iterator = colecaoMunicipio.iterator(); int cont = 0; while (iterator.hasNext()) { Municipio municipio = (Municipio) iterator.next(); cont++; if(cont == 5){ descricao = descricao + "..."; break; } if(cont == 1){ descricao = municipio.getNome(); }else{ descricao = descricao + "," + municipio.getNome() ; } } } } return descricao; } }