package gcom.gui.atendimentopublico.ordemservico;
import gcom.atendimentopublico.ordemservico.ArquivoTextoAcompanhamentoServico;
import gcom.atendimentopublico.ordemservico.FiltroArquivoTextoAcompanhamentoServico;
import gcom.atendimentopublico.ordemservico.FiltroOsProgramNaoEncerMotivo;
import gcom.atendimentopublico.ordemservico.OrdemServico;
import gcom.atendimentopublico.ordemservico.OsProgramNaoEncerMotivo;
import gcom.atendimentopublico.ordemservico.bean.ObterDescricaoSituacaoOSHelper;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.micromedicao.SituacaoTransmissaoLeitura;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
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;
/**
* [UC1199] � Acompanhamento Arquivos Roteiro Informar Situa��o Ordem de Servi�o
*
* @author Th�lio Ara�jo
*
* @date 25/08/2011
*/
public class ExibirInformarSituacaoOSAcompanhamentoArquivosRoteiroAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,ActionForm actionForm,
HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping.findForward("exibirInformarSituacaoOS");
HttpSession sessao = httpServletRequest.getSession(false);
Fachada fachada = Fachada.getInstancia();
// Form
AcompanharRoteiroProgramacaoOrdemServicoActionForm
acompanharActionForm = (AcompanharRoteiroProgramacaoOrdemServicoActionForm) actionForm;
String chaveArquivo = httpServletRequest.getParameter("chaveArquivo");
ArquivoTextoAcompanhamentoServico arquivoTextoAcompanhamentoServico = null;
if (chaveArquivo != null){
FiltroArquivoTextoAcompanhamentoServico filtroArquivoTextoAcompanhamentoServico = new FiltroArquivoTextoAcompanhamentoServico();
filtroArquivoTextoAcompanhamentoServico.adicionarParametro(new ParametroSimples(FiltroArquivoTextoAcompanhamentoServico.ID, chaveArquivo));
Collection<?> colecaoArquivoTxtAcompanhamentoServico = fachada.pesquisar(
filtroArquivoTextoAcompanhamentoServico,
ArquivoTextoAcompanhamentoServico.class.getName());
arquivoTextoAcompanhamentoServico = (ArquivoTextoAcompanhamentoServico) colecaoArquivoTxtAcompanhamentoServico
.iterator().next();
if (arquivoTextoAcompanhamentoServico.getSituacaoTransmissaoLeitura().getId().equals(SituacaoTransmissaoLeitura.TRANSMITIDO)){
throw new ActionServletException("atencao.nao_possivel.informar_situacao.situacao_finalizado");
}
}
String chaveOs = httpServletRequest.getParameter("chave");
OrdemServico ordemServico = fachada.recuperaOSPorId(new Integer(chaveOs));
//[FS0007 - Verificar sele��o de ordem de servi�o encerrada]
if(ordemServico.getSituacao() == OrdemServico.SITUACAO_ENCERRADO.shortValue()){
throw new ActionServletException("atencao.ordem_servico_encerrada_para_alocar");
}
Date dataRoteiro =
Util.converteStringParaDate(acompanharActionForm.getDataProgramacao());
acompanharActionForm.setIdOrdemServico(chaveOs);
acompanharActionForm.setDescricaoOrdemServico(ordemServico.getServicoTipo().getDescricao());
ObterDescricaoSituacaoOSHelper obter = fachada.obterDescricaoSituacaoOS(new Integer(chaveOs));
acompanharActionForm.setSituacaoAtual(obter.getDescricaoSituacao());
acompanharActionForm.setIdAcompanhamentoArquivosRoteiro(httpServletRequest.getParameter("chaveArquivo"));
this.pesquisarOsProgramNaoEncerMotivo(httpServletRequest);
sessao.setAttribute("chaveOsInformarSituacao", chaveOs);
sessao.setAttribute("chaveArquivoInformarSituacao", chaveArquivo);
sessao.setAttribute("dataRoteiroInformarSituacao", dataRoteiro);
return retorno;
}
private Collection<OsProgramNaoEncerMotivo> pesquisarOsProgramNaoEncerMotivo(
HttpServletRequest httpServletRequest){
Collection<OsProgramNaoEncerMotivo> retorno = new ArrayList();
FiltroOsProgramNaoEncerMotivo filtroOsProgramNaoEncerMotivo = new FiltroOsProgramNaoEncerMotivo();
filtroOsProgramNaoEncerMotivo.setCampoOrderBy(FiltroOsProgramNaoEncerMotivo.DESCRICAO);
retorno =
Fachada.getInstancia().pesquisar(filtroOsProgramNaoEncerMotivo,
OsProgramNaoEncerMotivo.class.getName());
httpServletRequest.setAttribute("colecaoMotivoNaoEncerramento", retorno );
return retorno;
}
}