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.FiltroUsuario;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.GregorianCalendar;
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 FiltrarRegistroAtendimentoAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping.findForward("manterRegistroAtendimento");
// Instacia a fachada
Fachada fachada = Fachada.getInstancia();
// Sess�o
HttpSession sessao = httpServletRequest.getSession(false);
FiltrarRegistroAtendimentoActionForm filtrarRegistroAtendimentoActionForm =
(FiltrarRegistroAtendimentoActionForm) actionForm;
boolean parametroInformado = false;
// Valida��o solicitada por Leonardo Vieira sem caso de uso.
// Executor: Marcio Roberto
if ((filtrarRegistroAtendimentoActionForm.getNumeroRA() == null ||
filtrarRegistroAtendimentoActionForm.getNumeroRA().equals("")) &&
(filtrarRegistroAtendimentoActionForm.getMatriculaImovel() == null ||
filtrarRegistroAtendimentoActionForm.getMatriculaImovel().equals(""))&&
(filtrarRegistroAtendimentoActionForm.getNumeroRAManual() == null ||
filtrarRegistroAtendimentoActionForm.getNumeroRAManual().equals("")) &&
(filtrarRegistroAtendimentoActionForm.getNumeroProtocoloAtendimento() == null ||
filtrarRegistroAtendimentoActionForm.getNumeroProtocoloAtendimento().equals(""))) {
String dtAtendimentoIni = filtrarRegistroAtendimentoActionForm.getPeriodoAtendimentoInicial();
String dtAtendimentoFinal = filtrarRegistroAtendimentoActionForm.getPeriodoAtendimentoFinal();
String dtEncerramentoIni = filtrarRegistroAtendimentoActionForm.getPeriodoEncerramentoInicial();
String dtEncerramentoFinal = filtrarRegistroAtendimentoActionForm.getPeriodoEncerramentoFinal();
String dtTramitacaoIni = filtrarRegistroAtendimentoActionForm.getPeriodoTramitacaoInicial();
String dtTramitacaoFinal = filtrarRegistroAtendimentoActionForm.getPeriodoTramitacaoFinal();
if((dtAtendimentoIni==null || dtAtendimentoIni.equals(""))
&& (dtAtendimentoFinal==null || dtAtendimentoFinal.equals(""))){
if((dtEncerramentoIni==null || dtEncerramentoIni.equals(""))
&& (dtEncerramentoFinal==null || dtEncerramentoFinal.equals(""))){
if((dtTramitacaoIni==null || dtTramitacaoIni.equals(""))
&& (dtTramitacaoFinal==null || dtTramitacaoFinal.equals(""))){
throw new ActionServletException("atencao.filtrar_intervalo_datas_obrigatorio");
}
}
}
if(dtAtendimentoIni != null && !dtAtendimentoIni.equals("")){
if(dtAtendimentoFinal==null || dtAtendimentoFinal.equals("")){
throw new ActionServletException("atencao.filtrar_data_final_obrigatorio_quando_inicial",null,"atendimento");
}else{
Date ini = Util.converteStringParaDate(dtAtendimentoIni);
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(dtAtendimentoFinal),numeroDias);
if(dataLimite.after(ini)){
throw new ActionServletException("atencao.filtrar_intervalo_limite",null,"atendimento");
}
}
}
if(dtEncerramentoIni != null && !dtEncerramentoIni.equals("")){
if(dtEncerramentoFinal==null || dtEncerramentoFinal.equals("")){
throw new ActionServletException("atencao.filtrar_data_final_obrigatorio_quando_inicial",null,"encerramento");
}else{
Date ini = Util.converteStringParaDate(dtEncerramentoIni);
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(dtEncerramentoFinal),numeroDias);
if(dataLimite.after(ini)){
throw new ActionServletException("atencao.filtrar_intervalo_limite",null,"encerramento");
}
}
}
if(dtTramitacaoIni != null && !dtTramitacaoIni.equals("")){
if(dtTramitacaoFinal==null || dtTramitacaoFinal.equals("")){
throw new ActionServletException("atencao.filtrar_data_final_obrigatorio_quando_inicial",null,"tramita��o");
}else{
Date ini = Util.converteStringParaDate(dtTramitacaoIni);
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(dtTramitacaoFinal),numeroDias);
if(dataLimite.after(ini)){
throw new ActionServletException("atencao.filtrar_intervalo_limite",null,"tramita��o");
}
}
}
}
RegistroAtendimento ra = new RegistroAtendimento();
FiltrarRegistroAtendimentoHelper filtroRA = new FiltrarRegistroAtendimentoHelper();
// Numero RA
if (filtrarRegistroAtendimentoActionForm.getNumeroRA() != null &&
!filtrarRegistroAtendimentoActionForm.getNumeroRA().equals("")) {
ra.setId(new Integer(filtrarRegistroAtendimentoActionForm.getNumeroRA()));
parametroInformado = true;
}
//Numero Protocolo Atendimento
RegistroAtendimentoSolicitante registroAtendimentoSolicitante = null;
if (filtrarRegistroAtendimentoActionForm.getNumeroProtocoloAtendimento() != null &&
!filtrarRegistroAtendimentoActionForm.getNumeroProtocoloAtendimento().equals("")) {
registroAtendimentoSolicitante = new RegistroAtendimentoSolicitante();
registroAtendimentoSolicitante.setNumeroProtocoloAtendimento(filtrarRegistroAtendimentoActionForm
.getNumeroProtocoloAtendimento());
parametroInformado = true;
}
//N�mero Manual
if (filtrarRegistroAtendimentoActionForm.getNumeroRAManual() != null &&
!filtrarRegistroAtendimentoActionForm.getNumeroRAManual().equals("")) {
ra.setManual(Util.obterNumeracaoRAManual(filtrarRegistroAtendimentoActionForm.getNumeroRAManual()));
parametroInformado = true;
}
// Quantidade RA Reiteradas
Integer qtdeRAReiteradasInicial = null;
Integer qtdeRAReiteradasFinal = null;
if (filtrarRegistroAtendimentoActionForm.getQuantidadeRAReiteradasInicial() != null &&
!filtrarRegistroAtendimentoActionForm.getQuantidadeRAReiteradasInicial().equals("")) {
qtdeRAReiteradasInicial = new Integer(filtrarRegistroAtendimentoActionForm.getQuantidadeRAReiteradasInicial());
qtdeRAReiteradasFinal = new Integer(filtrarRegistroAtendimentoActionForm.getQuantidadeRAReiteradasFinal());
parametroInformado = true;
}
// Imovel
if (filtrarRegistroAtendimentoActionForm.getMatriculaImovel() != null &&
!filtrarRegistroAtendimentoActionForm.getMatriculaImovel().equals("")) {
Imovel imovel = new Imovel();
imovel.setId(new Integer(filtrarRegistroAtendimentoActionForm.getMatriculaImovel()));
ra.setImovel(imovel);
parametroInformado = true;
}
// Situa��o
if (filtrarRegistroAtendimentoActionForm.getSituacao() != null &&
!filtrarRegistroAtendimentoActionForm.getSituacao().equals("")) {
ra.setCodigoSituacao(new Short(filtrarRegistroAtendimentoActionForm.getSituacao()));
parametroInformado = true;
}
// RAs com coordenadas sem logradouro identificado
if (filtrarRegistroAtendimentoActionForm.getIndicCoordSemLogr() != null &&
!filtrarRegistroAtendimentoActionForm.getIndicCoordSemLogr().equals("")) {
ra.setIndicadorCoordenadaSemLogradouro(new Short(filtrarRegistroAtendimentoActionForm.getIndicCoordSemLogr()));
parametroInformado = true;
}
//Tipo Solicita��o
Collection<Integer> colecaoSolicitacaoTipoSolicitacao = new ArrayList();
if (filtrarRegistroAtendimentoActionForm.getTipoSolicitacao() != null &&
filtrarRegistroAtendimentoActionForm.getTipoSolicitacao().length > 0) {
String[] tipoSolicitacao = filtrarRegistroAtendimentoActionForm.getTipoSolicitacao();
for (int i = 0; i < tipoSolicitacao.length; i++) {
if (new Integer(tipoSolicitacao[i]).intValue() != ConstantesSistema.NUMERO_NAO_INFORMADO) {
colecaoSolicitacaoTipoSolicitacao.add(new Integer(tipoSolicitacao[i]));
// passar a cole��o de especifica��o por par�metro
parametroInformado = true;
}
}
}
// Tipo Especifica��o
Collection<Integer> colecaoSolicitacaoTipoEspecificacao = new ArrayList();
if (colecaoSolicitacaoTipoSolicitacao.size() < 2 &&
filtrarRegistroAtendimentoActionForm.getEspecificacao() != null &&
filtrarRegistroAtendimentoActionForm.getEspecificacao().length > 0) {
String[] tipoSolicitacaoEspecificacao = filtrarRegistroAtendimentoActionForm.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;
}
}
}
// Perfil Imovel
Collection<Integer> colecaoPerfilImovel = null;
if (filtrarRegistroAtendimentoActionForm.getColecaoPerfilImovel() != null) {
colecaoPerfilImovel = new ArrayList<Integer>();
for (String id : filtrarRegistroAtendimentoActionForm.getColecaoPerfilImovel()) {
if (!id.equals("-1")) {
parametroInformado = true;
colecaoPerfilImovel.add(new Integer(id));
}
}
if (colecaoPerfilImovel.size() == 0) colecaoPerfilImovel = null;
}
// Atendimento Motivo Encerramento
Collection<Integer> colecaoAtendimentoMotivoEncerramento = null;
if (filtrarRegistroAtendimentoActionForm.getColecaoAtendimentoMotivoEncerramento() != null) {
colecaoAtendimentoMotivoEncerramento = new ArrayList<Integer>();
for (String id : filtrarRegistroAtendimentoActionForm.getColecaoAtendimentoMotivoEncerramento()) {
if (!id.equals("-1")) {
parametroInformado = true;
colecaoAtendimentoMotivoEncerramento.add(new Integer(id));
}
}
if (colecaoAtendimentoMotivoEncerramento.size() == 0) colecaoAtendimentoMotivoEncerramento = null;
}
// Data de Atendimento
Date dataAtendimentoInicial = null;
Date dataAtendimentoFinal = null;
if (filtrarRegistroAtendimentoActionForm.getPeriodoAtendimentoInicial() != null &&
!filtrarRegistroAtendimentoActionForm.getPeriodoAtendimentoInicial().equals("")) {
dataAtendimentoInicial = Util.converteStringParaDate(filtrarRegistroAtendimentoActionForm.getPeriodoAtendimentoInicial());
dataAtendimentoInicial = Util.formatarDataInicial(dataAtendimentoInicial);
dataAtendimentoFinal = null;
if (filtrarRegistroAtendimentoActionForm.getPeriodoAtendimentoFinal() != null &&
!filtrarRegistroAtendimentoActionForm.getPeriodoAtendimentoFinal().equals("")) {
dataAtendimentoFinal = Util.converteStringParaDate(filtrarRegistroAtendimentoActionForm.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 (filtrarRegistroAtendimentoActionForm
.getPeriodoAtendimentoFinal() != null
&& !filtrarRegistroAtendimentoActionForm
.getPeriodoAtendimentoFinal().equals("")) {
dataAtendimentoFinal = Util
.converteStringParaDate(filtrarRegistroAtendimentoActionForm
.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 (filtrarRegistroAtendimentoActionForm.getPeriodoEncerramentoInicial() != null &&
!filtrarRegistroAtendimentoActionForm.getPeriodoEncerramentoInicial().equals("")){
dataEncerramentoInicial = Util.converteStringParaDate(filtrarRegistroAtendimentoActionForm.getPeriodoEncerramentoInicial());
dataEncerramentoInicial = Util.formatarDataInicial(dataEncerramentoInicial);
dataEncerramentoFinal = null;
if (filtrarRegistroAtendimentoActionForm.getPeriodoEncerramentoFinal() != null &&
!filtrarRegistroAtendimentoActionForm.getPeriodoEncerramentoFinal().equals("") ) {
dataEncerramentoFinal = Util.converteStringParaDate(filtrarRegistroAtendimentoActionForm.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 (filtrarRegistroAtendimentoActionForm
.getPeriodoEncerramentoFinal() != null
&& !filtrarRegistroAtendimentoActionForm
.getPeriodoEncerramentoFinal().equals("")) {
dataEncerramentoFinal = Util
.converteStringParaDate(filtrarRegistroAtendimentoActionForm
.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;
}
}
// Unidade de Atendimento
UnidadeOrganizacional unidadeAtendimento = null;
if (filtrarRegistroAtendimentoActionForm.getUnidadeAtendimentoId() != null &&
!filtrarRegistroAtendimentoActionForm.getUnidadeAtendimentoId().equals("")) {
unidadeAtendimento = new UnidadeOrganizacional();
unidadeAtendimento.setId(new Integer(filtrarRegistroAtendimentoActionForm.getUnidadeAtendimentoId()));
// passar cole��o de unidades por par�metro
parametroInformado = true;
}
//Registro Atendimento Unidade
RegistroAtendimentoUnidade registroAtendimentoUnidade = null;
Usuario usuario = null;
if (filtrarRegistroAtendimentoActionForm.getLoginUsuario() != null &&
!filtrarRegistroAtendimentoActionForm.getLoginUsuario().equals("")) {
usuario = new Usuario();
// Filtra Usuario
FiltroUsuario filtroUsuario = new FiltroUsuario();
filtroUsuario.adicionarParametro(new ParametroSimples(FiltroUsuario.LOGIN, filtrarRegistroAtendimentoActionForm.getLoginUsuario()));
// Recupera Usu�rio
Collection<Usuario> colecaoUsuario = fachada.pesquisar(filtroUsuario, Usuario.class.getName());
if (colecaoUsuario != null && !colecaoUsuario.isEmpty()) {
Usuario usuarioColecao = colecaoUsuario.iterator().next();
usuario.setLogin(usuarioColecao.getLogin());
usuario.setId(new Integer(usuarioColecao.getId()));
registroAtendimentoUnidade = new RegistroAtendimentoUnidade();
registroAtendimentoUnidade.setUsuario(usuario);
// passar cole��o de registro atendimento unidades(usu�rio) por par�metro
parametroInformado = true;
}
else{
throw new ActionServletException("atencao.pesquisa.usuario.inexistente");
}
}
// Unidade de Atual
UnidadeOrganizacional unidadeAtual = null;
if (filtrarRegistroAtendimentoActionForm.getUnidadeAtualId() != null &&
!filtrarRegistroAtendimentoActionForm.getUnidadeAtualId().equals("")) {
unidadeAtual = new UnidadeOrganizacional();
unidadeAtual.setId(new Integer(filtrarRegistroAtendimentoActionForm.getUnidadeAtualId()));
// passar cole��o de unidades por par�metro
parametroInformado = true;
}
//Unidade de Anterior
UnidadeOrganizacional unidadeAnterior = null;
if (filtrarRegistroAtendimentoActionForm.getUnidadeAnteriorId() != null &&
!filtrarRegistroAtendimentoActionForm.getUnidadeAnteriorId().equals("")) {
unidadeAnterior = new UnidadeOrganizacional();
unidadeAnterior.setId(new Integer(filtrarRegistroAtendimentoActionForm.getUnidadeAnteriorId()));
// passar cole��o de unidades por par�metro
parametroInformado = true;
}
// Unidade de Atual
UnidadeOrganizacional unidadeSuperior = null;
if (filtrarRegistroAtendimentoActionForm.getUnidadeSuperiorId() != null &&
!filtrarRegistroAtendimentoActionForm.getUnidadeSuperiorId().equals("")) {
unidadeSuperior = new UnidadeOrganizacional();
unidadeSuperior.setId(new Integer(filtrarRegistroAtendimentoActionForm.getUnidadeSuperiorId()));
// passar cole��o de unidades por par�metro
parametroInformado = true;
}
// Munic�pio
String municipioId = null;
if (filtrarRegistroAtendimentoActionForm.getMunicipioId() != null &&
!filtrarRegistroAtendimentoActionForm.getMunicipioId().equals("")) {
municipioId = filtrarRegistroAtendimentoActionForm.getMunicipioId();
parametroInformado = true;
}
// Bairro
String bairroId = null;
String bairroCodigo = null;
if (filtrarRegistroAtendimentoActionForm.getBairroCodigo() != null &&
!filtrarRegistroAtendimentoActionForm.getBairroCodigo().equals("")) {
//[FS009] Verificar informa��o do munic�pio
if (filtrarRegistroAtendimentoActionForm.getMunicipioId() == null ||
filtrarRegistroAtendimentoActionForm.getMunicipioId().equals("")) {
throw new ActionServletException("atencao.filtrar_informar_municipio");
}
bairroCodigo = filtrarRegistroAtendimentoActionForm.getBairroCodigo();
if (filtrarRegistroAtendimentoActionForm.getBairroId() != null &&
!filtrarRegistroAtendimentoActionForm.getBairroId().equals("")){
bairroId = filtrarRegistroAtendimentoActionForm.getBairroId();
}
parametroInformado = true;
}
// Bairro �rea
if (new Integer(filtrarRegistroAtendimentoActionForm.getAreaBairroId()).intValue() != ConstantesSistema.NUMERO_NAO_INFORMADO) {
BairroArea bairroArea = new BairroArea();
bairroArea.setId(new Integer(filtrarRegistroAtendimentoActionForm.getAreaBairroId()));
ra.setBairroArea(bairroArea);
parametroInformado = true;
}
// Logradouro
String logradouroId = null;
if (filtrarRegistroAtendimentoActionForm.getLogradouroId() != null &&
!filtrarRegistroAtendimentoActionForm.getLogradouroId().equals("")) {
logradouroId = filtrarRegistroAtendimentoActionForm.getLogradouroId();
parametroInformado = true;
}
//colocado por Fl�vio a pedido de Cl�udio Lira - 17/03/2008
Date dataTramitacaoInicial = null;
Date dataTramitacaoFinal = null;
if (filtrarRegistroAtendimentoActionForm.getPeriodoTramitacaoInicial() != null &&
!filtrarRegistroAtendimentoActionForm.getPeriodoTramitacaoInicial().equals("")){
dataTramitacaoInicial = Util.converteStringParaDate(filtrarRegistroAtendimentoActionForm.getPeriodoTramitacaoInicial());
dataTramitacaoInicial = Util.formatarDataInicial(dataTramitacaoInicial);
dataTramitacaoFinal = null;
if (filtrarRegistroAtendimentoActionForm.getPeriodoTramitacaoFinal() != null &&
!filtrarRegistroAtendimentoActionForm.getPeriodoTramitacaoFinal().equals("") ) {
dataTramitacaoFinal = Util.converteStringParaDate(filtrarRegistroAtendimentoActionForm.getPeriodoTramitacaoFinal());
dataTramitacaoFinal = Util.adaptarDataFinalComparacaoBetween(dataTramitacaoFinal);
} else {
dataTramitacaoFinal = new Date();
dataTramitacaoFinal = Util.formatarDataInicial(dataTramitacaoFinal);
}
//[FS005] Verificar data final menor que data inicial
int qtdeDias = Util.obterQuantidadeDiasEntreDuasDatas(dataTramitacaoInicial, dataTramitacaoFinal);
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 (filtrarRegistroAtendimentoActionForm
.getPeriodoTramitacaoFinal() != null
&& !filtrarRegistroAtendimentoActionForm
.getPeriodoTramitacaoFinal().equals("")) {
dataEncerramentoFinal = Util
.converteStringParaDate(filtrarRegistroAtendimentoActionForm
.getPeriodoTramitacaoFinal());
dataAtendimentoFinal = Util
.formatarDataFinal(dataEncerramentoFinal);
dataTramitacaoInicial = Util
.converteStringParaDate("01/01/1900");
dataTramitacaoInicial = Util
.formatarDataInicial(dataAtendimentoInicial);
// passar as datas de atendimento por par�metro
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.setDataTramitacaoInicial(dataTramitacaoInicial);
filtroRA.setDataTramitacaoFinal(dataTramitacaoFinal);
filtroRA.setColecaoTipoSolicitacaoEspecificacao(colecaoSolicitacaoTipoEspecificacao);
filtroRA.setColecaoTipoSolicitacao(colecaoSolicitacaoTipoSolicitacao);
filtroRA.setColecaoPerfilImovel(colecaoPerfilImovel);
filtroRA.setColecaoAtendimentoMotivoEncerramento(colecaoAtendimentoMotivoEncerramento);
filtroRA.setMunicipioId(municipioId);
filtroRA.setBairroId(bairroId);
filtroRA.setBairroCodigo(bairroCodigo);
filtroRA.setLogradouroId(logradouroId);
filtroRA.setQuantidadeRAReiteradasIncial(qtdeRAReiteradasInicial);
filtroRA.setQuantidadeRAReiteradasFinal(qtdeRAReiteradasFinal);
filtroRA.setRegistroAtendimentoUnidade(registroAtendimentoUnidade);
filtroRA.setNumeroPagina(ConstantesSistema.NUMERO_NAO_INFORMADO);
filtroRA.setRegistroAtendimentoSolicitante(registroAtendimentoSolicitante);
filtroRA.setUnidadeAnterior(unidadeAnterior);
sessao.setAttribute("filtroRA", filtroRA);
int totalRegistros = ConstantesSistema.NUMERO_NAO_INFORMADO;
Integer tamanho = null;
if(httpServletRequest.getParameter("page.offset") != null){
tamanho = (Integer) sessao.getAttribute("totalRegistros");
}else{
tamanho = fachada.filtrarRegistroAtendimentoTamanho(filtroRA);
// Collection colecaoRAHelperCompleta = fachada.filtrarRegistroAtendimento(filtroRA);
// tamanho = colecaoRAHelperCompleta.size();
// sessao.setAttribute("colecaoCompleta", colecaoRAHelperCompleta);
}
if (tamanho == null || tamanho == 0) {
throw new ActionServletException("atencao.pesquisa.nenhumresultado");
} else if(tamanho.intValue() == 1){
retorno = actionMapping.findForward("consultarRegistroAtendimento");
colecaoRegistroAtendimento = fachada.filtrarRegistroAtendimento(filtroRA);
Collection colecaoRAHelper = loadColecaoRAHelper(colecaoRegistroAtendimento);
RAFiltroHelper raFiltroHelper = (RAFiltroHelper) Util.retonarObjetoDeColecao(colecaoRAHelper);
sessao.setAttribute("numeroOS", raFiltroHelper.getRegistroAtendimento().getId());
sessao.removeAttribute("colecaoCompleta");
sessao.removeAttribute("colecaoRAHelper");
} else {
totalRegistros = tamanho.intValue();
retorno = this.controlarPaginacao(httpServletRequest, retorno, totalRegistros);
int numeroPaginasPesquisa =
((Integer) httpServletRequest.getAttribute("numeroPaginasPesquisa")).intValue();
filtroRA.setNumeroPagina(numeroPaginasPesquisa);
colecaoRegistroAtendimento = fachada.filtrarRegistroAtendimento(filtroRA);
Collection colecaoRAHelper = loadColecaoRAHelper(colecaoRegistroAtendimento);
sessao.removeAttribute("numeroOS");
sessao.setAttribute("filtroRA", filtroRA);
sessao.setAttribute("numeroPaginasPesquisa", numeroPaginasPesquisa);
sessao.setAttribute("page.offset", httpServletRequest.getAttribute("page.offset"));
sessao.setAttribute("colecaoRAHelper", colecaoRAHelper);
}
} else {
throw new ActionServletException("atencao.filtrar_informar_um_filtro");
}
obterDadosReiteracaoRa(filtrarRegistroAtendimentoActionForm.getNumeroRA(),fachada,sessao);
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());
if(registroAtendimento.getImovel()!= null){
helper.setPerfilImovel(registroAtendimento.getImovel().getImovelPerfil());
}
//Caso o RegistroAtendimento for urgente, indicadorUrgencia = 1, senao = 2.
// if(this.getFachada().verificarRegistroAtendimentoUrgencia(registroAtendimento.getId()) > 0){
// helper.setIndicadorUrgencia(1);
// }else{
// helper.setIndicadorUrgencia(2);
// }
verificarUrgencia(helper);
colecaoRAHelper.add(helper);
}
return colecaoRAHelper;
}
/**
* @author Vivianne Sousa
* @date 16/05/2011
*/
private void obterDadosReiteracaoRa(String numeroRA,
Fachada fachada,HttpSession sessao) {
sessao.removeAttribute("colecaoDadosReiteracao");
if(numeroRA != null && !numeroRA.equals("")){
Collection colecaoDadosReiteracao = fachada.pesquisarDadosReiteracaoRA(
new Integer(numeroRA));
if(colecaoDadosReiteracao != null && !colecaoDadosReiteracao.isEmpty()){
sessao.setAttribute("colecaoDadosReiteracao",colecaoDadosReiteracao);
}
}
}
/**
* @author Vivianne Sousa
* @date 18/05/2011
*/
private void verificarUrgencia(RAFiltroHelper helper) {
Integer indicadorUrgencia = 2;
if( helper.getRegistroAtendimento() != null){
Integer qtdeRAUrgencia = this.getFachada().verificarRegistroAtendimentoUrgencia(helper.getRegistroAtendimento().getId());
Short qtdeReiteracoes = this.getFachada().pesquisarQtdeReiteracaoRA(helper.getRegistroAtendimento().getId());
StringBuilder hint1 = new StringBuilder();
if(qtdeRAUrgencia.intValue() > 0 && qtdeReiteracoes != null && qtdeReiteracoes.intValue() > 0){
indicadorUrgencia = 1;
hint1.append("Registro de Atendimento em car�ter de urg�ncia");
hint1.append(" <br> Registro de Atendimento reiterado");
}else if(qtdeRAUrgencia.intValue() > 0){
indicadorUrgencia = 1;
hint1.append("Registro de Atendimento em car�ter de urg�ncia");
}else if(qtdeReiteracoes != null && qtdeReiteracoes.intValue() > 0){
indicadorUrgencia = 1;
hint1.append("Registro de Atendimento reiterado");
}
helper.setHint1(hint1.toString());
}
helper.setIndicadorUrgencia(indicadorUrgencia);
}
}