package gcom.gui.atendimentopublico.ordemservico; import gcom.atendimentopublico.ordemservico.FiltroOrdemServico; import gcom.atendimentopublico.ordemservico.FiltroServicoTipo; import gcom.atendimentopublico.ordemservico.OrdemServico; import gcom.atendimentopublico.ordemservico.ServicoTipo; import gcom.atendimentopublico.registroatendimento.AtendimentoMotivoEncerramento; 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.ConstantesSistema; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.math.BigDecimal; 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; /** * [UC1176] Gerar Ordem de Fiscaliza��o para Ordem de Servi�o Encerrada * @author Vivianne Sousa * @date 20/05/2011 */ public class GerarOSSeletivaFiscalizacaoAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { // cria a vari�vel de retorno ActionForward retorno = actionMapping.findForward("telaSucesso"); Fachada fachada = Fachada.getInstancia(); GerarOSSeletivaFiscalizacaoActionForm form = (GerarOSSeletivaFiscalizacaoActionForm) actionForm; HttpSession sessao = httpServletRequest.getSession(false); Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado"); SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema(); pesquisarordemServico(fachada, form, sistemaParametro); Integer qtdeDiasEncerramentoOS = new Integer(form.getQtdeDiasEncerramentoOS()); if(qtdeDiasEncerramentoOS.equals(new Integer("0")) || qtdeDiasEncerramentoOS.compareTo(sistemaParametro.getQtdeDiasEncerraOSFiscalizacao()) == 1){ throw new ActionServletException("atencao.quantidade_dias_encerramento_os_maior_zero", null, sistemaParametro.getQtdeDiasEncerraOSFiscalizacao().toString()); } //bot�o pesquisar Integer idOrdemServico = null; Integer idGrupoCobranca = null; Integer idGerencia = null; Integer idUnidade = null; Integer idLocalidadeInicial = null; Integer idLocalidadeFinal = null; Integer idTipoServico = null; BigDecimal percentualOSgeradas = null; Collection colecaoOSFiscalizacao = null; if(form.getIdOrdemServico() != null && !form.getIdOrdemServico().equals("")){ //se usuario selecionou Ordem de Servi�o idOrdemServico = new Integer(form.getIdOrdemServico()); Collection colecaoOs = new ArrayList(); colecaoOs.add(idOrdemServico); ServicoTipo servicoTipo = null; FiltroServicoTipo filtroServicoTipo = new FiltroServicoTipo(); filtroServicoTipo.adicionarParametro(new ParametroSimples(FiltroServicoTipo.ID, ServicoTipo.TIPO_FISCALIZACAO)); Collection colecaoServicoTipo = fachada.pesquisar(filtroServicoTipo, ServicoTipo.class.getName()); if(colecaoServicoTipo != null && !colecaoServicoTipo.isEmpty()){ servicoTipo = (ServicoTipo) colecaoServicoTipo.iterator().next(); } //[SB0004 � Gerar Ordem de Fiscaliza��o] colecaoOSFiscalizacao = fachada.gerarOrdemServicoFiscalizacao(colecaoOs,servicoTipo,usuarioLogado); }else{ if(form.getGrupoCobranca() != null && !form.getGrupoCobranca().equals("") && !form.getGrupoCobranca().equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)){ idGrupoCobranca = new Integer(form.getGrupoCobranca()); }else{ throw new ActionServletException("atencao.campo.informado", null, "Ordem de Servi�o ou Grupo de Cobran�a"); } if(form.getGerenciaRegional() != null && !form.getGerenciaRegional().equals("") && !form.getGerenciaRegional().equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)){ idGerencia = new Integer(form.getGerenciaRegional()); } if(form.getUnidadeNegocio() != null && !form.getUnidadeNegocio().equals("") && !form.getUnidadeNegocio().equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)){ idUnidade = new Integer(form.getUnidadeNegocio()); } if(form.getIdLocalidadeInicial() != null && !form.getIdLocalidadeInicial().equals("")){ idLocalidadeInicial = new Integer(form.getIdLocalidadeInicial()); if(form.getIdLocalidadeFinal() != null && !form.getIdLocalidadeFinal().equals("")){ idLocalidadeFinal = new Integer(form.getIdLocalidadeFinal()); }else{ idLocalidadeFinal = idLocalidadeInicial; } } if(form.getIdServicoTipo() != null && !form.getIdServicoTipo().equals("")){ idTipoServico = new Integer(form.getIdServicoTipo()); } if(form.getQtdeDiasEncerramentoOS() != null && !form.getQtdeDiasEncerramentoOS().equals("")){ qtdeDiasEncerramentoOS = new Integer(form.getQtdeDiasEncerramentoOS()); } if(form.getPercentualOSgeradas() != null && !form.getPercentualOSgeradas().equals("")){ percentualOSgeradas = Util.formatarMoedaRealparaBigDecimal(form.getPercentualOSgeradas()); }else{ throw new ActionServletException("atencao.campo.informado", null, "Percentual de OS Geradas para Fiscaliza��o"); } //[SB0003 � Gerar V�rias Ordens de Fiscaliza��o] colecaoOSFiscalizacao = fachada.gerarVariasOsFiscalizacao(idGrupoCobranca,idGerencia, idUnidade, idLocalidadeInicial,idLocalidadeFinal,idTipoServico, qtdeDiasEncerramentoOS, percentualOSgeradas,usuarioLogado); } sessao.setAttribute("colecaoOSFiscalizacao",colecaoOSFiscalizacao); montarPaginaSucesso(httpServletRequest, "Ordem de Servi�o Seletiva de Fiscaliza��o inserida com sucesso.", "Inserir outra Ordem de Servi�o Seletiva de Fiscaliza��o", "exibirGerarOSSeletivaFiscalizacaoAction.do?menu=sim", "gerarRelatorioOSFiscalizacaoAction.do?idGrupoCobranca=" + idGrupoCobranca,"Gerar formul�rio"); return retorno; } private void pesquisarordemServico(Fachada fachada, GerarOSSeletivaFiscalizacaoActionForm form,SistemaParametro sistemaParametro) { if (form.getIdOrdemServico() != null && !form.getIdOrdemServico().equals("")) { FiltroOrdemServico filtroOrdemServico = new FiltroOrdemServico(); filtroOrdemServico.adicionarParametro(new ParametroSimples(FiltroOrdemServico.ID,new Integer(form.getIdOrdemServico()))); // filtroOrdemServico.adicionarCaminhoParaCarregamentoEntidade(FiltroOrdemServico.SOLICITACAO_TIPO_ESPECIFICACAO); Collection colecaoOrdemServico = fachada.pesquisar(filtroOrdemServico,OrdemServico.class.getName()); if(colecaoOrdemServico != null && !colecaoOrdemServico.isEmpty()){ OrdemServico ordemServico = (OrdemServico) colecaoOrdemServico.iterator().next(); // form.setNomeOrdemServico(ordemServico.getServicoTipo().getDescricao()); form.setNomeOrdemServico(""); //[FS0001] � Validar Ordem de Servi�o. if (ordemServico.getAtendimentoMotivoEncerramento() != null && ordemServico.getAtendimentoMotivoEncerramento().getId() .equals(new Integer(AtendimentoMotivoEncerramento.CANCELADO_POR_DERCURSO_DE_PRAZO))) { form.setIdOrdemServico(""); throw new ActionServletException("atencao.os.cancelada.decurso.prazo"); } if(ordemServico.getDataEncerramento() != null){ Integer qtdeDias = 0; if(sistemaParametro.getQtdeDiasEncerraOSFiscalizacao() != null){ qtdeDias = sistemaParametro.getQtdeDiasEncerraOSFiscalizacao(); } Date dataEncerramentoMaisDiasLimite = Util.adicionarNumeroDiasDeUmaData(ordemServico.getDataEncerramento(),qtdeDias); if(dataEncerramentoMaisDiasLimite.compareTo(new Date()) == -1){ form.setIdOrdemServico(""); throw new ActionServletException("atencao.quantidade_dias_os_encerrada_maior"); } } if (ordemServico.getServicoTipo() != null && ordemServico.getServicoTipo().getId() != null && ordemServico.getServicoTipo().getId().equals(ServicoTipo.TIPO_FISCALIZACAO)){ form.setIdOrdemServico(""); throw new ActionServletException("atencao.tipo_servico_associado_os_fiscalizacao"); } Integer idOsPendente = fachada.pesquisarOSFiscalizacaoPendente(ordemServico.getId()); if(idOsPendente != null){ form.setIdOrdemServico(""); throw new ActionServletException("atencao.existe_os_fiscalizacao_pendente"); } } else { form.setIdOrdemServico(""); form.setNomeOrdemServico("Ordem de Servi�o n�o cadastrada"); } } } }