package gcom.gui.atendimentopublico.registroatendimento; import gcom.atendimentopublico.registroatendimento.RegistroAtendimento; import gcom.atendimentopublico.registroatendimento.RegistroAtendimentoSolicitante; import gcom.atendimentopublico.registroatendimento.RegistroAtendimentoUnidade; import gcom.atendimentopublico.registroatendimento.bean.FiltrarRegistroAtendimentoHelper; import gcom.atendimentopublico.registroatendimento.bean.ObterDescricaoSituacaoRAHelper; import gcom.atendimentopublico.registroatendimento.bean.RAFiltroHelper; import gcom.cadastro.geografico.BairroArea; import gcom.cadastro.imovel.Imovel; import gcom.cadastro.unidade.UnidadeOrganizacional; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.ConstantesSistema; import gcom.util.Util; 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 javax.servlet.http.HttpSession; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class PesquisarRegistroAtendimentoAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { // Seta o mapeamento de retorno ActionForward retorno = actionMapping.findForward("exibirResultadoPesquisaRegistroAtendimento"); // Instacia a fachada Fachada fachada = Fachada.getInstancia(); // Sess�o HttpSession sessao = httpServletRequest.getSession(false); PesquisarRegistroAtendimentoActionForm pesquisarRegistroAtendimentoActionForm = (PesquisarRegistroAtendimentoActionForm) actionForm; boolean parametroInformado = false; RegistroAtendimento ra = new RegistroAtendimento(); FiltrarRegistroAtendimentoHelper filtroRA = new FiltrarRegistroAtendimentoHelper(); // Numero RA if (pesquisarRegistroAtendimentoActionForm.getNumeroRA() != null && !pesquisarRegistroAtendimentoActionForm.getNumeroRA().equals("")) { ra.setId(new Integer(pesquisarRegistroAtendimentoActionForm.getNumeroRA())); parametroInformado = true; } //Numero Protocolo Atendimento RegistroAtendimentoSolicitante registroAtendimentoSolicitante = null; if (pesquisarRegistroAtendimentoActionForm.getNumeroProtocoloAtendimento() != null && !pesquisarRegistroAtendimentoActionForm.getNumeroProtocoloAtendimento().equals("")) { registroAtendimentoSolicitante = new RegistroAtendimentoSolicitante(); registroAtendimentoSolicitante.setNumeroProtocoloAtendimento(pesquisarRegistroAtendimentoActionForm .getNumeroProtocoloAtendimento()); parametroInformado = true; } //N�mero Manual if (pesquisarRegistroAtendimentoActionForm.getNumeroRAManual() != null && !pesquisarRegistroAtendimentoActionForm.getNumeroRAManual().equals("")) { //String[] arrayNumeroRAManual = pesquisarRegistroAtendimentoActionForm.getNumeroRAManual().split("-"); String[] arrayNumeroRAManual = new String[2]; arrayNumeroRAManual[0] = pesquisarRegistroAtendimentoActionForm.getNumeroRAManual().substring(0, pesquisarRegistroAtendimentoActionForm.getNumeroRAManual().length() - 1); arrayNumeroRAManual[1] = pesquisarRegistroAtendimentoActionForm.getNumeroRAManual().substring(pesquisarRegistroAtendimentoActionForm.getNumeroRAManual().length() - 1, pesquisarRegistroAtendimentoActionForm.getNumeroRAManual().length()); Integer numeracao = new Integer(arrayNumeroRAManual[0]); Integer digitoModulo11 = new Integer(arrayNumeroRAManual[1]); //Caso o d�gito verificador do n�mero informado n�o bata com o d�gito calculado com o m�dulo 11 if (!digitoModulo11.equals(Util.obterDigitoVerificadorModulo11(Long.parseLong(numeracao.toString())))){ throw new ActionServletException("atencao.numeracao_ra_manual_digito_invalido"); } //ra.setManual(Util.obterNumeracaoRAManual(pesquisarRegistroAtendimentoActionForm.getNumeroRAManual())); ra.setManual(new Integer(pesquisarRegistroAtendimentoActionForm.getNumeroRAManual())); parametroInformado = true; } // Quantidade RA Reiteradas Integer qtdeRAReiteradasInicial = null; Integer qtdeRAReiteradasFinal = null; if (pesquisarRegistroAtendimentoActionForm.getQuantidadeRAReiteradasInicial() != null && !pesquisarRegistroAtendimentoActionForm.getQuantidadeRAReiteradasInicial().equals("")) { qtdeRAReiteradasInicial = new Integer(pesquisarRegistroAtendimentoActionForm.getQuantidadeRAReiteradasInicial()); qtdeRAReiteradasFinal = new Integer(pesquisarRegistroAtendimentoActionForm.getQuantidadeRAReiteradasFinal()); parametroInformado = true; } // Imovel if (pesquisarRegistroAtendimentoActionForm.getMatriculaImovel() != null && !pesquisarRegistroAtendimentoActionForm.getMatriculaImovel().equals("")) { Imovel imovel = new Imovel(); imovel.setId(new Integer(pesquisarRegistroAtendimentoActionForm.getMatriculaImovel())); ra.setImovel(imovel); parametroInformado = true; } // Situa��o if (pesquisarRegistroAtendimentoActionForm.getSituacao() != null && !pesquisarRegistroAtendimentoActionForm.getSituacao().equals("")) { ra.setCodigoSituacao(new Short(pesquisarRegistroAtendimentoActionForm.getSituacao())); parametroInformado = true; } // Tipo Especifica��o Collection<Integer> colecaoSolicitacaoTipoEspecificacao = new ArrayList(); if (pesquisarRegistroAtendimentoActionForm.getEspecificacao() != null && pesquisarRegistroAtendimentoActionForm.getEspecificacao().length > 0) { String[] tipoSolicitacaoEspecificacao = pesquisarRegistroAtendimentoActionForm.getEspecificacao(); for (int i = 0; i < tipoSolicitacaoEspecificacao.length; i++) { if (new Integer(tipoSolicitacaoEspecificacao[i]).intValue() != ConstantesSistema.NUMERO_NAO_INFORMADO) { colecaoSolicitacaoTipoEspecificacao.add(new Integer(tipoSolicitacaoEspecificacao[i])); // passar a cole��o de especifica��o por par�metro parametroInformado = true; } } } // Tipo Solicita��o Collection<Integer> colecaoSolicitacao = new ArrayList(); if (pesquisarRegistroAtendimentoActionForm.getTipoSolicitacao() != null && pesquisarRegistroAtendimentoActionForm.getTipoSolicitacao().length > 0) { String[] tipoSolicitacao = pesquisarRegistroAtendimentoActionForm.getTipoSolicitacao(); for (int i = 0; i < tipoSolicitacao.length; i++) { if (new Integer(tipoSolicitacao[i]).intValue() != ConstantesSistema.NUMERO_NAO_INFORMADO) { colecaoSolicitacao.add(new Integer(tipoSolicitacao[i])); // passar a cole��o de especifica��o por par�metro parametroInformado = true; } } } // Data de Atendimento Date dataAtendimentoInicial = null; Date dataAtendimentoFinal = null; if (pesquisarRegistroAtendimentoActionForm.getPeriodoAtendimentoInicial() != null && !pesquisarRegistroAtendimentoActionForm.getPeriodoAtendimentoInicial().equals("")) { dataAtendimentoInicial = Util.converteStringParaDate(pesquisarRegistroAtendimentoActionForm.getPeriodoAtendimentoInicial()); dataAtendimentoInicial = Util.formatarDataInicial(dataAtendimentoInicial); dataAtendimentoFinal = null; if (pesquisarRegistroAtendimentoActionForm.getPeriodoAtendimentoFinal() != null && !pesquisarRegistroAtendimentoActionForm.getPeriodoAtendimentoFinal().equals("")) { dataAtendimentoFinal = Util.converteStringParaDate(pesquisarRegistroAtendimentoActionForm.getPeriodoAtendimentoFinal()); dataAtendimentoFinal = Util.adaptarDataFinalComparacaoBetween(dataAtendimentoFinal); } else { dataAtendimentoFinal = new Date(); dataAtendimentoFinal = Util.formatarDataFinal(dataAtendimentoFinal); } //[FS005] Verificar data final menor que data inicial int qtdeDias = Util.obterQuantidadeDiasEntreDuasDatas(dataAtendimentoInicial, dataAtendimentoFinal); if (qtdeDias < 0) { throw new ActionServletException("atencao.filtrar_data_final_maior_que_inicial"); } // passar as datas de atendimento por par�metro parametroInformado = true; } else { if (pesquisarRegistroAtendimentoActionForm .getPeriodoAtendimentoFinal() != null && !pesquisarRegistroAtendimentoActionForm .getPeriodoAtendimentoFinal().equals("")) { dataAtendimentoFinal = Util .converteStringParaDate(pesquisarRegistroAtendimentoActionForm .getPeriodoAtendimentoFinal()); dataAtendimentoFinal = Util .formatarDataFinal(dataAtendimentoFinal); dataAtendimentoInicial = Util .converteStringParaDate("01/01/1900"); dataAtendimentoInicial = Util .formatarDataInicial(dataAtendimentoInicial); // passar as datas de atendimento por par�metro parametroInformado = true; } } // Data de Encerramento Date dataEncerramentoInicial = null; Date dataEncerramentoFinal = null; if (pesquisarRegistroAtendimentoActionForm.getPeriodoEncerramentoInicial() != null && !pesquisarRegistroAtendimentoActionForm.getPeriodoEncerramentoInicial().equals("")){ dataEncerramentoInicial = Util.converteStringParaDate(pesquisarRegistroAtendimentoActionForm.getPeriodoEncerramentoInicial()); dataEncerramentoInicial = Util.formatarDataInicial(dataEncerramentoInicial); dataEncerramentoFinal = null; if (pesquisarRegistroAtendimentoActionForm.getPeriodoEncerramentoFinal() != null && !pesquisarRegistroAtendimentoActionForm.getPeriodoEncerramentoFinal().equals("") ) { dataEncerramentoFinal = Util.converteStringParaDate(pesquisarRegistroAtendimentoActionForm.getPeriodoEncerramentoFinal()); dataEncerramentoFinal = Util.adaptarDataFinalComparacaoBetween(dataEncerramentoFinal); } else { dataEncerramentoFinal = new Date(); dataEncerramentoFinal = Util.formatarDataInicial(dataEncerramentoFinal); } //[FS005] Verificar data final menor que data inicial int qtdeDias = Util.obterQuantidadeDiasEntreDuasDatas(dataEncerramentoInicial, dataEncerramentoFinal); if (qtdeDias < 0) { throw new ActionServletException("atencao.filtrar_data_final_maior_que_inicial"); } // passar as datas de encerramento por par�metro parametroInformado = true; } else { if (pesquisarRegistroAtendimentoActionForm .getPeriodoEncerramentoFinal() != null && !pesquisarRegistroAtendimentoActionForm .getPeriodoEncerramentoFinal().equals("")) { dataEncerramentoFinal = Util .converteStringParaDate(pesquisarRegistroAtendimentoActionForm .getPeriodoEncerramentoFinal()); dataAtendimentoFinal = Util .formatarDataFinal(dataEncerramentoFinal); dataEncerramentoInicial = Util .converteStringParaDate("01/01/1900"); dataEncerramentoInicial = Util .formatarDataInicial(dataAtendimentoInicial); // passar as datas de atendimento por par�metro parametroInformado = true; } } //Registro Atendimento Unidade RegistroAtendimentoUnidade registroAtendimentoUnidade = null; Usuario usuario = null; if (pesquisarRegistroAtendimentoActionForm.getLoginUsuario() != null && !pesquisarRegistroAtendimentoActionForm.getLoginUsuario().equals("")) { usuario = new Usuario(); usuario.setLogin(pesquisarRegistroAtendimentoActionForm.getLoginUsuario()); registroAtendimentoUnidade = new RegistroAtendimentoUnidade(); registroAtendimentoUnidade.setUsuario(usuario); // passar cole��o de registro atendimento unidades(usu�rio) por par�metro parametroInformado = true; } // Unidade de Atendimento UnidadeOrganizacional unidadeAtendimento = null; if (pesquisarRegistroAtendimentoActionForm.getUnidadeAtendimentoId() != null && !pesquisarRegistroAtendimentoActionForm.getUnidadeAtendimentoId().equals("")) { unidadeAtendimento = new UnidadeOrganizacional(); unidadeAtendimento.setId(new Integer(pesquisarRegistroAtendimentoActionForm.getUnidadeAtendimentoId())); // passar cole��o de unidades por par�metro parametroInformado = true; } // Unidade de Atual UnidadeOrganizacional unidadeAtual = null; if (pesquisarRegistroAtendimentoActionForm.getUnidadeAtualId() != null && !pesquisarRegistroAtendimentoActionForm.getUnidadeAtualId().equals("")) { unidadeAtual = new UnidadeOrganizacional(); unidadeAtual.setId(new Integer(pesquisarRegistroAtendimentoActionForm.getUnidadeAtualId())); // passar cole��o de unidades por par�metro parametroInformado = true; } // Unidade de Atual UnidadeOrganizacional unidadeSuperior = null; if (pesquisarRegistroAtendimentoActionForm.getUnidadeSuperiorId() != null && !pesquisarRegistroAtendimentoActionForm.getUnidadeSuperiorId().equals("")) { unidadeSuperior = new UnidadeOrganizacional(); unidadeSuperior.setId(new Integer(pesquisarRegistroAtendimentoActionForm.getUnidadeSuperiorId())); // passar cole��o de unidades por par�metro parametroInformado = true; } // Munic�pio String municipioId = null; if (pesquisarRegistroAtendimentoActionForm.getMunicipioId() != null && !pesquisarRegistroAtendimentoActionForm.getMunicipioId().equals("")) { municipioId = pesquisarRegistroAtendimentoActionForm.getMunicipioId(); parametroInformado = true; } // Bairro String bairroId = null; String bairroCodigo = null; if (pesquisarRegistroAtendimentoActionForm.getBairroCodigo() != null && !pesquisarRegistroAtendimentoActionForm.getBairroCodigo().equals("")) { //[FS009] Verificar informa��o do munic�pio if (pesquisarRegistroAtendimentoActionForm.getMunicipioId() == null || pesquisarRegistroAtendimentoActionForm.getMunicipioId().equals("")) { throw new ActionServletException("atencao.filtrar_informar_municipio"); } bairroCodigo = pesquisarRegistroAtendimentoActionForm.getBairroCodigo(); if (pesquisarRegistroAtendimentoActionForm.getBairroId() != null && !pesquisarRegistroAtendimentoActionForm.getBairroId().equals("")){ bairroId = pesquisarRegistroAtendimentoActionForm.getBairroId(); } parametroInformado = true; } // Bairro �rea if (new Integer(pesquisarRegistroAtendimentoActionForm.getAreaBairroId()).intValue() != ConstantesSistema.NUMERO_NAO_INFORMADO) { BairroArea bairroArea = new BairroArea(); bairroArea.setId(new Integer(pesquisarRegistroAtendimentoActionForm.getAreaBairroId())); ra.setBairroArea(bairroArea); parametroInformado = true; } // Logradouro String logradouroId = null; if (pesquisarRegistroAtendimentoActionForm.getLogradouroId() != null && !pesquisarRegistroAtendimentoActionForm.getLogradouroId().equals("")) { logradouroId = pesquisarRegistroAtendimentoActionForm.getLogradouroId(); parametroInformado = true; } // Filtra Registro Atendimento if (parametroInformado) { Collection<RegistroAtendimento> colecaoRegistroAtendimento = new ArrayList(); filtroRA.setRegistroAtendimento(ra); filtroRA.setUnidadeAtendimento(unidadeAtendimento); filtroRA.setUnidadeAtual(unidadeAtual); filtroRA.setUnidadeSuperior(unidadeSuperior); filtroRA.setDataAtendimentoInicial(dataAtendimentoInicial); filtroRA.setDataAtendimentoFinal(dataAtendimentoFinal); filtroRA.setDataEncerramentoInicial(dataEncerramentoInicial); filtroRA.setDataEncerramentoFinal(dataEncerramentoFinal); filtroRA.setColecaoTipoSolicitacaoEspecificacao(colecaoSolicitacaoTipoEspecificacao); filtroRA.setColecaoTipoSolicitacao(colecaoSolicitacao); filtroRA.setMunicipioId(municipioId); filtroRA.setBairroId(bairroId); filtroRA.setBairroCodigo(bairroCodigo); filtroRA.setLogradouroId(logradouroId); filtroRA.setQuantidadeRAReiteradasIncial(qtdeRAReiteradasInicial); filtroRA.setQuantidadeRAReiteradasFinal(qtdeRAReiteradasFinal); filtroRA.setNumeroPagina(new Integer(ConstantesSistema.NUMERO_NAO_INFORMADO)); filtroRA.setRegistroAtendimentoSolicitante(registroAtendimentoSolicitante); Integer totalRegistros = fachada.filtrarRegistroAtendimento(filtroRA).size(); retorno = this.controlarPaginacao(httpServletRequest, retorno, totalRegistros); filtroRA.setNumeroPagina(((Integer) httpServletRequest.getAttribute("numeroPaginasPesquisa"))); colecaoRegistroAtendimento = fachada.filtrarRegistroAtendimento(filtroRA); if (colecaoRegistroAtendimento != null) { // Carrega Cole��o Collection colecaoRAHelper = loadColecaoRAHelper(colecaoRegistroAtendimento); sessao.setAttribute("colecaoRAHelper", colecaoRAHelper); } else { // Nenhum resultado throw new ActionServletException("atencao.pesquisa.nenhumresultado"); } } else { throw new ActionServletException("atencao.filtrar_informar_um_filtro"); } return retorno; } /** * Carrega cole��o de registro atendimento, situa��o abreviada e unidade atual no * objeto facilitador * * @author Leonardo Regis * @date 10/08/2006 * * @param colecaoRegistroAtendimento * @return */ private Collection loadColecaoRAHelper(Collection<RegistroAtendimento> colecaoRegistroAtendimento) { Fachada fachada = Fachada.getInstancia(); Collection colecaoRAHelper = new ArrayList(); UnidadeOrganizacional unidadeAtual = null; ObterDescricaoSituacaoRAHelper situacao = null; RAFiltroHelper helper = null; for (Iterator iter = colecaoRegistroAtendimento.iterator(); iter.hasNext();) { RegistroAtendimento registroAtendimento = (RegistroAtendimento) iter.next(); situacao = fachada.obterDescricaoSituacaoRA(registroAtendimento.getId()); unidadeAtual = fachada.obterUnidadeAtualRA(registroAtendimento.getId()); helper = new RAFiltroHelper(); helper.setRegistroAtendimento(registroAtendimento); helper.setUnidadeAtual(unidadeAtual); helper.setSituacao(situacao.getDescricaoAbreviadaSituacao()); colecaoRAHelper.add(helper); } return colecaoRAHelper; } }