package gcom.gui.relatorio.atendimentopublico.ordemservico;
import gcom.cadastro.localidade.FiltroGerenciaRegional;
import gcom.cadastro.localidade.FiltroLocalidade;
import gcom.cadastro.localidade.GerenciaRegional;
import gcom.cadastro.localidade.Localidade;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.atendimentopublico.ordemservico.ExibirFiltrarRelatorioOrdensServicoFiscalizacaoActionForm;
import gcom.relatorio.ConstantesRelatorios;
import gcom.relatorio.ExibidorProcessamentoTarefaRelatorio;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.tarefa.TarefaRelatorio;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
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;
public class GerarRelatorioOrdensServicoFiscalizacaoAction extends ExibidorProcessamentoTarefaRelatorio{
/**
*
*
* [UC1213] Emitir Relatorio de Ordem de Sercico de Fiscalizacao
*
* @author Paulo Diniz
* @date 02/08/2011
*
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return
*/
//Obt�m a inst�ncia da fachada
Fachada fachada = Fachada.getInstancia();
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = null;
ExibirFiltrarRelatorioOrdensServicoFiscalizacaoActionForm relatorioActionForm = (ExibirFiltrarRelatorioOrdensServicoFiscalizacaoActionForm) actionForm;
String tipoRelatorio = httpServletRequest.getParameter("tipoRelatorio");
TarefaRelatorio relatorio = null;
//Recuperando os dados do formul�rio
String relatorioTipoFiscalizacao = relatorioActionForm.getTipoRelatorioFiscalizacao();
String periodoInicial = relatorioActionForm.getPeriodoInicial();
String periodoFinal = relatorioActionForm.getPeriodoFinal();
String idLocalidadeInicial = relatorioActionForm.getLocalidadeInicial();
String idLocalidadeFinal = relatorioActionForm.getLocalidadeFinal();
String descLocalidadeInicial = relatorioActionForm.getDescricaoLocalidadeInicial();
String descLocalidadeFinal = relatorioActionForm.getDescricaoLocalidadeFinal();
String idGerenciaRegional = relatorioActionForm.getGerenciaRegional();
String idUnidadeNegocios = relatorioActionForm.getUnidadeNegocio();
String situacaoOS = relatorioActionForm.getSituacao();
String idOSReferidaRetornoTipo = relatorioActionForm.getTipoRetorno();
String aceitacaoDaOS = relatorioActionForm.getAceitacaoOS();
//Validar Per�odo Inicial
if(periodoInicial == null || periodoInicial.equals("")){
throw new ActionServletException("atencao.periodo_inicial_fiscalizacao.inexistente");
}
if(periodoFinal == null || periodoFinal.equals("")){
throw new ActionServletException("atencao.periodo_final_fiscalizacao.inexistente");
}
if(periodoFinal != null && !periodoFinal.equals("")
&& periodoInicial != null && !periodoInicial.equals("")){
String anoMesIni = periodoInicial.substring(3, 7) + periodoInicial.substring(0, 2);
String anoMesFin = periodoFinal.substring(3, 7) + periodoFinal.substring(0, 2);
boolean compararReferencia = Util.compararAnoMesReferencia(anoMesIni, anoMesFin, ">");
if(compararReferencia){
throw new ActionServletException("atencao.periodo_inicial.maior.periodo_final");
}
}
//Validar Existencia de Localidade Inicial
if(idLocalidadeInicial != null && !idLocalidadeInicial.equals("")){
Integer localidadeInicial = fachada.verificarExistenciaLocalidade(new Integer(idLocalidadeInicial));
if( localidadeInicial == null || localidadeInicial <= 0){
throw new ActionServletException("atencao.localidade.inexistente");
}
}
//Validar Existencia de Localidade Final
if(idLocalidadeFinal != null && !idLocalidadeFinal.equals("")){
Integer localidadeFinal = fachada.verificarExistenciaLocalidade(new Integer(idLocalidadeFinal));
if( localidadeFinal == null || localidadeFinal <= 0){
throw new ActionServletException("atencao.localidade.inexistente");
}
}
//[FS0007] Validar Localidade Pertencente a Gerencia Regional
if((idGerenciaRegional != null && !idGerenciaRegional.equals(""))){
if(idLocalidadeInicial != null && !idLocalidadeInicial.equals("")){
FiltroLocalidade filtroLocalidadeInicial = new FiltroLocalidade();
filtroLocalidadeInicial.adicionarParametro(new ParametroSimples(
FiltroLocalidade.ID, idLocalidadeInicial));
Collection colecaoLocalidadeInicial = fachada.pesquisar(
filtroLocalidadeInicial, Localidade.class.getName());
if (colecaoLocalidadeInicial != null && !colecaoLocalidadeInicial.isEmpty()) {
Localidade localidadeInicial = (Localidade) colecaoLocalidadeInicial.iterator().next();
if(localidadeInicial.getGerenciaRegional().getId().intValue() != Integer.parseInt(idGerenciaRegional)){
FiltroGerenciaRegional filtroGerencia = new FiltroGerenciaRegional();
filtroGerencia.adicionarParametro(new ParametroSimples(FiltroGerenciaRegional.INDICADOR_USO, "1"));
filtroGerencia.adicionarParametro(new ParametroSimples(FiltroGerenciaRegional.ID, idGerenciaRegional));
Collection collGerenciaRegional = fachada.pesquisar(filtroGerencia, GerenciaRegional.class.getName());
GerenciaRegional gerencia = (GerenciaRegional)collGerenciaRegional.iterator().next();
throw new ActionServletException(
"atencao.localidade.nao.pertencente.gerencia", null, gerencia.getNome());
}
}
}
if(idLocalidadeFinal != null && !idLocalidadeFinal.equals("")){
if(idLocalidadeInicial != null && !idLocalidadeInicial.equals("")){
if ((new Integer(idLocalidadeInicial)).compareTo(new Integer(idLocalidadeFinal)) > 0) {
throw new ActionServletException("atencao.localidade.final.maior.localidade.inicial");
}
}
FiltroLocalidade filtroLocalidadeFinal = new FiltroLocalidade();
filtroLocalidadeFinal.adicionarParametro(new ParametroSimples(
FiltroLocalidade.ID, idLocalidadeFinal));
Collection colecaoLocalidadeFinal = fachada.pesquisar(
filtroLocalidadeFinal, Localidade.class.getName());
if (colecaoLocalidadeFinal != null && !colecaoLocalidadeFinal.isEmpty()) {
Localidade localidadeFinal = (Localidade) colecaoLocalidadeFinal.iterator().next();
if(localidadeFinal.getGerenciaRegional().getId().intValue() != Integer.parseInt(idGerenciaRegional)){
FiltroGerenciaRegional filtroGerencia = new FiltroGerenciaRegional();
filtroGerencia.adicionarParametro(new ParametroSimples(FiltroGerenciaRegional.INDICADOR_USO, "1"));
filtroGerencia.adicionarParametro(new ParametroSimples(FiltroGerenciaRegional.ID, idGerenciaRegional));
Collection collGerenciaRegional = fachada.pesquisar(filtroGerencia, GerenciaRegional.class.getName());
GerenciaRegional gerencia = (GerenciaRegional)collGerenciaRegional.iterator().next();
throw new ActionServletException(
"atencao.localidade.nao.pertencente.gerencia", null, gerencia.getNome());
}
}
}
}
//Recuperando as ordem de servico especificadas
Collection colecaoOrdemServico = fachada.pesquisarOrdensServicoFiscalizacao(
Integer.parseInt(relatorioTipoFiscalizacao),
periodoInicial,
periodoFinal,
idGerenciaRegional,
idUnidadeNegocios,
idLocalidadeInicial,
idLocalidadeFinal,
situacaoOS,
idOSReferidaRetornoTipo,
aceitacaoDaOS);
//Nenhum par�metro retornado
if(colecaoOrdemServico == null || colecaoOrdemServico.isEmpty()){
throw new ActionServletException(
"atencao.pesquisa.nenhumresultado", null, "relat�rio de acompanhamento");
}
if(relatorioTipoFiscalizacao != null && relatorioTipoFiscalizacao.equals("1")){
relatorio = new RelatorioOrdensServicoFiscalizacaoAction(
(Usuario) (httpServletRequest.getSession(false))
.getAttribute("usuarioLogado"), ConstantesRelatorios.RELATORIO_ORDEM_SERVICO_FISCALIZACAO_ANALITICO);
}else{
relatorio = new RelatorioOrdensServicoFiscalizacaoAction(
(Usuario) (httpServletRequest.getSession(false))
.getAttribute("usuarioLogado"), ConstantesRelatorios.RELATORIO_ORDEM_SERVICO_FISCALIZACAO_SINTETICO);
}
relatorio.addParametro("relatorioTipoFiscalizacao",new Integer(relatorioTipoFiscalizacao));
relatorio.addParametro("periodoInicial",periodoInicial);
relatorio.addParametro("periodoFinal",periodoFinal);
relatorio.addParametro("idLocalidadeInicial",idLocalidadeInicial);
relatorio.addParametro("idLocalidadeFinal",idLocalidadeFinal);
relatorio.addParametro("descLocalidadeInicial",descLocalidadeInicial);
relatorio.addParametro("descLocalidadeFinal",descLocalidadeFinal);
relatorio.addParametro("idGerenciaRegional",idGerenciaRegional);
relatorio.addParametro("idUnidadeNegocios",idUnidadeNegocios);
relatorio.addParametro("situacaoOS",situacaoOS);
relatorio.addParametro("idOSReferidaRetornoTipo",idOSReferidaRetornoTipo);
relatorio.addParametro("aceitacaoDaOS",aceitacaoDaOS);
relatorio.addParametro("colecaoOrdemServico",colecaoOrdemServico);
relatorio.addParametro("tipoFormatoRelatorio", Integer.parseInt(tipoRelatorio));
retorno = processarExibicaoRelatorio(relatorio, tipoRelatorio,
httpServletRequest, httpServletResponse, actionMapping);
return retorno;
}
}