package gcom.gui.atendimentopublico.ordemservico;
import gcom.atendimentopublico.ordemservico.ComandoOrdemSeletiva;
import gcom.atendimentopublico.ordemservico.ConsultarComandosOSSeletivaInspecaoAnormalidadeHelper;
import gcom.batch.Processo;
import gcom.cadastro.empresa.Empresa;
import gcom.cadastro.empresa.FiltroEmpresa;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
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;
/**
* [UC1193] Consultar Comandos de OS Seletiva de Inspe��o de Anormalidade
*
* @author Vivianne Sousa
* @since 11/07/2011
*/
public class ExibirConsultarComandosOSSeletivaInspecaoAnormalidadeAction extends GcomAction {
/**
*
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping
.findForward("exibirConsultarComandosOSSeletivaInspecaoAnormalidade");
String pagina = httpServletRequest.getParameter("page.offset");
ConsultarComandosOSSeletivaInspecaoAnormalidadeActionForm form = (ConsultarComandosOSSeletivaInspecaoAnormalidadeActionForm) actionForm;
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
this.pesquisarCampoEnter(httpServletRequest, form, fachada);
if (httpServletRequest.getParameter("limpar") != null
&& httpServletRequest.getParameter("limpar").equalsIgnoreCase("sim")) {
sessao.removeAttribute("colecaoConsultarComandosOSHelper");
}
if (httpServletRequest.getParameter("selecionarComandos") != null || pagina!=null) {
if(pagina==null){
pagina = "0";
}
retorno = this.pesquisarComandosOS(httpServletRequest, form, fachada,
sessao,pagina,retorno);
}
if (httpServletRequest.getParameter("acao") != null
&& httpServletRequest.getParameter("acao").equalsIgnoreCase("gerarTxtComando")) {
Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado");
ComandoOrdemSeletiva comandoOrdemSeletiva = fachada.pesquisarComandoOSSeletiva(new Integer(form.getIdRegistro()));
if (comandoOrdemSeletiva.getDataEncerramento() != null) {
throw new ActionServletException("atencao.comando.ja_encerrado",
null, "Comandos de OS Seletiva de Inspe��o de Anormalidade");
}
Integer qtdeOsNaoPendenteFazParteComando = fachada.pesquisaOrdemServicoNaoPendenteFazParteComando(new Integer(form.getIdRegistro()));
if(qtdeOsNaoPendenteFazParteComando != null && qtdeOsNaoPendenteFazParteComando.intValue() > 0){
throw new ActionServletException("atencao.nao_e_possivel_gerar_txt_comando");
}
Map parametros = new HashMap();
parametros.put("idComandoOrdemSeletiva",new Integer(form.getIdRegistro()));
parametros.put("qtdAnormalidadesConsecutivas",comandoOrdemSeletiva.getQuantidadeConsecutivaAnormalidade());
Fachada.getInstancia().inserirProcessoIniciadoParametrosLivresAguardandoAutorizacao(
parametros,
Processo.GERAR_TXT_OS_INSPECAO_ANORMALIDADE ,
usuarioLogado);
retorno = actionMapping.findForward("telaSucesso");
//montando p�gina de sucesso
montarPaginaSucesso(httpServletRequest,
"Gera��o de Txt do Comando de OS Seletiva de Inspe��o de Anormalidade Enviado para Processamento",
"Voltar",
"exibirConsultarComandosOSSeletivaInspecaoAnormalidadeAction.do?menu=sim");
}
return retorno;
}
private void pesquisarCampoEnter(HttpServletRequest httpServletRequest,
ConsultarComandosOSSeletivaInspecaoAnormalidadeActionForm form,
Fachada fachada) {
String idEmpresa = form.getIdEmpresa();
// Pesquisa a empresa
if (idEmpresa != null && !idEmpresa.trim().equals("")) {
FiltroEmpresa filtroEmpresa = new FiltroEmpresa();
filtroEmpresa.adicionarParametro(new ParametroSimples(
FiltroEmpresa.ID, idEmpresa));
Collection colecaoEmpresa = fachada.pesquisar(filtroEmpresa,
Empresa.class.getName());
if (colecaoEmpresa != null && !colecaoEmpresa.isEmpty()) {
Empresa empresa = (Empresa) Util
.retonarObjetoDeColecao(colecaoEmpresa);
form.setIdEmpresa(empresa.getId().toString());
form.setNomeEmpresa(empresa.getDescricao());
httpServletRequest.setAttribute("nomeCampo", "idEmpresa");
} else {
form.setIdEmpresa("");
form.setNomeEmpresa("EMPRESA INEXISTENTE");
httpServletRequest.setAttribute("empresaInexistente", true);
httpServletRequest.setAttribute("nomeCampo", "idEmpresa");
}
} else {
form.setNomeEmpresa("");
}
}
private ActionForward pesquisarComandosOS(HttpServletRequest httpServletRequest,
ConsultarComandosOSSeletivaInspecaoAnormalidadeActionForm form,
Fachada fachada, HttpSession sessao, String pagina, ActionForward retorno) {
String idEmpresa = form.getIdEmpresa();
ActionForward retorno2 = new ActionForward();
String periodoExecucaoInicial = form.getPeriodoExecucaoInicial();
String periodoExecucaoFinal = form.getPeriodoExecucaoFinal();
Date execucaoInicial = null;
Date execucaoFinal = null;
// Pesquisa a empresa
if (idEmpresa != null && !idEmpresa.trim().equals("")) {
FiltroEmpresa filtroEmpresa = new FiltroEmpresa();
filtroEmpresa.adicionarParametro(new ParametroSimples(FiltroEmpresa.ID, idEmpresa));
Collection colecaoEmpresa = fachada.pesquisar(filtroEmpresa,Empresa.class.getName());
if (Util.isVazioOrNulo(colecaoEmpresa)) {
throw new ActionServletException("atencao.empresa.inexistente");
}
}else{
throw new ActionServletException("atencao.campo_selecionado.obrigatorio", null, "Empresa");
}
if (periodoExecucaoFinal != null && !periodoExecucaoFinal.equals("")
&& periodoExecucaoInicial != null && !periodoExecucaoInicial.equals("")) {
execucaoInicial = Util.converteStringParaDate(periodoExecucaoInicial);
execucaoFinal = Util.converteStringParaDate(periodoExecucaoFinal);
if (execucaoInicial.compareTo(execucaoFinal) > 0) {
throw new ActionServletException("atencao.data_inicial_periodo_execucao.posterior.data_final_periodo_execucao");
}
}
SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema();
int quantidadeRegistros = 10;
Integer totalRegistros = fachada.pesquisarDadosComandoOSSeletivaCount(
new Integer(idEmpresa), execucaoInicial, execucaoFinal);
retorno2 = this.controlarPaginacao(httpServletRequest, retorno, totalRegistros);
Collection<ConsultarComandosOSSeletivaInspecaoAnormalidadeHelper> colecaoConsultarComandosOSHelper = fachada
.pesquisarDadosComandoOSSeletivaResumido(new Integer(idEmpresa),execucaoInicial, execucaoFinal,
(Integer)httpServletRequest.getAttribute("numeroPaginasPesquisa"),quantidadeRegistros,
sistemaParametro.getQtdeDiasValidadeOSAnormalidadeFiscalizacao());
if(colecaoConsultarComandosOSHelper != null && !colecaoConsultarComandosOSHelper.isEmpty()){
sessao.setAttribute("dataInicial",execucaoInicial);
sessao.setAttribute("dataFinal",execucaoFinal);
sessao.setAttribute("colecaoConsultarComandosOSHelper", colecaoConsultarComandosOSHelper);
}else{
throw new ActionServletException("atencao.pesquisa.nenhumresultado");
}
return retorno2;
}
}