package gcom.gui.relatorio.atendimentopublico; import gcom.atendimentopublico.ordemservico.Equipe; import gcom.atendimentopublico.ordemservico.FiltroEquipe; import gcom.cadastro.unidade.FiltroUnidadeOrganizacional; import gcom.cadastro.unidade.UnidadeOrganizacional; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.atendimentopublico.ordemservico.GerarRelatorioAcompanhamentoExecucaoOSActionForm; import gcom.relatorio.ExibidorProcessamentoTarefaRelatorio; import gcom.relatorio.atendimentopublico.RelatorioAcompanhamentoExecucaoOS; import gcom.seguranca.acesso.usuario.Usuario; import gcom.tarefa.TarefaRelatorio; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.util.Calendar; import java.util.Collection; import java.util.Date; import java.util.GregorianCalendar; 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; /** * action respons�vel pela exibi��o do relat�rio de bairro manter * * @author S�vio Luiz * @created 11 de Julho de 2005 */ public class GerarRelatorioAcompanhamentoExecucaoOSAction extends ExibidorProcessamentoTarefaRelatorio { /** * < <Descri��o do m�todo>> * * @param actionMapping * Descri��o do par�metro * @param actionForm * Descri��o do par�metro * @param httpServletRequest * Descri��o do par�metro * @param httpServletResponse * Descri��o do par�metro * @return Descri��o do retorno */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { // cria a vari�vel de retorno ActionForward retorno = null; GerarRelatorioAcompanhamentoExecucaoOSActionForm form = (GerarRelatorioAcompanhamentoExecucaoOSActionForm) actionForm; // Recupera os valores do form para serem passados como par�metros para // o RelatorioAcompanhamentoExecucaoOS e nele executar a pesquisa // solicitada pelo usu�rio String origemServico = form.getOrigemServico(); String situacaoOS = form.getSituacaoOrdemServico(); String[] idsServicosTipos = form.getTipoServicoSelecionados(); String idUnidadeAtendimento = form.getIdUnidadeAtendimento(); String idUnidadeAtual = form.getIdUnidadeAtual(); String idUnidadeEncerramento = form.getIdUnidadeEncerramento(); String periodoAtendimentoInicial = form.getPeriodoAtendimentoInicial(); String periodoAtendimentoFinal = form.getPeriodoAtendimentoFinal(); String periodoEncerramentoInicial = form.getPeriodoEncerramentoInicial(); String periodoEncerramentoFinal = form.getPeriodoEncerramentoFinal(); String idEquipeProgramacao = form.getIdEquipeProgramacao(); String idEquipeExecucao = form.getIdEquipeExecucao(); String tipoOrdenacao = form.getTipoOrdenacao(); if(periodoAtendimentoInicial != null && !periodoAtendimentoInicial.equals("")){ if(periodoAtendimentoFinal==null || periodoAtendimentoFinal.equals("")){ throw new ActionServletException("atencao.filtrar_data_final_obrigatorio_quando_inicial",null,"atendimento"); }/*else{ Date ini = Util.converteStringParaDate(periodoAtendimentoInicial); Calendar calendario = new GregorianCalendar(); calendario.setTime(ini); Integer numeroDias = new Integer(Util.obterUltimoDiaMes(calendario.get(Calendar.MONTH)+1, calendario.get(Calendar.YEAR))); numeroDias = new Integer(numeroDias-1); Date dataLimite = Util.subtrairNumeroDiasDeUmaData(Util.converteStringParaDate(periodoAtendimentoFinal),numeroDias); if(dataLimite.after(ini)){ throw new ActionServletException("atencao.filtrar_intervalo_limite",null,"atendimento"); } }*/ } if(periodoEncerramentoInicial != null && !periodoEncerramentoInicial.equals("")){ if(periodoEncerramentoFinal==null || periodoEncerramentoFinal.equals("")){ throw new ActionServletException("atencao.filtrar_data_final_obrigatorio_quando_inicial",null,"encerramento"); }else{ Date ini = Util.converteStringParaDate(periodoEncerramentoInicial); Calendar calendario = new GregorianCalendar(); calendario.setTime(ini); Integer numeroDias = new Integer(Util.obterUltimoDiaMes(calendario.get(Calendar.MONTH)+1, calendario.get(Calendar.YEAR))); numeroDias = new Integer(numeroDias-1); Date dataLimite = Util.subtrairNumeroDiasDeUmaData(Util.converteStringParaDate(periodoEncerramentoFinal),numeroDias); if(dataLimite.after(ini)){ throw new ActionServletException("atencao.filtrar_intervalo_limite",null,"encerramento"); } } } // Formata as datas para Date Date periodoAtendimentoInicialFormatado = null; if (periodoAtendimentoInicial != null && !periodoAtendimentoInicial.trim().equals("")) { periodoAtendimentoInicialFormatado = Util .converteStringParaDate(periodoAtendimentoInicial); } Date periodoAtendimentoFinalFormatado = null; if (periodoAtendimentoFinal != null && !periodoAtendimentoFinal.trim().equals("")) { periodoAtendimentoFinalFormatado = Util .converteStringParaDate(periodoAtendimentoFinal); } Date periodoEncerramentoInicialFormatado = null; if (periodoEncerramentoInicial != null && !periodoEncerramentoInicial.trim().equals("")) { periodoEncerramentoInicialFormatado = Util .converteStringParaDate(periodoEncerramentoInicial); } Date periodoEncerramentoFinalFormatado = null; if (periodoEncerramentoFinal != null && !periodoEncerramentoFinal.trim().equals("")) { periodoEncerramentoFinalFormatado = Util .converteStringParaDate(periodoEncerramentoFinal); } validarGeracaoRelatorio(origemServico, situacaoOS, idsServicosTipos, idUnidadeAtendimento, idUnidadeAtual, idUnidadeEncerramento, periodoAtendimentoInicialFormatado, periodoAtendimentoFinalFormatado, periodoEncerramentoInicialFormatado, periodoEncerramentoFinalFormatado, idEquipeProgramacao, idEquipeExecucao); String tipoRelatorio = httpServletRequest.getParameter("tipoRelatorio"); RelatorioAcompanhamentoExecucaoOS relatorioAcompanhamentoExecucaoOS = new RelatorioAcompanhamentoExecucaoOS( (Usuario) (httpServletRequest.getSession(false)) .getAttribute("usuarioLogado")); relatorioAcompanhamentoExecucaoOS.addParametro("origemServico", origemServico); relatorioAcompanhamentoExecucaoOS .addParametro("situacaoOS", situacaoOS); relatorioAcompanhamentoExecucaoOS.addParametro("idsServicosTipos", idsServicosTipos); relatorioAcompanhamentoExecucaoOS.addParametro("idUnidadeAtendimento", idUnidadeAtendimento); relatorioAcompanhamentoExecucaoOS.addParametro("idUnidadeAtual", idUnidadeAtual); relatorioAcompanhamentoExecucaoOS.addParametro("idUnidadeEncerramento", idUnidadeEncerramento); relatorioAcompanhamentoExecucaoOS .addParametro("periodoAtendimentoInicial", periodoAtendimentoInicialFormatado); relatorioAcompanhamentoExecucaoOS.addParametro( "periodoAtendimentoFinal", periodoAtendimentoFinalFormatado); relatorioAcompanhamentoExecucaoOS.addParametro( "periodoEncerramentoInicial", periodoEncerramentoInicialFormatado); relatorioAcompanhamentoExecucaoOS.addParametro( "periodoEncerramentoFinal", periodoEncerramentoFinalFormatado); relatorioAcompanhamentoExecucaoOS.addParametro("idEquipeProgramacao", idEquipeProgramacao); relatorioAcompanhamentoExecucaoOS.addParametro("idEquipeExecucao", idEquipeExecucao); relatorioAcompanhamentoExecucaoOS.addParametro("tipoOrdenacao", tipoOrdenacao); if (tipoRelatorio == null) { tipoRelatorio = TarefaRelatorio.TIPO_PDF + ""; } relatorioAcompanhamentoExecucaoOS.addParametro("tipoFormatoRelatorio", Integer.parseInt(tipoRelatorio)); retorno = processarExibicaoRelatorio(relatorioAcompanhamentoExecucaoOS, tipoRelatorio, httpServletRequest, httpServletResponse, actionMapping); // devolve o mapeamento contido na vari�vel retorno return retorno; } private void validarGeracaoRelatorio(String origemServico, String situacaoOS, String[] idsServicosTipos, String idUnidadeAtendimento, String idUnidadeAtual, String idUnidadeEncerramento, Date periodoAtendimentoInicial, Date periodoAtendimentoFinal, Date periodoEncerramentoInicial, Date periodoEncerramentoFinal, String idEquipeProgramacao, String idEquipeExecucao) { Fachada fachada = Fachada.getInstancia(); FiltroUnidadeOrganizacional filtroUnidadeOrganizacional = null; Collection colecaoUnidade = null; //[FS0006] // if((idUnidadeAtendimento == null || idUnidadeAtendimento.equals("")) // && (idUnidadeAtual == null || idUnidadeAtual.equals(""))){ // throw new ActionServletException( // "atencao.sem.unidade.atendimento.nem.atual", null); // } // Verifica se a unidade de atendimento existe if (idUnidadeAtendimento != null && !idUnidadeAtendimento.equals("")) { filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional(); filtroUnidadeOrganizacional .adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.ID, idUnidadeAtendimento)); colecaoUnidade = fachada.pesquisar(filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName()); if (colecaoUnidade == null || colecaoUnidade.isEmpty()) { throw new ActionServletException( "atencao.pesquisa_inexistente", null, "Unidade de Atendimento"); } } // Verifica se a unidade atual existe if (idUnidadeAtual != null && !idUnidadeAtual.equals("")) { colecaoUnidade = null; filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional(); filtroUnidadeOrganizacional .adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.ID, idUnidadeAtual)); colecaoUnidade = fachada.pesquisar(filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName()); if (colecaoUnidade == null || colecaoUnidade.isEmpty()) { throw new ActionServletException( "atencao.pesquisa_inexistente", null, "Unidade Atual"); } } // Verifica se a unidade de encerramento existe if (idUnidadeEncerramento != null && !idUnidadeEncerramento.equals("")) { colecaoUnidade = null; filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional(); filtroUnidadeOrganizacional .adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.ID, idUnidadeEncerramento)); colecaoUnidade = fachada.pesquisar(filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName()); if (colecaoUnidade == null || colecaoUnidade.isEmpty()) { throw new ActionServletException( "atencao.pesquisa_inexistente", null, "Unidade de Encerramento"); } } FiltroEquipe filtroEquipe = null; Collection colecaoEquipe = null; // Verifica se a equipe de programa��o existe if (idEquipeProgramacao != null && !idEquipeProgramacao.equals("")) { filtroEquipe = new FiltroEquipe(); filtroEquipe.adicionarParametro(new ParametroSimples( FiltroEquipe.ID, idEquipeProgramacao)); colecaoEquipe = fachada.pesquisar(filtroEquipe, Equipe.class .getName()); if (colecaoEquipe == null || colecaoEquipe.isEmpty()) { throw new ActionServletException( "atencao.pesquisa_inexistente", null, "Equipe de Programa��o"); } } // Verifica se a equipe de execu��o existe if (idEquipeExecucao != null && !idEquipeExecucao.equals("")) { colecaoEquipe = null; filtroEquipe = new FiltroEquipe(); filtroEquipe.adicionarParametro(new ParametroSimples( FiltroEquipe.ID, idEquipeExecucao)); colecaoEquipe = fachada.pesquisar(filtroEquipe, Equipe.class .getName()); if (colecaoEquipe == null || colecaoEquipe.isEmpty()) { throw new ActionServletException( "atencao.pesquisa_inexistente", null, "Equipe de Execu��o"); } } // Verifica se a pesquisa retorno algum resultado int qtdeResultados = fachada .pesquisarOSGerarRelatorioAcompanhamentoExecucaoCount( origemServico, situacaoOS, idsServicosTipos, idUnidadeAtendimento, idUnidadeAtual, idUnidadeEncerramento, periodoAtendimentoInicial, periodoAtendimentoFinal, periodoEncerramentoInicial, periodoEncerramentoFinal, idEquipeProgramacao, idEquipeExecucao); if (qtdeResultados == 0) { // Caso a pesquisa n�o retorne nenhum resultado comunica ao usu�rio; throw new ActionServletException("atencao.pesquisa.nenhumresultado"); } } }