package gcom.integracao; import gcom.atendimentopublico.ordemservico.ControladorOrdemServicoLocal; import gcom.atendimentopublico.ordemservico.ControladorOrdemServicoLocalHome; import gcom.atendimentopublico.ordemservico.FiltroServicoTipo; import gcom.atendimentopublico.ordemservico.OrdemServico; import gcom.atendimentopublico.ordemservico.OrdemServicoMovimento; import gcom.atendimentopublico.ordemservico.OrdemServicoMovimentoHistorico; import gcom.atendimentopublico.ordemservico.OrdemServicoPavimento; import gcom.atendimentopublico.ordemservico.ServicoTipo; import gcom.atendimentopublico.registroatendimento.ControladorRegistroAtendimentoLocal; import gcom.atendimentopublico.registroatendimento.ControladorRegistroAtendimentoLocalHome; import gcom.cadastro.empresa.Empresa; import gcom.cadastro.unidade.UnidadeOrganizacional; import gcom.fachada.Fachada; import gcom.integracao.upa.OrdensServico; import gcom.seguranca.acesso.usuario.FiltroUsuario; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.ConstantesJNDI; import gcom.util.ConstantesSistema; import gcom.util.ControladorException; import gcom.util.ControladorUtilLocal; import gcom.util.ControladorUtilLocalHome; import gcom.util.ErroRepositorioException; import gcom.util.ServiceLocator; import gcom.util.ServiceLocatorException; import gcom.util.SistemaException; import gcom.util.Util; import gcom.util.email.ErroEmailException; import gcom.util.email.ServicosEmail; import gcom.util.filtro.ConectorAnd; import gcom.util.filtro.ParametroSimples; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import javax.ejb.CreateException; import javax.ejb.SessionBean; import javax.ejb.SessionContext; public class ControladorIntegracaoSEJB implements SessionBean { private static final long serialVersionUID = 1L; SessionContext sessionContext; private IRepositorioIntegracao repositorioIntegracao = null; /** * < <Descri��o do m�todo>> * * @exception CreateException * Descri��o da exce��o */ public void ejbCreate() throws CreateException { repositorioIntegracao = RepositorioIntegracaoHBM.getInstancia(); } /** * < <Descri��o do m�todo>> */ public void ejbRemove() { } /** * < <Descri��o do m�todo>> */ public void ejbActivate() { } /** * < <Descri��o do m�todo>> */ public void ejbPassivate() { } /** * Seta o valor de sessionContext * * @param sessionContext * O novo valor de sessionContext */ public void setSessionContext(SessionContext sessionContext) { this.sessionContext = sessionContext; } //[UC0741] public void enviarMovimentoExportacaoFirma() { //selecionar todos os servi�os pertencentes a um movimento try { Collection ordensServicoMovimentoParaExportacao = repositorioIntegracao.pesquisarOrdemServicoMovimentoParaEnvioSAM(); Collection ordensServicoParaExportacao = new ArrayList(); Iterator iterator = ordensServicoMovimentoParaExportacao.iterator(); while (iterator.hasNext()) { OrdemServicoMovimento movimento = (OrdemServicoMovimento) iterator.next(); ordensServicoParaExportacao.add(montarOrdensServicoParaExportacao(movimento)); } repositorioIntegracao.exportarOrdemServicoMovimentos(ordensServicoParaExportacao); //Reiniciar o iterator para atualizar as ordens enviadas somente no final iterator = ordensServicoMovimentoParaExportacao.iterator(); while (iterator.hasNext()) { OrdemServicoMovimento movimento = (OrdemServicoMovimento) iterator.next(); if (movimento.getIndicadorMovimento() == 1) { movimento.setIndicadorMovimento(new Short("2")); repositorioIntegracao.atualizarIndicadorMovimentoOrdemServicoMovimento(movimento); } } } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); e.printStackTrace(); } } private OrdensServico montarOrdensServicoParaExportacao(OrdemServicoMovimento ordemServicoMovimento) { OrdensServico ordensServico = new OrdensServico(); ordensServico.setId(ordemServicoMovimento.getId()); ordensServico.setOsUnidadeExecutora(ordemServicoMovimento.getUnidadeOrganizacionalExecutora().getId()); ordensServico.setOsUnidadeCentralProgramacao(ordemServicoMovimento.getUnidadeOrganizacionalCentralizadora().getId()); ordensServico.setOsDataInicio(ordemServicoMovimento.getDataTramite()); ordensServico.setOsDataEncerramento(ordemServicoMovimento.getDataExecucao()); ordensServico.setServicoId(ordemServicoMovimento.getServicoTipo().getId()); ordensServico.setOsSolicitacao(""+ordemServicoMovimento.getRegistroAtendimento().getId()); if (ordemServicoMovimento.getImovel() != null) { ordensServico.setOsMatriculaNumero(""+ordemServicoMovimento.getImovel().getId()); ordensServico.setOsInscricao(ordemServicoMovimento.getImovel().getInscricaoFormatada()); } ordensServico.setOsSolicitante(ordemServicoMovimento.getNomeSolicitante()); ordensServico.setOsTelefoneSolicitante(ordemServicoMovimento.getTelefoneSolicitante()); ordensServico.setOsEndereco(ordemServicoMovimento.getEndereco()); ordensServico.setOsPontoReferencia(ordemServicoMovimento.getPontoReferencia()); ordensServico.setOsBairro(ordemServicoMovimento.getBairro()); ordensServico.setOsLocalidade(ordemServicoMovimento.getNomeLocalidade()); String codigoElo = ""+ordemServicoMovimento.getCodigoElo(); if (codigoElo.length() < 4) { codigoElo = Util.adicionarZerosEsquedaNumero(4,codigoElo); } ordensServico.setOsElo(codigoElo); String codigoSetor = ""+ordemServicoMovimento.getCodigoSetor(); if (codigoSetor.length() < 4) { codigoSetor = Util.adicionarZerosEsquedaNumero(4,codigoSetor); } ordensServico.setOsSetor(codigoSetor); String numeroQuadra = ""+ordemServicoMovimento.getNumeroQuadra(); if (numeroQuadra.length() < 4) { numeroQuadra = Util.adicionarZerosEsquedaNumero(4,numeroQuadra); } ordensServico.setOsQuadra(numeroQuadra); ordensServico.setOsObservacao(ordemServicoMovimento.getObservacao()); ordensServico.setOsPrioridade(ordemServicoMovimento.getServicoTipoPrioridadeAtual().getId()); ordensServico.setOsParecerTramite(ordemServicoMovimento.getParecer()); if (ordemServicoMovimento.getPavimentoRua() != null) { ordensServico.setOsPavimentoRua(ordemServicoMovimento.getPavimentoRua().getId()); } if (ordemServicoMovimento.getAreaPavimentoRua() != null) { ordensServico.setOsAreaPvtoRua(ordemServicoMovimento.getAreaPavimentoRua().doubleValue()); } if (ordemServicoMovimento.getPavimentoCalcada() != null) { ordensServico.setOsPavimentoCalcada(ordemServicoMovimento.getPavimentoCalcada().getId()); } if (ordemServicoMovimento.getAreaPavimentoCalcada() != null) { ordensServico.setOsAreaPvtoCalcada(ordemServicoMovimento.getAreaPavimentoCalcada().doubleValue()); } ordensServico.setOsSituacaoData(ordensServico.getOsDataInicio()); ordensServico.setOsSituacao('I'); ordensServico.setOsMatriculaReferencia("S"); ordensServico.setOsDataCadastro(ordensServico.getOsDataInicio()); return ordensServico; } public void receberMovimentoExportacaoFirma() { //selecionar todos os servi�os pertencentes a um movimento HashMap<String, String> empresaOS = new HashMap<String, String>(); try { Collection ordensServicoParaImportacao = repositorioIntegracao.pesquisarOrdensServicoParaRecebimentoUPA(); Iterator iterator = ordensServicoParaImportacao.iterator(); while (iterator.hasNext()) { OrdemServicoMovimento movimento = (OrdemServicoMovimento) iterator.next(); String emailEmpresa = null; Empresa empresa = null; UnidadeOrganizacional unidadeRepavimentadora = movimento.getUnidadeOrganizacionalExecutora().getUnidadeRepavimentadora(); if (unidadeRepavimentadora != null) { empresa = movimento.getUnidadeOrganizacionalExecutora().getUnidadeRepavimentadora().getEmpresa(); emailEmpresa = empresa.getEmail(); } if (emailEmpresa == null || emailEmpresa.trim().equals("")) { System.out.println("E-mail da empresa "+ (empresa != null ? empresa.getDescricao() : "") +" n�o cadastrado para envio de notifica��o"); } else { String listaOS = empresaOS.get(emailEmpresa); if (listaOS == null) { listaOS = movimento.getId()+";"+movimento.getServicoTipo().getDescricao()+";"+getControladorRegistroAtendimento().obterEnderecoOcorrenciaRA(movimento.getRegistroAtendimento().getId())+",\n"; } else { listaOS = listaOS + movimento.getId()+";"+movimento.getServicoTipo().getDescricao()+";"+getControladorRegistroAtendimento().obterEnderecoOcorrenciaRA(movimento.getRegistroAtendimento().getId())+",\n"; } empresaOS.put(emailEmpresa, listaOS); } //Encerrar Ordem Servico Usuario usuario = null; try { FiltroUsuario filtroUsuario = new FiltroUsuario(); filtroUsuario.adicionarParametro(new ParametroSimples(FiltroUsuario.LOGIN, movimento.getLoginUsuario()==null?"":movimento.getLoginUsuario())); usuario = (Usuario)getControladorUtil().pesquisar(filtroUsuario, Usuario.class.getName()).iterator().next(); } catch (Exception e) { System.out.println("A ORDEM DE SERVICO: "+movimento.getId() + " nao possui usuario valido e nao teve a OS fechada"); continue; } if (movimento.getDataExecucao().before(movimento.getDataGeracao())) { System.out.println("A ORDEM DE SERVICO: "+movimento.getId() + ": Instante de encerramento anterior � gera��o da ordem"); continue; } if (movimento.getParecer() == null || movimento.getParecer().trim().equals("")) { movimento.setParecer("ENCERRAMENTO NORMAL, TRAMITE AUTOMATICO DE RETORNO DE TERCEIRA"); } /* Integer numeroOS, Date dataEncerramento, Usuario usuarioLogado, String motivoEncerramento, Date ultimaAlteracao, String parecerEncerramento, String indicadorPavimento, String pavimento, Collection colecaoManterDadosAtividadesOrdemServicoHelper, IntegracaoComercialHelper integracaoComercialHelper, String tipoServicoOSId, OrdemServico osFiscalizacao, String indicadorVistoriaServicoTipo, String codigoRetornoVistoriaOs,OrdemServicoPavimento ordemServicoPavimento */ /*Alterado por: Anderson Italo * data: 07/01/2010 * CRC3441 - Estava sendo passado a descri��o do motivo de encerramento ao inv�s do id, * o que ocasionava erro no controladorOrdemServico na hora de atualizar a ordem de servi�o * no m�todo que segue abaixo. * */ getControladorOrdemServico().encerrarOSComExecucaoSemReferencia( movimento.getId(), new Date(), usuario, ""+movimento.getAtendimentoMotivoEncerramento().getId(), new Date(), ""+movimento.getParecer(), null, null, null, null, null, null, null, null,null,null,null); //alterado por Vivianne Sousa 20/06/2008 //analista responsavel: Fabiola getControladorOrdemServico().tramitarOuEncerrarRADaOSEncerrada( movimento.getId(), usuario, null, ""+movimento.getRegistroAtendimento().getId(), null); //Verificar se � necess�rio a abertura de ordem de servi�o de repavimenta��o if (movimento.getAtendimentoMotivoEncerramento().getIndicadorExecucao() == 1 && movimento.getPavimentoRua() !=null && movimento.getPavimentoRua().getId() != null && !movimento.getPavimentoRua().getId().toString().equals("0") && movimento.getAreaPavimentoRua() != null && !movimento.getAreaPavimentoRua().toString().equals("0") ) { OrdemServico ordemServico = new OrdemServico(); FiltroServicoTipo filtroServicoTipo = new FiltroServicoTipo(); filtroServicoTipo.adicionarParametro(new ParametroSimples(FiltroServicoTipo.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO, ConectorAnd.CONECTOR_AND)); filtroServicoTipo.adicionarParametro(new ParametroSimples(FiltroServicoTipo.INDICADORPAVIMENTO, ConstantesSistema.INDICADOR_USO_ATIVO)); ordemServico.setServicoTipo((ServicoTipo)Util.retonarObjetoDeColecao(getControladorUtil().pesquisar(filtroServicoTipo, ServicoTipo.class.getName()))); ordemServico.setAreaPavimento(movimento.getAreaPavimentoRua()); //ordemServico.setUnidadeAtual(unidadeRepavimentadora); ordemServico.setRegistroAtendimento(movimento.getRegistroAtendimento()); Integer idOrdemServico = getControladorOrdemServico().gerarOrdemServico(ordemServico, usuario, null); ordemServico.setId(idOrdemServico); OrdemServicoPavimento ordemServicoPavimento = new OrdemServicoPavimento(); if ( movimento.getPavimentoRua() != null ) { UnidadeOrganizacional unidadeOrganizacional = Fachada.getInstancia().obterUnidadeRepavimentadorAPartirMunicipio(ordemServico, ""); if ( unidadeOrganizacional != null && unidadeOrganizacional.getId() != null ) { ordemServicoPavimento.setUnidadeRepavimentadora(unidadeOrganizacional); } ordemServicoPavimento.setAreaPavimentoRua(movimento.getAreaPavimentoRua()); ordemServicoPavimento.setPavimentoRua(movimento.getPavimentoRua()); ordemServicoPavimento.setUltimaAlteracao(new Date()); } getControladorOrdemServico() .encerrarOSComExecucaoSemReferencia( ordemServico.getId(), new Date(), usuario, "2", new Date(), ordemServico .getDescricaoParecerEncerramento(), "" + ConstantesSistema.INDICADOR_USO_ATIVO, movimento.getAreaPavimentoRua().toString(), null, null, null, null, null, null, ordemServicoPavimento,null,null); } movimento.setIndicadorMovimento(new Short("3")); getControladorUtil().atualizar(movimento); //Movendo para o hist�rico getControladorUtil().inserir(new OrdemServicoMovimentoHistorico(movimento)); getControladorUtil().remover(movimento); } for (String emailEmpresa : empresaOS.keySet()) { SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd_k:mm:ss"); String assuntoEmail = "Conv�nio COMPESA - Demanda_" + format.format(new Date()); String textoEmail = "Prezado(s) Sr(s),\n\nSegue abaixo Rela��o com os n�meros de Ordens de Servi�os que comp�em esta demanda:\n\n" + empresaOS.get(emailEmpresa) + "\n\nAtenciosamente;\n\nGest�o Conv�nio de Repavimenta��o da COMPESA"; ServicosEmail.enviarMensagem("GSAN", emailEmpresa, assuntoEmail, textoEmail); } //repositorioIntegracao.importarOrdensServico(ordensServicoMovimentoParaImportacao); } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); e.printStackTrace(); } catch (ControladorException e) { sessionContext.setRollbackOnly(); e.printStackTrace(); } catch (ErroEmailException e) { e.printStackTrace(); } } public Integer gerarOS(Usuario usuario, OrdemServico ordemServico) throws ControladorException { Integer idOrdemServico = getControladorOrdemServico().gerarOrdemServico(ordemServico, usuario, null); return idOrdemServico; } /** * Retorna o valor do ControladorOrdemServico * * @author Leonardo Regis * @date 23/09/2006 * * @return O valor de ControladorOrdemServico */ private ControladorOrdemServicoLocal getControladorOrdemServico() { ControladorOrdemServicoLocalHome localHome = null; ControladorOrdemServicoLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorOrdemServicoLocalHome) locator .getLocalHome(ConstantesJNDI.CONTROLADOR_ORDEM_SERVICO_SEJB); // guarda a referencia de um objeto capaz de fazer chamadas // objetos remotamente local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } /** * Retorna o valor de controladorUtil * * @return O valor de controladorUtil */ private ControladorUtilLocal getControladorUtil() { ControladorUtilLocalHome localHome = null; ControladorUtilLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorUtilLocalHome) locator .getLocalHome(ConstantesJNDI.CONTROLADOR_UTIL_SEJB); // guarda a referencia de um objeto capaz de fazer chamadas // objetos remotamente local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } private ControladorRegistroAtendimentoLocal getControladorRegistroAtendimento() { ControladorRegistroAtendimentoLocalHome localHome = null; ControladorRegistroAtendimentoLocal local = null; ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorRegistroAtendimentoLocalHome) locator .getLocalHome(ConstantesJNDI.CONTROLADOR_REGISTRO_ATENDIMENTO_SEJB); local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } public Object[] pesquisarHorarioProcessoIntegracaoUPA() throws ControladorException { try { return repositorioIntegracao.pesquisarHorarioProcessoIntegracaoUPA(); } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema",e); } } }