package gcom.gui.atendimentopublico.ordemservico; import gcom.atendimentopublico.ordemservico.BoletimOsConcluida; import gcom.atendimentopublico.ordemservico.FiltroBoletimOSConcluida; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.seguranca.acesso.usuario.FiltroUsuario; 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.Iterator; 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; /** * [UC0753] Manter Ordem de Servico Concluida * * @author Ivan S�rgio * @created 26/03/2008 */ public class ManterOrdemServicoConcluidaAction extends GcomAction { /** * @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("telaSucesso"); Fachada fachada = Fachada.getInstancia(); //HttpSession sessao = httpServletRequest.getSession(false); ManterOrdemServicoConcluidaActionForm form = (ManterOrdemServicoConcluidaActionForm) actionForm; //******************************************************************************************** // Data da Fiscalizacao deve ser anterior a data corrente. // Data da Fiscalizacao deve ser maior ou igual a Data de Encerramento da O.S. // Data de Fiscalizacao deve ser maior ou igual a ultima data da fiscalizacao. //******************************************************************************************** Date dataAtual = new Date(); String data = Util.getDiaMes(dataAtual) + "/" + Util.getMes(dataAtual) + "/" + Util.getAno(dataAtual); dataAtual = Util.converteStringParaDate(data); Date dataFicalizacao = new Date(); Date dataFicalizacaoAnt = new Date(); boolean possuiDataFiscalizacaoAnt = false; Date dataEncerramentoOS = new Date(); dataEncerramentoOS = Util.converteStringParaDate(form.getDataEncerramento()); int indicadorDataVerificacao = 0; if (!form.getDataFiscalizacao1().equals("")) { indicadorDataVerificacao = 1; } if (!form.getDataFiscalizacao2().equals("")) { indicadorDataVerificacao = 2; } if (!form.getDataFiscalizacao3().equals("")) { indicadorDataVerificacao = 3; } switch (indicadorDataVerificacao) { // Faz a verificacao na 1a data de Fiscalizacao case 1: dataFicalizacao = Util.converteStringParaDate(form.getDataFiscalizacao1()); break; // Faz a verificacao na 2a data de Fiscalizacao case 2: dataFicalizacao = Util.converteStringParaDate(form.getDataFiscalizacao2()); dataFicalizacaoAnt = Util.converteStringParaDate(form.getDataFiscalizacao1()); possuiDataFiscalizacaoAnt = true; break; // Faz a verificacao na 3a data de Fiscalizacao case 3: dataFicalizacao = Util.converteStringParaDate(form.getDataFiscalizacao3()); dataFicalizacaoAnt = Util.converteStringParaDate(form.getDataFiscalizacao2()); possuiDataFiscalizacaoAnt = true; break; } if (indicadorDataVerificacao > 0) { if (dataFicalizacao.compareTo(dataAtual) >= 0) { throw new ActionServletException("atencao.data_fiscalizacao_anterior_corrente", null, indicadorDataVerificacao + "� "); }else if (dataFicalizacao.compareTo(dataEncerramentoOS) < 0) { throw new ActionServletException("atencao.data_fiscalizacao_anterior_data_encerramento_os", null, indicadorDataVerificacao + "� "); }else if (possuiDataFiscalizacaoAnt) { if (dataFicalizacao.compareTo(dataFicalizacaoAnt) < 0) { throw new ActionServletException("atencao.data_fiscalizacao_menor_data_fiscalizacao_anterior", null, indicadorDataVerificacao + "� "); } } } //******************************************************** //******************************************************** // Verifica a Matricula do Funcionario //******************************************************** if (!Util.converterStringParaInteger(form.getCodigoFiscalizacao()).equals(0)) { FiltroUsuario filtroUsuario = new FiltroUsuario(); filtroUsuario.adicionarParametro(new ParametroSimples( FiltroUsuario.ID, form.getIdUsuario())); Collection dadosUsuario = fachada.pesquisar(filtroUsuario, Usuario.class.getName()); if (dadosUsuario.isEmpty()) { throw new ActionServletException("pesquisa.funcionario.inexistente"); } } //************************************************************* // [FS0005] - Atualizacao Realizada Por Outro Usuario //************************************************************* FiltroBoletimOSConcluida filtroBoletim = new FiltroBoletimOSConcluida(); filtroBoletim.adicionarParametro(new ParametroSimples( FiltroBoletimOSConcluida.ID, form.getIdOrdemServico())); //filtroBoletim.adicionarParametro(new ParametroSimples( // FiltroBoletimOSConcluida.ULTIMA_ALTERACAO, form.getDataUltimaAlteracao())); Collection dadosBoletim = fachada.pesquisar(filtroBoletim, BoletimOsConcluida.class.getName()); Iterator iDadosBoletim = dadosBoletim.iterator(); BoletimOsConcluida b = (BoletimOsConcluida) iDadosBoletim.next(); if (!b.getUltimaAlteracao().toString().equals(form.getDataUltimaAlteracao())) { throw new ActionServletException("atencao.registro_atualizado_por_outro_usuario"); } //********************************************************************* // Realiza a Manutencao nos dados do Boletim de Datas de Fiscalizacao //********************************************************************* fachada.atualizarDadosFiscalizacao( Util.converterStringParaInteger(form.getIdOrdemServico()), new Short(form.getCodigoFiscalizacao()), form.getDataFiscalizacao1(), form.getDataFiscalizacao2(), form.getDataFiscalizacao3(), Util.converterStringParaInteger(form.getIdUsuario()), new Short(form.getCodigoFiscalizacaoAnterior())); montarPaginaSucesso(httpServletRequest, "OS de c�digo " + form.getIdOrdemServico() + " atualizada com sucesso.", "Atualizar dados da Fiscaliza��o", "exibirAtualizarOrdemServicoConcluidaAction.do?menu=sim"); return retorno; } }