package gcom.batch.cobranca; import gcom.cadastro.cliente.Cliente; import gcom.cadastro.cliente.ClienteRelacaoTipo; import gcom.cadastro.empresa.Empresa; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.cobranca.CobrancaAcao; import gcom.cobranca.CobrancaAcaoAtividadeComando; import gcom.cobranca.CobrancaAcaoAtividadeCronograma; import gcom.cobranca.CobrancaAtividade; import gcom.cobranca.CobrancaCriterio; import gcom.micromedicao.ControladorMicromedicaoLocal; import gcom.micromedicao.ControladorMicromedicaoLocalHome; import gcom.micromedicao.Rota; import gcom.seguranca.acesso.usuario.Usuario; import gcom.tarefa.TarefaBatch; import gcom.tarefa.TarefaException; import gcom.util.ConstantesJNDI; import gcom.util.ControladorException; import gcom.util.ControladorUtilLocal; import gcom.util.ControladorUtilLocalHome; import gcom.util.ServiceLocator; import gcom.util.ServiceLocatorException; import gcom.util.SistemaException; import gcom.util.agendadortarefas.AgendadorTarefas; import java.util.Collection; import java.util.Date; import java.util.Iterator; import javax.ejb.CreateException; /** * Tarefa que manda para batch Gerar Atividade de A��o de Cobran�a * * @author Rodrigo Silveira * @created 17/11/2006 */ public class TarefaBatchGerarAtividadeAcaoCobranca extends TarefaBatch { private static final long serialVersionUID = 1L; public TarefaBatchGerarAtividadeAcaoCobranca(Usuario usuario, int idFuncionalidadeIniciada) { super(usuario, idFuncionalidadeIniciada); } @Deprecated public TarefaBatchGerarAtividadeAcaoCobranca() { super(null, 0); } public Object executar() throws TarefaException { try{ // CobrancaGrupo grupoCobranca = (CobrancaGrupo) getParametro("grupoCobranca"); // Integer anoMesReferenciaCicloCobranca = (Integer) getParametro("anoMesReferenciaCicloCobranca"); CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma = (CobrancaAcaoAtividadeCronograma) getParametro("comandoAtividadeAcaoCobranca"); CobrancaAcaoAtividadeComando comandoAtividadeAcaoComando = (CobrancaAcaoAtividadeComando) getParametro("comandoAtividadeAcaoComando"); Collection colecaoRota = (Collection) getParametro("colecaoRotas"); CobrancaAcao acaoCobranca = (CobrancaAcao) getParametro("acaoCobranca"); CobrancaAtividade atividadeCobranca = (CobrancaAtividade) getParametro("atividadeCobranca"); Short indicadorCriterio = (Short) getParametro("indicadorCriterio"); CobrancaCriterio cobrancaCriterio = (CobrancaCriterio) getParametro("criterioCobranca"); Cliente cliente = (Cliente) getParametro("cliente"); Cliente clienteSuperior = (Cliente) getParametro("clienteSuperior"); ClienteRelacaoTipo clienteRelacaoTipo = (ClienteRelacaoTipo) getParametro("clienteRelacaoTipo"); Integer anoMesReferenciaInicial = (Integer) getParametro("anoMesReferenciaInicial"); Integer anoMesReferenciaFinal = (Integer) getParametro("anoMesReferenciaFinal"); Date dataVencimentoInicial = (Date) getParametro("dataVencimentoInicial"); Date dataVencimentoFinal = (Date) getParametro("dataVencimentoFinal"); Date dataAtual = (Date) getParametro("dataAtual"); Integer idCobrancaDocumentoControleGeracao = (Integer)getParametro("idCobrancaDocumentoControleGeracao"); //se o batch n�o for processado por rota, //n�o ter� paralelismo if (cliente != null || clienteSuperior != null || (comandoAtividadeAcaoComando!=null && comandoAtividadeAcaoComando.getLogradouro()!=null)) { enviarMensagemControladorBatch( ConstantesJNDI.BATCH_GERAR_ATIVIDADE_ACAO_COBRANCA_MDB, new Object[]{ cobrancaAcaoAtividadeCronograma, comandoAtividadeAcaoComando, null,//Rota acaoCobranca, atividadeCobranca, indicadorCriterio.intValue(), cobrancaCriterio, cliente, clienteRelacaoTipo, anoMesReferenciaInicial.toString(), anoMesReferenciaFinal.toString(), dataVencimentoInicial, dataVencimentoFinal, dataAtual, this.getIdFuncionalidadeIniciada(), clienteSuperior, idCobrancaDocumentoControleGeracao}); }else{ //batch processado por rota, roda em paralelo if (colecaoRota == null || colecaoRota.isEmpty()) { SistemaParametro sistemaParametro = getControladorUtil().pesquisarParametrosDoSistema(); if (acaoCobranca.getId() != null && acaoCobranca.getId().equals(CobrancaAcao.CORTE_ADMINISTRATIVO) && sistemaParametro.getCodigoEmpresaFebraban() != null && sistemaParametro.getCodigoEmpresaFebraban().equals(Empresa.EMPRESA_FEBRABAN_COMPESA)) { // Obt�m a cole��o de todas as rotas do sistema com empresaCobranca igual a 1 colecaoRota = getControladorMicromedicao().pesquisarListaRotasEspecificas(); } else { // Obt�m a cole��o de todas as rotas do sistema colecaoRota = getControladorMicromedicao().pesquisarListaRotas(); } } Iterator iteratorRotas = colecaoRota.iterator(); while (iteratorRotas.hasNext()) { Rota rota = (Rota) iteratorRotas.next(); // System.out.println("*************************"); // System.out.println("Gerar Documento Cobranca.ROTA:" + rota.getId()); // System.out.println("*************************"); enviarMensagemControladorBatch( ConstantesJNDI.BATCH_GERAR_ATIVIDADE_ACAO_COBRANCA_MDB, new Object[]{ cobrancaAcaoAtividadeCronograma, comandoAtividadeAcaoComando, rota, acaoCobranca, atividadeCobranca, indicadorCriterio.intValue(), cobrancaCriterio, cliente, clienteRelacaoTipo, anoMesReferenciaInicial.toString(), anoMesReferenciaFinal.toString(), dataVencimentoInicial, dataVencimentoFinal, dataAtual, this.getIdFuncionalidadeIniciada(), clienteSuperior,idCobrancaDocumentoControleGeracao}); } } } catch (ControladorException e) { System.out.println("Erro no MDB"); e.printStackTrace(); } return null; } @Override public Collection pesquisarTodasUnidadeProcessamentoBatch() { return null; } @Override public Collection pesquisarTodasUnidadeProcessamentoReinicioBatch() { return null; } @Override public void agendarTarefaBatch() { AgendadorTarefas.agendarTarefa("GerarAtividadeAcaoCobrancaBatch", this); } 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 ControladorMicromedicaoLocal getControladorMicromedicao() { ControladorMicromedicaoLocalHome localHome = null; ControladorMicromedicaoLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorMicromedicaoLocalHome) locator .getLocalHomePorEmpresa(ConstantesJNDI.CONTROLADOR_MICROMEDICAO_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); } } }