package gcom.gui.atendimentopublico.ordemservico;
import gcom.arrecadacao.pagamento.FiltroGuiaPagamento;
import gcom.arrecadacao.pagamento.GuiaPagamento;
import gcom.atendimentopublico.ordemservico.FiltroOSReferidaRetornoTipo;
import gcom.atendimentopublico.ordemservico.FiltroOrdemServicoUnidade;
import gcom.atendimentopublico.ordemservico.FiltroServicoTipo;
import gcom.atendimentopublico.ordemservico.FiltroServicoTipoMotivoEncerramento;
import gcom.atendimentopublico.ordemservico.OrdemServico;
import gcom.atendimentopublico.ordemservico.OrdemServicoUnidade;
import gcom.atendimentopublico.ordemservico.OsReferidaRetornoTipo;
import gcom.atendimentopublico.ordemservico.ServicoTipo;
import gcom.atendimentopublico.ordemservico.ServicoTipoReferencia;
import gcom.atendimentopublico.ordemservico.ServicoTipoBoletim;
import gcom.atendimentopublico.ordemservico.ServicoTipoMotivoEncerramento;
import gcom.atendimentopublico.ordemservico.bean.ObterDescricaoSituacaoOSHelper;
import gcom.atendimentopublico.registroatendimento.AtendimentoMotivoEncerramento;
import gcom.atendimentopublico.registroatendimento.AtendimentoRelacaoTipo;
import gcom.atendimentopublico.registroatendimento.FiltroAtendimentoMotivoEncerramento;
import gcom.atendimentopublico.registroatendimento.bean.ObterDescricaoSituacaoRAHelper;
import gcom.cadastro.imovel.FiltroPavimentoCalcada;
import gcom.cadastro.imovel.FiltroPavimentoRua;
import gcom.cadastro.imovel.PavimentoCalcada;
import gcom.cadastro.imovel.PavimentoRua;
import gcom.cadastro.unidade.FiltroUnidadeOrganizacional;
import gcom.cadastro.unidade.UnidadeOrganizacional;
import gcom.fachada.Fachada;
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.ArrayList;
import java.util.Collection;
import java.util.Date;
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;
/**
* Action que define o pr�-processamento da p�gina de encerra OS caso precise
* entrar na tela
*
* @author S�vio Luiz
* @created 18/09/2006
*/
public class ExibirEncerrarOrdemServicoAction extends GcomAction {
/**
* Execute do Consultar OS Popup
*
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return forward
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping.findForward("encerrarOrdemServico");
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
Integer numeroOS = Util.converterStringParaInteger(httpServletRequest.getParameter("numeroOS"));
String idMotivoEncerramento = httpServletRequest.getParameter("idMotivoEncerramento");
String dataEncerramento = httpServletRequest.getParameter("dataEncerramento");
String carregarCampos = httpServletRequest.getParameter("carregarCampos");
String retornoConsulta = httpServletRequest.getParameter("retornoConsulta");
String carregarCamposComReferencia = httpServletRequest.getParameter("carregarCamposComReferencia");
String pesquisaServicoTipo = httpServletRequest.getParameter("pesquisaServicoTipo");
String retornoTela = httpServletRequest.getParameter("retornoTela");
if (retornoTela != null && !retornoTela.equals("")) {
sessao.setAttribute("retornoTela", retornoTela);
}
Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado");
EncerrarOrdemServicoActionForm encerrarOrdemServicoActionForm = (EncerrarOrdemServicoActionForm) actionForm;
// caso tenha escolhido um tipo de servi�o
if (pesquisaServicoTipo != null && !pesquisaServicoTipo.equals("")) {
// valida enter
String idServicoTipo = encerrarOrdemServicoActionForm.getIdServicoTipo();
String descricaoServicoTipo = encerrarOrdemServicoActionForm.getDescricaoServicoTipo();
if ((idServicoTipo != null && !idServicoTipo.equals(""))
&& (descricaoServicoTipo == null || descricaoServicoTipo.equals(""))) {
FiltroServicoTipo filtroServicoTipo = new FiltroServicoTipo();
filtroServicoTipo.adicionarParametro(new ParametroSimples(
FiltroServicoTipo.ID, idServicoTipo));
filtroServicoTipo.adicionarParametro(new ParametroSimples(
FiltroServicoTipo.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection<ServicoTipo> servicoTipoEncontrado = fachada.pesquisar(filtroServicoTipo, ServicoTipo.class.getName());
if (servicoTipoEncontrado != null && !servicoTipoEncontrado.isEmpty()) {
ServicoTipo servicoTipo = (ServicoTipo) Util.retonarObjetoDeColecao(servicoTipoEncontrado);
// O servi�o tipo foi encontrado
encerrarOrdemServicoActionForm.setIdServicoTipo("" + servicoTipo.getId());
encerrarOrdemServicoActionForm.setDescricaoServicoTipo(servicoTipo.getDescricao());
httpServletRequest.setAttribute("idServicoTipoNaoEncontrado", "true");
httpServletRequest.setAttribute("nomeCampo", "ButtonAtividade");
} else {
encerrarOrdemServicoActionForm.setIdServicoTipo("");
httpServletRequest.setAttribute("nomeCampo", "idServicoTipo");
httpServletRequest.setAttribute("idServicoTipoNaoEncontrado", "exception");
encerrarOrdemServicoActionForm.setDescricaoServicoTipo("Tipo Servi�o Inexistente");
}
}
} else {
if (retornoConsulta == null || retornoConsulta.equals("")) {
if (carregarCamposComReferencia == null
|| carregarCamposComReferencia.equals("")) {
// caso o mitivo de encerramento n�o tenha sido mudado
if (carregarCampos == null || carregarCampos.equals("")) {
// [FS0001] - Verificar unidade do usu�rio
fachada.verificarUnidadeUsuario(numeroOS,
usuarioLogado);
// [FS0006] - Verificar Origem do Encerramento da Ordem
// de Servi�o
Date dataEncerramentoDate = null;
if(dataEncerramento !=null
&& !dataEncerramento.equalsIgnoreCase("")){
dataEncerramentoDate = Util
.converteStringParaDate(dataEncerramento);
}
fachada.verificarOrigemEncerramentoOS(numeroOS,dataEncerramentoDate);
OrdemServico ordemServico = pesquisarOrdemServico(numeroOS);
// limpa do campos do form
encerrarOrdemServicoActionForm
.resetarConsultarDadosOSPopup();
// seta o id do motivo encerramento
if (idMotivoEncerramento != null
&& !idMotivoEncerramento.equals("")) {
encerrarOrdemServicoActionForm
.setIdMotivoEncerramento(idMotivoEncerramento);
}
if (ordemServico.getImovel() != null && ordemServico.getImovel().getId() != null &&
ordemServico.getServicoTipo() != null && ordemServico.getServicoTipo().getDebitoTipo() != null) {
// Alterado por Rafael Corr�a em 06/11/2008
FiltroGuiaPagamento filtroGuiaPagamento = new FiltroGuiaPagamento();
filtroGuiaPagamento.adicionarParametro(new ParametroSimples(FiltroGuiaPagamento.DEBITO_TIPO_ID, ordemServico.getServicoTipo().getDebitoTipo().getId()));
filtroGuiaPagamento.adicionarParametro(new ParametroSimples(FiltroGuiaPagamento.EMISSAO_GUIA_PAGAMENTO, ordemServico.getDataGeracao()));
filtroGuiaPagamento.adicionarParametro(new ParametroSimples(FiltroGuiaPagamento.IMOVEL_ID, ordemServico.getImovel().getId()));
Collection<GuiaPagamento> colecaoGuiasPagamento = fachada.pesquisar(filtroGuiaPagamento, GuiaPagamento.class.getName());
if (colecaoGuiasPagamento != null && !colecaoGuiasPagamento.isEmpty()) {
encerrarOrdemServicoActionForm.setMostrarAlert("sim");
}
}
/*
* Alterado por Raphael Rossiter em 01/08/2007 (Analista: Rosana Carvalho)
*
* OBJETIVO: N�o colocar a data e a hora atual como sugest�o para a data e
* a hora de encerramento da Ordem de Servi�o
*/
if (dataEncerramento != null && dataEncerramento.equals("")) {
encerrarOrdemServicoActionForm
.setDataEncerramento(dataEncerramento);
}
//checar se a ordem de servi�o � assinalada com encerramento autom�tico
if (ordemServico.getIndicadorEncerramentoAutomatico() != null &&
ordemServico.getIndicadorEncerramentoAutomatico().equals(ConstantesSistema.SIM)){
throw new ActionServletException("atencao.indicador_encerramento_automatico_ordem_servico");
}
// Dados Gerais da OS
encerrarOrdemServicoActionForm.setNumeroOS(ordemServico
.getId()
+ "");
encerrarOrdemServicoActionForm
.setSituacaoOSId(ordemServico.getSituacao()
+ "");
// Caso de Uso [UC0454]
ObterDescricaoSituacaoOSHelper situacaoOS = fachada
.obterDescricaoSituacaoOS(ordemServico.getId());
encerrarOrdemServicoActionForm.setSituacaoOS(situacaoOS
.getDescricaoSituacao());
if (ordemServico.getRegistroAtendimento() != null) {
encerrarOrdemServicoActionForm
.setNumeroRA(ordemServico
.getRegistroAtendimento().getId()
+ "");
// Caso de Uso [UC0420]
ObterDescricaoSituacaoRAHelper situacaoRA = fachada
.obterDescricaoSituacaoRA(ordemServico
.getRegistroAtendimento().getId());
encerrarOrdemServicoActionForm
.setSituacaoRA(situacaoRA
.getDescricaoSituacao());
}
if (ordemServico.getCobrancaDocumento() != null) {
encerrarOrdemServicoActionForm
.setNumeroDocumentoCobranca(ordemServico
.getCobrancaDocumento().getId()
+ "");
}
encerrarOrdemServicoActionForm.setDataGeracao(Util
.formatarData(ordemServico.getDataGeracao()));
////////////////////////////////////////////////////////////////
gerarInformacoesBoletimMedicao(ordemServico.getId(),encerrarOrdemServicoActionForm);
////////////////////////////////////////////////////////////////
if (ordemServico.getServicoTipo() != null && !ordemServico.getServicoTipo().equals("")) {
encerrarOrdemServicoActionForm.setTipoServicoOSId(ordemServico.getServicoTipo().getId().toString());
encerrarOrdemServicoActionForm.setTipoServicoOSDescricao(ordemServico.getServicoTipo().getDescricao());
encerrarOrdemServicoActionForm.setIndicadorPavimento(String.valueOf(ordemServico.getServicoTipo().getIndicadorPavimento()));
//---------------------------------------------------------- [YTS - 30/05/2008]
//IndicadorPavimentoRua
encerrarOrdemServicoActionForm.setIndicadorPavimentoRua(
String.valueOf(ordemServico.getServicoTipo().getIndicadorPavimentoRua()));
FiltroPavimentoRua filtroPavimentoRua = new FiltroPavimentoRua();
filtroPavimentoRua.adicionarParametro(new ParametroSimples(FiltroPavimentoRua.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection<PavimentoRua> colecaoPavimentoRua = fachada.pesquisar(filtroPavimentoRua,PavimentoRua.class.getName());
sessao.setAttribute("colecaoPavimentoRua",colecaoPavimentoRua);
//IndicadorPavimentoCalcada
encerrarOrdemServicoActionForm.setIndicadorPavimentoCalcada(
String.valueOf(ordemServico.getServicoTipo().getIndicadorPavimentoCalcada()));
FiltroPavimentoCalcada filtroPavimentoCalcada = new FiltroPavimentoCalcada();
filtroPavimentoCalcada.adicionarParametro(new ParametroSimples(
FiltroPavimentoCalcada.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
Collection<PavimentoCalcada> colecaoPavimentoCalcada = fachada.pesquisar(
filtroPavimentoCalcada,PavimentoCalcada.class.getName());
sessao.setAttribute("colecaoPavimentoCalcada",colecaoPavimentoCalcada);
//---------------------------------------------------------------- [YTS - 30/05/2008]
/**
* Verifica se a ordem de servico � do tipo pavimento
* @author Arthur Carvalho
* @date 26/05/2010
*/
if ( ordemServico.getServicoTipo().getIndicadorPavimentoRua().equals(ConstantesSistema.SIM)) {
//SB0006 � Obter Unidade Repavimentadora do Munic�pio]
UnidadeOrganizacional unidadeOrganizacional = new UnidadeOrganizacional();
String tipoPesquisa = "";
unidadeOrganizacional = fachada.obterUnidadeRepavimentadorAPartirMunicipio(ordemServico,
tipoPesquisa);
encerrarOrdemServicoActionForm.setIdUnidadeRepavimentadora("-1");
//[FS0010] � Verificar exist�ncia da unidade repavimentadora
if(unidadeOrganizacional != null && !unidadeOrganizacional.equals("") ) {
encerrarOrdemServicoActionForm.setIdUnidadeRepavimentadora(
unidadeOrganizacional.getId().toString());
encerrarOrdemServicoActionForm.setDescricaoUnidadeRepavimentadora(
unidadeOrganizacional.getDescricao());
}
pesquisaUnidadeOrganizacional(encerrarOrdemServicoActionForm, fachada,sessao);
}
encerrarOrdemServicoActionForm.setIndicadorAtualizaComercial(
String.valueOf(ordemServico.getServicoTipo().getIndicadorAtualizaComercial()));
encerrarOrdemServicoActionForm.setIndicadorVistoriaServicoTipo(
String.valueOf(ordemServico.getServicoTipo().getIndicadorVistoria()));
if (ordemServico.getServicoTipo().getServicoTipoReferencia() != null
&& !ordemServico.getServicoTipo().getServicoTipoReferencia().equals("")) {
/*
* 19/03/2012
*
* Seta o ServicoTipoReferencia no form caso seja Diagnostico (1)
* ou Fiscalizacao (2)
*/
if (ordemServico.getServicoTipo().getServicoTipoReferencia()
.getId().equals(ServicoTipoReferencia.DIAGONISTICO_ID)
|| ordemServico.getServicoTipo().getServicoTipoReferencia()
.getId().equals(ServicoTipoReferencia.FISCALIZACAO_ID)) {
encerrarOrdemServicoActionForm
.setTipoServicoReferenciaId(""
+ ordemServico
.getServicoTipo()
.getServicoTipoReferencia()
.getId());
encerrarOrdemServicoActionForm
.setServicoTipoReferenciaDescricao(ordemServico
.getServicoTipo()
.getServicoTipoReferencia()
.getDescricao());
encerrarOrdemServicoActionForm
.setIndicadorDiagnostico(ordemServico
.getServicoTipo()
.getServicoTipoReferencia()
.getIndicadorDiagnostico()
+ "");
}
// fim da altera��o
/*
if (ordemServico.getServicoTipo().getServicoTipoReferencia() != null
&& !ordemServico.getServicoTipo().getServicoTipoReferencia().equals("")) {
encerrarOrdemServicoActionForm.setTipoServicoReferenciaId(
String.valueOf(ordemServico.getServicoTipo().getServicoTipoReferencia().getId()));
encerrarOrdemServicoActionForm.setTipoServicoReferenciaIndicadorFiscalizacao(
String.valueOf(ordemServico.getServicoTipo().getServicoTipoReferencia().getIndicadorFiscalizacao()));
encerrarOrdemServicoActionForm.setServicoTipoReferenciaDescricao(ordemServico.getServicoTipo()
.getServicoTipoReferencia().getDescricao());
encerrarOrdemServicoActionForm.setIndicadorDiagnostico(
String.valueOf(ordemServico.getServicoTipo().getServicoTipoReferencia().getIndicadorDiagnostico()));
}*/
}
}
// dados da referencia do servi�o tipo da OS
if (ordemServico.getServicoTipoReferencia() != null
&& !ordemServico.getServicoTipoReferencia()
.equals("")) {
encerrarOrdemServicoActionForm
.setServicoTipoReferenciaOS(""
+ ordemServico
.getServicoTipoReferencia()
.getId());
encerrarOrdemServicoActionForm
.setServicoTipoReferenciaOSDescricao(""
+ ordemServico
.getServicoTipoReferencia()
.getDescricao());
}
if (ordemServico.getOsReferencia() != null) {
sessao.setAttribute("osReferencia", ordemServico
.getOsReferencia());
if (ordemServico.getOsReferencia().getServicoTipo() != null
&& !ordemServico.getOsReferencia()
.getServicoTipo().equals("")) {
encerrarOrdemServicoActionForm
.setTipoServicoReferenciaDescricao(ordemServico
.getOsReferencia()
.getServicoTipo()
.getDescricao());
}
}
encerrarOrdemServicoActionForm
.setObservacao(ordemServico.getObservacao());
encerrarOrdemServicoActionForm
.setValorServicoOriginal(ordemServico
.getValorOriginal()
+ "");
encerrarOrdemServicoActionForm
.setPrioridadeOriginal(ordemServico
.getServicoTipoPrioridadeOriginal()
.getDescricao());
encerrarOrdemServicoActionForm
.setPrioridadeAtual(ordemServico
.getServicoTipoPrioridadeAtual()
.getDescricao()
+ "");
OrdemServicoUnidade ordemServicoUnidade = consultarOrdemServicoUnidade(
ordemServico.getId(),
AtendimentoRelacaoTipo.ABRIR_REGISTRAR);
if (ordemServicoUnidade != null) {
encerrarOrdemServicoActionForm
.setUnidadeGeracaoId(ordemServicoUnidade
.getUnidadeOrganizacional().getId()
+ "");
encerrarOrdemServicoActionForm
.setUnidadeGeracaoDescricao(ordemServicoUnidade
.getUnidadeOrganizacional()
.getDescricao());
encerrarOrdemServicoActionForm
.setUsuarioGeracaoId(ordemServicoUnidade
.getUsuario().getId()
+ "");
encerrarOrdemServicoActionForm
.setUsuarioGeracaoNome(ordemServicoUnidade
.getUsuario().getNomeUsuario());
}
if (ordemServico.getDataEmissao() != null) {
encerrarOrdemServicoActionForm
.setDataUltimaEmissao(Util
.formatarData(ordemServico
.getDataEmissao()));
}
encerrarOrdemServicoActionForm
.setUltimaAlteracao(ordemServico
.getUltimaAlteracao());
Collection colecaoAtendimentoMotivoEncerrado = null;
Collection<ServicoTipoMotivoEncerramento> colecaoServicosTipoMotivoEncerramento = null;
/** [RN20011071113]
* [FS0013] - Verificar Motivo de Encerramento
* Autor: Paulo Diniz
* Data: 22/07/2011
*/
if(ordemServico != null && ordemServico.getServicoTipo() != null){
FiltroServicoTipoMotivoEncerramento filtroServicoTipoMotivoEncerramento = new FiltroServicoTipoMotivoEncerramento();
filtroServicoTipoMotivoEncerramento.adicionarCaminhoParaCarregamentoEntidade(FiltroServicoTipoMotivoEncerramento.ATENDIMENTO_MOTIVO_ENCERRAMENTO);
filtroServicoTipoMotivoEncerramento.adicionarParametro(new ParametroSimples(FiltroServicoTipoMotivoEncerramento.SERVICO_TIPO_ID,ordemServico.getServicoTipo().getId() ));
filtroServicoTipoMotivoEncerramento
.adicionarParametro(new ParametroSimples(
FiltroServicoTipoMotivoEncerramento.ATENDIMENTO_MOTIVO_ENCERRAMENTO_INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
filtroServicoTipoMotivoEncerramento
.adicionarParametro(new ParametroSimples(
FiltroServicoTipoMotivoEncerramento.ATENDIMENTO_MOTIVO_ENCERRAMENTO_INDICADOR_DUPLICIDADE,
AtendimentoMotivoEncerramento.INDICADOR_DUPLICIDADE_INATIVO));
colecaoServicosTipoMotivoEncerramento = fachada.pesquisar(
filtroServicoTipoMotivoEncerramento, ServicoTipoMotivoEncerramento.class.getName());
}
if(colecaoServicosTipoMotivoEncerramento != null && !colecaoServicosTipoMotivoEncerramento.isEmpty()){
colecaoAtendimentoMotivoEncerrado = new ArrayList<AtendimentoMotivoEncerramento>();
for (ServicoTipoMotivoEncerramento servicoTipoMotivoEncerramento : colecaoServicosTipoMotivoEncerramento) {
colecaoAtendimentoMotivoEncerrado.add(servicoTipoMotivoEncerramento.getMotivoEncerramento());
}
}else{
FiltroAtendimentoMotivoEncerramento filtroAtendimentoMotivoEncerramento = new FiltroAtendimentoMotivoEncerramento();
filtroAtendimentoMotivoEncerramento
.adicionarParametro(new ParametroSimples(
FiltroAtendimentoMotivoEncerramento.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
filtroAtendimentoMotivoEncerramento
.adicionarParametro(new ParametroSimples(
FiltroAtendimentoMotivoEncerramento.INDICADOR_DUPLICIDADE,
AtendimentoMotivoEncerramento.INDICADOR_DUPLICIDADE_INATIVO));
colecaoAtendimentoMotivoEncerrado = fachada
.pesquisar(filtroAtendimentoMotivoEncerramento,
AtendimentoMotivoEncerramento.class
.getName());
}
sessao.setAttribute(
"colecaoAtendimentoMotivoEncerrado",
colecaoAtendimentoMotivoEncerrado);
if (encerrarOrdemServicoActionForm
.getIdMotivoEncerramento() != null
&& !encerrarOrdemServicoActionForm
.getIdMotivoEncerramento().equals("")) {
Iterator iteAtendimentoMotivoEncerramento = colecaoAtendimentoMotivoEncerrado
.iterator();
while (iteAtendimentoMotivoEncerramento.hasNext()) {
AtendimentoMotivoEncerramento atendimentoMotivoEncerramento = (AtendimentoMotivoEncerramento) iteAtendimentoMotivoEncerramento
.next();
if (atendimentoMotivoEncerramento.getId() != null
&& atendimentoMotivoEncerramento
.getId()
.equals(
Util
.converterStringParaInteger(encerrarOrdemServicoActionForm
.getIdMotivoEncerramento()))) {
encerrarOrdemServicoActionForm
.setIndicadorExecucao(""
+ atendimentoMotivoEncerramento
.getIndicadorExecucao());
break;
}
}
} else {
encerrarOrdemServicoActionForm
.setIndicadorExecucao("");
}
} else {
if (encerrarOrdemServicoActionForm
.getIdMotivoEncerramento() != null
&& !encerrarOrdemServicoActionForm
.getIdMotivoEncerramento().equals("")) {
Collection colecaoAtendimentoMotivoEncerrado = (Collection) sessao
.getAttribute("colecaoAtendimentoMotivoEncerrado");
Iterator iteAtendimentoMotivoEncerramento = colecaoAtendimentoMotivoEncerrado
.iterator();
while (iteAtendimentoMotivoEncerramento.hasNext()) {
AtendimentoMotivoEncerramento atendimentoMotivoEncerramento = (AtendimentoMotivoEncerramento) iteAtendimentoMotivoEncerramento
.next();
if (atendimentoMotivoEncerramento.getId() != null
&& atendimentoMotivoEncerramento
.getId()
.equals(
Util
.converterStringParaInteger(encerrarOrdemServicoActionForm
.getIdMotivoEncerramento()))) {
encerrarOrdemServicoActionForm
.setIndicadorExecucao(""
+ atendimentoMotivoEncerramento
.getIndicadorExecucao());
// 4.6 caso o indicador de execu��o seja
// igual a
// sim(1)
if (atendimentoMotivoEncerramento
.getIndicadorExecucao() == AtendimentoMotivoEncerramento.INDICADOR_EXECUCAO_SIM) {
// 4.6.2 caso o servi�o tipo da ordem de
// servi�o
// tenha refer�ncia
if (encerrarOrdemServicoActionForm
.getTipoServicoReferenciaId() != null
&& !encerrarOrdemServicoActionForm
.getTipoServicoReferenciaId()
.equals(""))
encerrarComExecucaoComReferencia(
fachada,
sessao,
httpServletRequest,
encerrarOrdemServicoActionForm,
numeroOS);
}
break;
}
}
} else {
encerrarOrdemServicoActionForm
.setIndicadorExecucao("");
encerrarOrdemServicoActionForm.setPavimento("");
//----------------------------------------------- [YTS - 30/05/2008]
encerrarOrdemServicoActionForm.setIndicadorPavimentoCalcada("");
encerrarOrdemServicoActionForm.setIndicadorPavimentoRua("");
//----------------------------------------------- [YTS - 30/05/2008]
encerrarOrdemServicoActionForm.setObservacao("");
encerrarOrdemServicoActionForm
.setServicoTipoObrigatorio("");
encerrarOrdemServicoActionForm
.setIndicadorDeferimento("");
encerrarOrdemServicoActionForm.setIdServicoTipo("");
encerrarOrdemServicoActionForm
.setDescricaoServicoTipo("");
encerrarOrdemServicoActionForm
.setIdTipoRetornoReferida("");
sessao.removeAttribute("colecaoServicoTipo");
}
}
} else {
// caso seja mudado o Tipo de Retorno Referida
encerrarComExecucaoComReferencia(fachada, sessao,
httpServletRequest, encerrarOrdemServicoActionForm,
numeroOS);
}
} else {
if (retornoConsulta.equals("informarOS")) {
httpServletRequest.setAttribute("nomeCampo",
"ButtonOSFiscalizacao");
}
}
}
/*
* Colocado por Raphael Rossiter em 01/08/2007
* OBJETIVO: Informar qual o campo receber� o foco no carregamento, caso nenhum j� tenh sido
* informado
*/
if (httpServletRequest.getAttribute("nomeCampo") == null){
httpServletRequest.setAttribute("nomeCampo", "dataEncerramento");
}
if(encerrarOrdemServicoActionForm.getIndicadorServicoAceito() == null ||
encerrarOrdemServicoActionForm.getIndicadorServicoAceito().equalsIgnoreCase("")){
encerrarOrdemServicoActionForm.setIndicadorServicoAceito("1");
}
return retorno;
}
/**
* Consulta a ordem de servi�o pelo id informado
*
* @author S�vio Luiz
* @created 22/03/2007
*/
private void validarOrdemServicoFiscalizacao(OrdemServico ordemServico) {
if (ordemServico.getServicoTipo() != null
&& ordemServico.getServicoTipo()
.getIndicadorFiscalizacaoInfracao() == ConstantesSistema.INDICADOR_USO_ATIVO) {
if (ordemServico.getFiscalizacaoSituacao() == null
|| ordemServico.getFiscalizacaoSituacao().getId() == null || ordemServico
.getFiscalizacaoSituacao().getId().equals("")) {
throw new ActionServletException("atencao.ordem_servico_fiscalizacao_imovel");
}
}
}
/**
* Consulta a ordem de servi�o pelo id informado
*
* @author S�vio Luiz
* @created 18/09/2006
*/
private OrdemServico pesquisarOrdemServico(Integer id) {
Fachada fachada = Fachada.getInstancia();
OrdemServico retorno = fachada.consultarDadosOrdemServico(id);
if (retorno == null) {
throw new ActionServletException("atencao.naocadastrado", null,
"Ordem de Servi�o");
}
validarOrdemServicoFiscalizacao(retorno);
return retorno;
}
/**
* Consulta a Ordem Servi�o Unidade pelo id do OS e Tipo (1=ABRIR/REGISTRAR
* e 3-ENCERRAR)
*
* @author S�vio luiz
* @date 18/09/2006
*/
private OrdemServicoUnidade consultarOrdemServicoUnidade(Integer idOS,
Integer idAtendimentoTipo) {
OrdemServicoUnidade retorno = null;
Fachada fachada = Fachada.getInstancia();
Collection colecaoOrdemServicoUnidade = null;
FiltroOrdemServicoUnidade filtroOrdemServicoUnidade = new FiltroOrdemServicoUnidade();
filtroOrdemServicoUnidade.adicionarParametro(new ParametroSimples(
FiltroOrdemServicoUnidade.ORDEM_SERVICO_ID, idOS));
filtroOrdemServicoUnidade.adicionarParametro(new ParametroSimples(
FiltroOrdemServicoUnidade.ATENDIMENTO_RELACAO_TIPO_ID,
idAtendimentoTipo));
filtroOrdemServicoUnidade
.adicionarCaminhoParaCarregamentoEntidade("unidadeOrganizacional");
filtroOrdemServicoUnidade
.adicionarCaminhoParaCarregamentoEntidade("usuario");
colecaoOrdemServicoUnidade = fachada.pesquisar(
filtroOrdemServicoUnidade, OrdemServicoUnidade.class.getName());
if (colecaoOrdemServicoUnidade != null
&& !colecaoOrdemServicoUnidade.isEmpty()) {
retorno = (OrdemServicoUnidade) Util
.retonarObjetoDeColecao(colecaoOrdemServicoUnidade);
}
return retorno;
}
private void encerrarComExecucaoComReferencia(Fachada fachada,
HttpSession sessao, HttpServletRequest httpServletRequest,
EncerrarOrdemServicoActionForm encerrarOrdemServicoActionForm,
Integer numeroOS) {
// verifica a existencia da cole��o na sess�o
Collection colecaoOSReferidaRetornoTipo = (Collection) sessao
.getAttribute("colecaoOSReferidaRetornoTipo");
// caso n�o exista ent�o pesquisa na base
if (colecaoOSReferidaRetornoTipo == null
|| colecaoOSReferidaRetornoTipo.isEmpty()) {
FiltroOSReferidaRetornoTipo filtroOSReferidaRetornoTipo = new FiltroOSReferidaRetornoTipo(
FiltroOSReferidaRetornoTipo.DESCRICAO);
filtroOSReferidaRetornoTipo
.adicionarParametro(new ParametroSimples(
FiltroOSReferidaRetornoTipo.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
filtroOSReferidaRetornoTipo
.adicionarParametro(new ParametroSimples(
FiltroOSReferidaRetornoTipo.ID_SERVICO_TIPO_REFERENCIA,
encerrarOrdemServicoActionForm
.getTipoServicoReferenciaId()));
colecaoOSReferidaRetornoTipo = fachada.pesquisar(
filtroOSReferidaRetornoTipo, OsReferidaRetornoTipo.class
.getName());
sessao.setAttribute("colecaoOSReferidaRetornoTipo",
colecaoOSReferidaRetornoTipo);
} else {
// verifica se foi escolhida um tipo de retorno referida
if (encerrarOrdemServicoActionForm.getIdTipoRetornoReferida() != null
&& !encerrarOrdemServicoActionForm
.getIdTipoRetornoReferida().equals("")) {
Integer idTipoRetornoReferida = Util
.converterStringParaInteger(encerrarOrdemServicoActionForm
.getIdTipoRetornoReferida());
Iterator iteratorOSReferidaRetorno = colecaoOSReferidaRetornoTipo
.iterator();
while (iteratorOSReferidaRetorno.hasNext()) {
OsReferidaRetornoTipo osReferidaRetornoTipo = (OsReferidaRetornoTipo) iteratorOSReferidaRetorno
.next();
// procura pelo id o objeto que foi escolhido na cole��o que
// est� na sess�o
if (osReferidaRetornoTipo.getId() != null
&& osReferidaRetornoTipo.getId().equals(
idTipoRetornoReferida)) {
encerrarOrdemServicoActionForm
.setIndicadorDeferimento(""
+ osReferidaRetornoTipo
.getIndicadorDeferimento());
// 9.1 indicador de deferimento igual a sim(1)
if (osReferidaRetornoTipo.getIndicadorDeferimento() == OsReferidaRetornoTipo.INDICADOR_DEFERIMENTO_SIM) {
encerrarOrdemServicoActionForm
.setServicoTipoObrigatorio("SIM");
encerrarOrdemServicoActionForm
.setIndicadorTrocaServico(""
+ osReferidaRetornoTipo
.getIndicadorTrocaServico());
// 9.1.2 indicador de servi�o de troca igual a
// sim(1)
if (osReferidaRetornoTipo
.getIndicadorTrocaServico() == OsReferidaRetornoTipo.INDICADOR_TROCA_SERVICO_SIM) {
// 9.1.2.1 caso a ordem de servi�o tenha
// refer�ncia
if (encerrarOrdemServicoActionForm
.getNumeroOSReferencia() != null
&& !encerrarOrdemServicoActionForm
.getNumeroOSReferencia()
.equals("")) {
Collection colecaoServicoTipo = fachada
.pesquisarColecaoServicoTipo(numeroOS);
if (colecaoServicoTipo != null
&& !colecaoServicoTipo.isEmpty()) {
sessao.setAttribute(
"colecaoServicoTipo",
colecaoServicoTipo);
}
}
// 9.1.3 servi�o tipo n�o � obrigat�rio ent�o
// n�o mostra o label
} else {
encerrarOrdemServicoActionForm
.setServicoTipoObrigatorio("NAO");
sessao.removeAttribute("colecaoServicoTipo");
}
// 9.2 indicador de deferimento igual a n�o(2)
} else {
// [FS0003] - Alerta de Indeferimento
httpServletRequest
.setAttribute("atencaoIndeferimento",
"O Tipo de Retorno selecionado � de indeferimento.");
encerrarOrdemServicoActionForm
.setServicoTipoObrigatorio("NAO");
sessao.removeAttribute("colecaoServicoTipo");
}
break;
}
}
} else {
encerrarOrdemServicoActionForm.setServicoTipoObrigatorio("");
encerrarOrdemServicoActionForm.setIndicadorDeferimento("");
encerrarOrdemServicoActionForm.setIdServicoTipo("");
encerrarOrdemServicoActionForm.setDescricaoServicoTipo("");
encerrarOrdemServicoActionForm.setPavimento("");
//----------------------------------------------- [YTS - 30/05/2008]
encerrarOrdemServicoActionForm.setIndicadorPavimentoCalcada("");
encerrarOrdemServicoActionForm.setIndicadorPavimentoRua("");
//----------------------------------------------- [YTS - 30/05/2008]
encerrarOrdemServicoActionForm.setIdTipoRetornoReferida("");
sessao.removeAttribute("colecaoServicoTipo");
}
}
}
/**
*
* @author Arthur Carvalho
* @date 12/04/2010
* [UC0457] Encerrar Ordem de Servi�o
* [SB0006 � Obter Unidade Repavimentadora do Munic�pio]
*/
// public UnidadeOrganizacional obterUnidadeRepavimentadoraMunicipio(OrdemServico ordemServico,
// Fachada fachada) {
//
// String tipoPesquisa = "";
// UnidadeOrganizacional unidadeOrganizacional = null;
//
// //1.1. Caso a ordem de servi�o esteja associada a um registro de atendimento
// if ( ordemServico.getRegistroAtendimento() != null ) {
//
// //1.1.1.Caso o endere�o do local da ocorr�ncia do registro de atendimento seja pelo CEP
// if ( ordemServico.getRegistroAtendimento().getLogradouroCep() != null ) {
// tipoPesquisa = ConstantesSistema.PESQUISA_PELO_CEP;
// unidadeOrganizacional = fachada.
// obterUnidadeRepavimentadorAPartirMunic�pio(ordemServico,
// tipoPesquisa);
// } else {
// tipoPesquisa = ConstantesSistema.PESQUISA_PELO_BAIRRO;
// unidadeOrganizacional = fachada.
// obterUnidadeRepavimentadorAPartirMunic�pio(ordemServico,
// tipoPesquisa) ;
// }
// } else {
// tipoPesquisa = ConstantesSistema.PESQUISA_PELO_IMOVEL;
// unidadeOrganizacional = fachada.
// obterUnidadeRepavimentadorAPartirMunic�pio(ordemServico,
// tipoPesquisa) ;
// }
//
// return unidadeOrganizacional;
//
// }
//Pesquisa Unidade Repavimentadora(unidadeORganizacional)
private UnidadeOrganizacional pesquisaUnidadeOrganizacional(EncerrarOrdemServicoActionForm form,
Fachada fachada, HttpSession sessao ){
UnidadeOrganizacional unidadeOrganizacional = new UnidadeOrganizacional();
String idUnidade = form.getIdUnidadeRepavimentadora();
if ( idUnidade != null && !idUnidade.equals("-1") ) {
FiltroUnidadeOrganizacional filtro = new FiltroUnidadeOrganizacional();
filtro.adicionarParametro(new ParametroSimples(
FiltroUnidadeOrganizacional.ID, idUnidade));
filtro.adicionarParametro(new ParametroSimples(
FiltroUnidadeOrganizacional.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
//Unidade Tipo R = REPAVIMENTADORA.
filtro.adicionarParametro(new ParametroSimples(
FiltroUnidadeOrganizacional.UNIDADE_TIPO_CODIGO, "R" ) );
filtro.adicionarCaminhoParaCarregamentoEntidade(FiltroUnidadeOrganizacional.UNIDADE_TIPO);
Collection colecaoUnidadeOrgazanicional = fachada.pesquisar(filtro, UnidadeOrganizacional.class.getName());
//Sugestao de unidade para o usuario
if (colecaoUnidadeOrgazanicional != null && !colecaoUnidadeOrgazanicional.isEmpty()) {
UnidadeOrganizacional unidade = (UnidadeOrganizacional) Util.retonarObjetoDeColecao(colecaoUnidadeOrgazanicional);
form.setIdUnidadeRepavimentadora(unidade.getId().toString());
}
FiltroUnidadeOrganizacional filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional();
filtroUnidadeOrganizacional.adicionarParametro(new ParametroSimples(
FiltroUnidadeOrganizacional.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
//Unidade Tipo R = REPAVIMENTADORA.
filtroUnidadeOrganizacional.adicionarParametro(new ParametroSimples(
FiltroUnidadeOrganizacional.UNIDADE_TIPO_CODIGO, "R" ) );
filtroUnidadeOrganizacional.adicionarCaminhoParaCarregamentoEntidade(FiltroUnidadeOrganizacional.UNIDADE_TIPO);
Collection colecaoUnidade = fachada.pesquisar(filtroUnidadeOrganizacional,
UnidadeOrganizacional.class.getName());
if (colecaoUnidade != null && !colecaoUnidade.isEmpty()) {
sessao.setAttribute("colecaoUnidadeOrgazanicional", colecaoUnidade);
}
}else {
FiltroUnidadeOrganizacional filtro = new FiltroUnidadeOrganizacional();
filtro.adicionarParametro(new ParametroSimples(
FiltroUnidadeOrganizacional.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
//Unidade Tipo R = REPAVIMENTADORA.
filtro.adicionarParametro(new ParametroSimples(
FiltroUnidadeOrganizacional.UNIDADE_TIPO_CODIGO, "R" ) );
filtro.adicionarCaminhoParaCarregamentoEntidade(FiltroUnidadeOrganizacional.UNIDADE_TIPO);
Collection colecaoUnidadeOrgazanicional = fachada.pesquisar(filtro, UnidadeOrganizacional.class.getName());
if (colecaoUnidadeOrgazanicional != null && !colecaoUnidadeOrgazanicional.isEmpty()) {
sessao.setAttribute("colecaoUnidadeOrgazanicional", colecaoUnidadeOrgazanicional);
} else {
throw new ActionServletException("erro.nao_existe_unidade_repavimentadora");
}
}
return unidadeOrganizacional;
}
/**
* [UC0457] Encerrar Ordem de Servi�o
* [SB0007]- Gerar Informa��es para Boletim de Medi��o.
*
* @author Vivianne Sousa
* @created 26/01/2011
*/
private void gerarInformacoesBoletimMedicao(
Integer idOrdemServico,EncerrarOrdemServicoActionForm form) {
String exibeIndicadorExistePavimento = "2";
String exibeQtdeReposicaoAsfalto = "2";
String exibeQtdeReposicaoCalcada = "2";
String exibeQtdeReposicaoParalelo = "2";
ServicoTipo servicoTipo = getFachada().
recuperaServicoTipoDaOrdemServico(idOrdemServico);
if(servicoTipo.getIndicadorBoletim().equals(ConstantesSistema.SIM)){
//Caso o indicador do servi�o da ordem de servi�o
//que est� sendo encerrada tenha indicador para obter
//as informa��es para gera��o do boletim de medi��o
ServicoTipoBoletim servicoTipoBoletim = getFachada().
recuperaServicoTipoBoletimDoServicoTipo(servicoTipo.getId());
if(servicoTipoBoletim != null){
//1.1.Caso o indicador de pavimento esteja solicitando
//a informa��o da exist�ncia de pavimento
if(servicoTipoBoletim.getIndicadorPavimento().equals(ConstantesSistema.SIM)){
//1.1.1.O sistema dever� solicitar a informa��o
//de exist�ncia do pavimento (Sim ou N�o, obrigatoriamente)
exibeIndicadorExistePavimento = "1";
}else{
form.setIndicadorExistePavimento(null);
}
//1.2.Caso o indicador de quantidade de reposi��o em m�
//de asfalto esteja solicitando a informa��o do valor
if(servicoTipoBoletim.getIndicadorReposicaoAsfalto().equals(ConstantesSistema.SIM)){
//1.2.1.O sistema dever� solicitar a informa��o da quantidade de reposi��o em m� de asfalto.
//[FS0011 � Validar a quantidade m�]
exibeQtdeReposicaoAsfalto = "1";
}else{
form.setQtdeReposicaoAsfalto(null);
}
//1.3.Caso o indicador de quantidade de reposi��o em m�
//de paralelo esteja solicitando a informa��o do valor
if(servicoTipoBoletim.getIndicadorReposicaoParalelo().equals(ConstantesSistema.SIM)){
//1.3.1.O sistema dever� solicitar a informa��o da quantidade de reposi��o em m� de asfalto.
//[FS0011 � Validar a quantidade m�]
exibeQtdeReposicaoParalelo = "1";
}else{
form.setQtdeReposicaoParalelo(null);
}
//1.4.Caso o indicador de quantidade de reposi��o em m�
//de cal�ada esteja solicitando a informa��o do valor
if(servicoTipoBoletim.getIndicadorReposicaoCalcada().equals(ConstantesSistema.SIM)){
//1.4.1.O sistema dever� solicitar a informa��o da quantidade de reposi��o em m� de cal�ada.
//[FS0011 � Validar a quantidade m�]
exibeQtdeReposicaoCalcada = "1";
}else{
form.setQtdeReposicaoCalcada(null);
}
}
}
form.setExibeIndicadorExistePavimento(exibeIndicadorExistePavimento);
form.setExibeQtdeReposicaoAsfalto(exibeQtdeReposicaoAsfalto);
form.setExibeQtdeReposicaoParalelo(exibeQtdeReposicaoParalelo);
form.setExibeQtdeReposicaoCalcada(exibeQtdeReposicaoCalcada);
}
}