Esempio n. 1
0
        public void StartMonitorPosicao(object sender)
        {
            try
            {
                gLogger.Info("StartMonitorPosicao - Iniciando Monitor de Posicao");
                //lsFeriadosDI = MonitorCustodiaDB.Ob

                gLogger.Info("StartMonitorPosicao - Inicia rotina principal do sistema");

                gLogger.Info("Zerando a posição de todos os clientes no banco de dados SQL");
                MonitorPosicaoDB.ZeraPosicaoTodos();

                gLogger.Info("Pausa de 2 segundos");
                Thread.Sleep(2000);

                gLogger.Info("Inicia Thread de calculo de posição de Custódia dos clientes a cada 5 segundos.");
                thThreadClientes      = new Thread(new ThreadStart(ThreadClientes));
                thThreadClientes.Name = "ThreadClientes";
                thThreadClientes.Start();

                lstFatorCotacao1000.Add("CEGR3");
                lstFatorCotacao1000.Add("CAFE3");
                lstFatorCotacao1000.Add("CAFE4");
                lstFatorCotacao1000.Add("CBEE3");
                lstFatorCotacao1000.Add("SGEN4");
                lstFatorCotacao1000.Add("PMET6");
                lstFatorCotacao1000.Add("EBTP3");
                lstFatorCotacao1000.Add("EBTP4");
                lstFatorCotacao1000.Add("TOYB3");
                lstFatorCotacao1000.Add("TOYB4");
                lstFatorCotacao1000.Add("FNAM11");
                lstFatorCotacao1000.Add("FNOR11");
                lstFatorCotacao1000.Add("NORD3");

                gLogger.Info("Processo de inicialização finalizado");

                gLogger.Info("Aguardando Transações ...");
            }
            catch (Exception ex)
            {
                gLogger.Info("Ocorreu um erro ao acessar o metodo StartMonitor.", ex);
            }
        }
Esempio n. 2
0
        public MonitorCustodiaInfo CalcularPosicaoCustodia(int idCliente)
        {
            var lRetorno = new MonitorCustodiaInfo();

            try
            {
                lRetorno = MonitorPosicaoDB.ConsultarDadosClienteMonitorCustodia(new MonitorCustodiaInfo()
                {
                    CodigoClienteBov = idCliente
                });

                MonitorPosicaoDB.ConsultarCustodiaNormal(lRetorno.CodigoClienteBov, lRetorno.CodigoClienteBmf);

                if (lRetorno.CodigoClienteBmf.HasValue)
                {
                    MonitorPosicaoDB.ConsultarCustodiaPosicaoDiaBMF(lRetorno.CodigoClienteBmf);
                }
            }
            catch (Exception ex)
            {
                gLogger.ErrorFormat("Erro calcular posição do cliente [{0}] - StackTrace - {1} -> error {2}", idCliente, ex.StackTrace, ex);
            }
            return(lRetorno);
        }
Esempio n. 3
0
        private void ThreadClientes()
        {
            DateTime lastRun = DateTime.MinValue;

            while (_bKeepRunning)
            {
                TimeSpan interval = DateTime.Now - lastRun;

                try
                {
                    if (interval.TotalMilliseconds > 120000)
                    {
                        lastRun = DateTime.Now;

                        gLogger.Debug("Obtendo relacao de clientes que operaram nos ultimos 2 minutos");

                        List <int> RelacaoClientesOperaram = new  MonitorPosicaoDB().ListaClientesOperaramUltimoMomento();

                        if (RelacaoClientesOperaram.Count > 0)
                        {
                            gLogger.Info("Relacao de clientes encontrados que operaram nos ultimos 2 minutos.[" + RelacaoClientesOperaram.Count.ToString() + "].");
                        }
                        else
                        {
                            gLogger.Info("Não existe clientes para serem calculados nesta tentativa.");
                        }

                        lock (ClientesMonitor)
                        {
                            foreach (int Cliente in RelacaoClientesOperaram)
                            {
                                //this.AddRemoveClientRunTimerProcessed(Cliente);

                                if (!ClientesMonitor.Contains(Cliente))
                                {
                                    gLogger.Info("Acrescentando [" + Cliente + "] na lista de monitoracao");
                                    this.ClientesMonitor.Add(Cliente);
                                }

                                this.RunTimer(Cliente);
                                Thread.Sleep(250);
                            }
                        }

                        if (interval.TotalMilliseconds > 86400000)
                        {
                            lastRun = DateTime.Now;

                            gLogger.Debug("Obtendo relacao de clientes que operaram no dia");

                            List <int> RelacaoClientesRodada = new MonitorPosicaoDB().ObterClientesPosicaoDia();

                            #region Clientes BMF AFTER

                            gLogger.Debug("Obtendo relacao de clientes com posicao AFTER BMF");

                            List <int> BMFAfter = new MonitorPosicaoDB().ObterClientesPosicaoBMFAfter();

                            foreach (int Cliente in BMFAfter)
                            {
                                if (!RelacaoClientesRodada.Contains(Cliente))
                                {
                                    RelacaoClientesRodada.Add(Cliente);
                                }
                            }

                            #endregion

                            if (RelacaoClientesRodada.Count > 0)
                            {
                                gLogger.Info("Relacao de clientes encontrados.[" + RelacaoClientesRodada.Count.ToString() + "].");
                            }
                            else
                            {
                                gLogger.Info("Não existe clientes para serem calculados nesta tentativa.");
                            }

                            lock (ClientesMonitor)
                            {
                                foreach (int Cliente in RelacaoClientesRodada)
                                {
                                    this.AddRemoveClientRunTimerProcessed(Cliente);

                                    if (!ClientesMonitor.Contains(Cliente))
                                    {
                                        gLogger.Info("Acrescentando [" + Cliente + "] na lista de monitoracao");
                                        this.ClientesMonitor.Add(Cliente);
                                        this.RunTimer(Cliente);
                                        Thread.Sleep(250);
                                    }
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    gLogger.Error("Ocorreu um erro ao acessar o método ThreadClientes:" + ex.Message, ex);
                }

                Thread.Sleep(250);
            }
        }