package gcom.gui.atendimentopublico.ordemservico;
import gcom.atendimentopublico.ordemservico.FiltroServicoTipo;
import gcom.atendimentopublico.ordemservico.FiltroServicoTipoPrioridade;
import gcom.atendimentopublico.ordemservico.OrdemServico;
import gcom.atendimentopublico.ordemservico.ServicoTipo;
import gcom.atendimentopublico.ordemservico.ServicoTipoPrioridade;
import gcom.atendimentopublico.ordemservico.ServicoTipoReferencia;
import gcom.atendimentopublico.registroatendimento.FiltroSolicitacaoTipo;
import gcom.atendimentopublico.registroatendimento.RegistroAtendimento;
import gcom.atendimentopublico.registroatendimento.SolicitacaoTipo;
import gcom.atendimentopublico.registroatendimento.SolicitacaoTipoGrupo;
import gcom.cadastro.imovel.Imovel;
import gcom.fachada.Fachada;
import gcom.faturamento.credito.FiltroCreditoTipo;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
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;
/**
* <<Descri��o da Classe>>
*
* @author lms
* @date 14/08/2006
*/
public class ExibirGerarOrdemServicoInserirRAAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
String forward = "exibirGerarOrdemServicoInserirRAPopup";
ActionForward retorno = actionMapping.findForward(forward);
GerarOrdemServicoActionForm form = (GerarOrdemServicoActionForm) actionForm;
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado");
// Imovel
Imovel imovel = null;
if (httpServletRequest.getParameter("idImovel") != null) {
Integer idImovel = Util
.converterStringParaInteger(httpServletRequest
.getParameter("idImovel"));
imovel = new Imovel();
imovel.setId(idImovel);
}
ServicoTipo servicoTipo = null;
// caso venha do encerrar OS popup
if (httpServletRequest.getParameter("caminhoRetornoOS") != null
&& !httpServletRequest.getParameter("caminhoRetornoOS").equals(
"")) {
sessao.setAttribute("caminhoRetornoOS", httpServletRequest
.getParameter("caminhoRetornoOS"));
}
// caso venha do encerrar os popup
String veioEncerrarOS = (String) httpServletRequest
.getAttribute("veioEncerrarOS");
if (veioEncerrarOS == null) {
// caso venha do encerrar os
veioEncerrarOS = httpServletRequest.getParameter("veioEncerrarOS");
}
// caso venha do caso de uso de encerrar OS
if (veioEncerrarOS != null && !veioEncerrarOS.equals("")) {
FiltroServicoTipo filtroServicoTipo = new FiltroServicoTipo();
filtroServicoTipo.adicionarParametro(new ParametroSimples(
FiltroServicoTipo.INDICADOR_FISCALIZACAO_SERVICO_TIPO_REF,
ServicoTipoReferencia.INDICADOR_FISCALIZACAO_SIM));
Collection colecaoServicoTipo = fachada.pesquisar(
filtroServicoTipo, ServicoTipo.class.getName());
if(colecaoServicoTipo == null || colecaoServicoTipo.isEmpty()){
throw new ActionServletException(
"atencao.servico_tipo.sem_fiscalizacao");
}
sessao.setAttribute("colecaoServicosTipo", colecaoServicoTipo);
// se vier o id da RA ent�o seta na ordem de servi�o
// caso venha do encerrar os popup
String numeroRA = (String) httpServletRequest
.getAttribute("numeroRA");
if (numeroRA == null) {
// caso venha do encerrar os
numeroRA = httpServletRequest.getParameter("numeroRA");
}
if (numeroRA != null && !numeroRA.equals("")) {
RegistroAtendimento registroAtendimento = new RegistroAtendimento();
registroAtendimento.setId(new Integer(numeroRA));
// [SF0004] - Verificar unidade do usu�rio
fachada.verificarUnidadeUsuario(registroAtendimento,
usuarioLogado);
form.getOrdemServico().setRegistroAtendimento(
registroAtendimento);
}
// se vier o id da OS ent�o seta o id da os como OSReferencia ent�o
// seta na ordem de servi�o
// caso venha do encerrar os popup
String numeroOS = (String) httpServletRequest
.getAttribute("numeroOS");
if (numeroOS == null) {
// caso venha do encerrar os
numeroOS = httpServletRequest.getParameter("numeroOS");
}
if (numeroOS != null && !numeroOS.equals("")) {
// Ordem de Servi�o Refer�ncia
Integer idOrdemServicoReferencia = Util
.converterStringParaInteger(numeroOS);
if (Util.validarNumeroMaiorQueZERO(idOrdemServicoReferencia)) {
OrdemServico os = fachada
.pesquisarOrdemServico(idOrdemServicoReferencia);
form.setIdOrdemServicoReferencia(os.getId().toString());
form.setDescricaoOrdemServicoReferencia(os.getServicoTipo()
.getDescricao());
form.getOrdemServico().setOsReferencia(os);
sessao.setAttribute("veioEncerrarOS", "SIM");
}
}
} else {
String idTipoSolicitacao = (String) httpServletRequest
.getParameter("idTipoSolicitacao");
if (idTipoSolicitacao != null && !idTipoSolicitacao.equals("")) {
boolean existe = false;
FiltroSolicitacaoTipo filtroSolicitacaoTipo = new FiltroSolicitacaoTipo();
filtroSolicitacaoTipo.adicionarParametro(new ParametroSimples(
FiltroSolicitacaoTipo.ID,
new Integer(idTipoSolicitacao)));
filtroSolicitacaoTipo.adicionarParametro(new ParametroSimples(
FiltroSolicitacaoTipo.SOLICITACAO_TIPO_GRUPO_ID,
SolicitacaoTipoGrupo.ID_OPERACIONAL_AGUA_COM_DIAGNOSTICO));
Collection colecaoSolicitacaoTipo = fachada.pesquisar(
filtroSolicitacaoTipo, SolicitacaoTipo.class.getName());
if (colecaoSolicitacaoTipo != null
&& !colecaoSolicitacaoTipo.isEmpty()) {
FiltroServicoTipo filtroServicoTipo = new FiltroServicoTipo();
filtroServicoTipo
.adicionarParametro(new ParametroSimples(
FiltroServicoTipo.INDICADOR_DIAGNOSTICO_SERVICO_TIPO_REF,
ServicoTipoReferencia.INDICADOR_DIAGNOSTICO_ATIVO));
Collection colecaoServicoTipo = fachada.pesquisar(
filtroServicoTipo, ServicoTipo.class.getName());
if (colecaoServicoTipo != null
&& !colecaoServicoTipo.isEmpty()) {
existe = true;
Integer idServicoTipo = ((ServicoTipo) Util
.retonarObjetoDeColecao(colecaoServicoTipo))
.getId();
String valorServicoOriginal = null;
Integer idServicoTipoPrioridadeOriginal = null;
String descricaoServicoTipoPrioridadeOriginal = null;
servicoTipo = fachada
.pesquisarSevicoTipo(idServicoTipo);
form.setIdServicoTipo("" + idServicoTipo);
String descricaoServicoTipo = servicoTipo
.getDescricao();
if (servicoTipo.getValor() != null) {
valorServicoOriginal = servicoTipo.getValor()
.toString();
}
if (servicoTipo.getServicoTipoPrioridade() != null) {
idServicoTipoPrioridadeOriginal = servicoTipo
.getServicoTipoPrioridade().getId();
descricaoServicoTipoPrioridadeOriginal = servicoTipo
.getServicoTipoPrioridade().getDescricao();
ServicoTipoPrioridade servicoTipoPrioridadeOriginal = new ServicoTipoPrioridade();
servicoTipoPrioridadeOriginal.setId(idServicoTipoPrioridadeOriginal);
form.getOrdemServico()
.setServicoTipoPrioridadeOriginal(
servicoTipoPrioridadeOriginal);
}
form.getOrdemServico().setServicoTipo(servicoTipo);
form.getOrdemServico().setImovel(imovel);
form.setDescricaoServicoTipo(descricaoServicoTipo);
form.setValorServicoOriginal(valorServicoOriginal);
form
.setIdPrioridadeServicoOriginal(idServicoTipoPrioridadeOriginal
+ "");
form
.setDescricaoPrioridadeServicoOriginal(descricaoServicoTipoPrioridadeOriginal);
// Servi�o Tipo Refer�ncia
// Servi�o Tipo
Integer idServicoTipoReferencia = Util
.converterStringParaInteger(httpServletRequest
.getParameter("idServicoTipo"));
if (Util
.validarNumeroMaiorQueZERO(idServicoTipoReferencia)) {
ServicoTipo st = fachada
.pesquisarSevicoTipo(idServicoTipoReferencia);
form.setIdServicoTipoReferencia(st.getId()
.toString());
form.setDescricaoServicoTipoReferencia(st
.getDescricao());
form.getOrdemServico().setServicoTipoReferencia(st);
}
httpServletRequest.setAttribute(
"solicitacaoEspecificacaoOperacionalAgua",
"SIM");
}
}
if (!existe) {
// Servi�o Tipo
Integer idServicoTipo = Util
.converterStringParaInteger(httpServletRequest
.getParameter("idServicoTipo"));
String valorServicoOriginal = null;
Integer idServicoTipoPrioridadeOriginal = null;
String descricaoServicoTipoPrioridadeOriginal = null;
servicoTipo = fachada.pesquisarSevicoTipo(idServicoTipo);
String descricaoServicoTipo = servicoTipo.getDescricao();
if (servicoTipo.getValor() != null) {
valorServicoOriginal = servicoTipo.getValor()
.toString();
}
if (servicoTipo.getServicoTipoPrioridade() != null) {
idServicoTipoPrioridadeOriginal = servicoTipo
.getServicoTipoPrioridade().getId();
descricaoServicoTipoPrioridadeOriginal = servicoTipo
.getServicoTipoPrioridade().getDescricao();
ServicoTipoPrioridade servicoTipoPrioridadeOriginal = new ServicoTipoPrioridade();
form.getOrdemServico()
.setServicoTipoPrioridadeOriginal(
servicoTipoPrioridadeOriginal);
}
form.getOrdemServico().setServicoTipo(servicoTipo);
form.getOrdemServico().setImovel(imovel);
form.setDescricaoServicoTipo(descricaoServicoTipo);
form.setValorServicoOriginal(valorServicoOriginal);
form
.setIdPrioridadeServicoOriginal(idServicoTipoPrioridadeOriginal
+ "");
form
.setDescricaoPrioridadeServicoOriginal(descricaoServicoTipoPrioridadeOriginal);
// Ordem de Servi�o Refer�ncia
Integer idOrdemServicoReferencia = Util
.converterStringParaInteger(form
.getIdOrdemServicoReferencia());
if (Util
.validarNumeroMaiorQueZERO(idOrdemServicoReferencia)) {
OrdemServico os = fachada
.pesquisarOrdemServico(idOrdemServicoReferencia);
form.setIdOrdemServicoReferencia(os.getId().toString());
form.setDescricaoOrdemServicoReferencia(os
.getServicoTipo().getDescricao());
form.getOrdemServico().setOsReferencia(os);
}
// Servi�o Tipo Refer�ncia
Integer idServicoTipoReferencia = Util
.converterStringParaInteger(form
.getIdServicoTipoReferencia());
if (Util.validarNumeroMaiorQueZERO(idServicoTipoReferencia)) {
ServicoTipo st = fachada
.pesquisarSevicoTipo(idServicoTipoReferencia);
form.setIdServicoTipoReferencia(st.getId().toString());
form.setDescricaoServicoTipoReferencia(st
.getDescricao());
form.getOrdemServico().setServicoTipoReferencia(st);
}
}
} else {
// Servi�o Tipo
Integer idServicoTipo = null;
if (httpServletRequest.getParameter("idServicoTipo") != null
&& !httpServletRequest.getParameter("idServicoTipo")
.equals("")) {
// Servi�o Tipo
idServicoTipo = Util
.converterStringParaInteger(httpServletRequest
.getParameter("idServicoTipo"));
}
if (form.getIdServicoTipo() != null
&& !form.getIdServicoTipo().equals("")) {
// Servi�o Tipo
idServicoTipo = Util.converterStringParaInteger(form
.getIdServicoTipo());
}
if (idServicoTipo != null) {
String valorServicoOriginal = null;
Integer idServicoTipoPrioridadeOriginal = null;
String descricaoServicoTipoPrioridadeOriginal = null;
servicoTipo = fachada.pesquisarSevicoTipo(idServicoTipo);
String descricaoServicoTipo = servicoTipo.getDescricao();
if (servicoTipo.getValor() != null) {
valorServicoOriginal = servicoTipo.getValor()
.toString();
}
if (servicoTipo.getServicoTipoPrioridade() != null) {
idServicoTipoPrioridadeOriginal = servicoTipo
.getServicoTipoPrioridade().getId();
descricaoServicoTipoPrioridadeOriginal = servicoTipo
.getServicoTipoPrioridade().getDescricao();
ServicoTipoPrioridade servicoTipoPrioridadeOriginal = new ServicoTipoPrioridade();
servicoTipoPrioridadeOriginal.setId(idServicoTipoPrioridadeOriginal);
form.getOrdemServico()
.setServicoTipoPrioridadeOriginal(
servicoTipoPrioridadeOriginal);
}
form.getOrdemServico().setServicoTipo(servicoTipo);
if (imovel != null) {
form.getOrdemServico().setImovel(imovel);
}
form.setDescricaoServicoTipo(descricaoServicoTipo);
form.setValorServicoOriginal(valorServicoOriginal);
form
.setIdPrioridadeServicoOriginal(idServicoTipoPrioridadeOriginal
+ "");
form
.setDescricaoPrioridadeServicoOriginal(descricaoServicoTipoPrioridadeOriginal);
}
// Ordem de Servi�o Refer�ncia
if (sessao.getAttribute("veioEncerrarOS") == null
|| sessao.getAttribute("veioEncerrarOS").equals("")) {
Integer idOrdemServicoReferencia = Util
.converterStringParaInteger(form
.getIdOrdemServicoReferencia());
if (Util
.validarNumeroMaiorQueZERO(idOrdemServicoReferencia)) {
OrdemServico os = fachada
.pesquisarOrdemServico(idOrdemServicoReferencia);
form.setIdOrdemServicoReferencia(os.getId().toString());
form.setDescricaoOrdemServicoReferencia(os
.getServicoTipo().getDescricao());
form.getOrdemServico().setOsReferencia(os);
}
// Servi�o Tipo Refer�ncia
if (form.getIdServicoTipoReferencia() != null
&& !form.getIdServicoTipoReferencia().equals("")) {
Integer idServicoTipoReferencia = Util
.converterStringParaInteger(form
.getIdServicoTipoReferencia());
if (Util
.validarNumeroMaiorQueZERO(idServicoTipoReferencia)) {
ServicoTipo st = fachada
.pesquisarSevicoTipo(idServicoTipoReferencia);
form.setIdServicoTipoReferencia(st.getId()
.toString());
form.setDescricaoServicoTipoReferencia(st
.getDescricao());
form.getOrdemServico().setServicoTipoReferencia(st);
}
}
}
}
}
FiltroServicoTipoPrioridade filtroServicoTipoPrioridade = new FiltroServicoTipoPrioridade();
filtroServicoTipoPrioridade
.setCampoOrderBy(FiltroCreditoTipo.DESCRICAO);
filtroServicoTipoPrioridade.adicionarParametro(new ParametroSimples(
FiltroCreditoTipo.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection colecaoServicoTipoPrioridade = fachada.pesquisar(
filtroServicoTipoPrioridade, ServicoTipoPrioridade.class
.getName());
sessao.setAttribute("colecaoServicoTipoPrioridade",
colecaoServicoTipoPrioridade);
httpServletRequest.setAttribute("servicoTipo", servicoTipo);
form.getOrdemServico().setObservacao(form.getObservacao());
if (form.getIdPrioridadeServicoAtual() != null
&& !form.getIdPrioridadeServicoAtual().equals("")) {
ServicoTipoPrioridade servicoTipoPrioridade = new ServicoTipoPrioridade();
servicoTipoPrioridade.setId(new Integer(form
.getIdPrioridadeServicoAtual()));
form.getOrdemServico().setServicoTipoPrioridadeAtual(
servicoTipoPrioridade);
} else {
form.getOrdemServico().setServicoTipoPrioridadeAtual(null);
}
if (httpServletRequest.getParameter("close") != null) {
if (sessao.getAttribute("caminhoRetornoOS") != null
&& !sessao.getAttribute("caminhoRetornoOS").equals("")) {
httpServletRequest.setAttribute("close", sessao
.getAttribute("caminhoRetornoOS"));
} else {
httpServletRequest.setAttribute("close", Boolean.TRUE);
}
sessao.setAttribute("ordemServicoFiscalizacao", form.getOrdemServico());
sessao.removeAttribute("veioEncerrarOS");
sessao.removeAttribute("caminhoRetornoOS");
}
return retorno;
}
}