private void ProcessarMensagemComposicaoIndice(string mensagem) { try { // Layout mensagem COMPOSICAO INDICE: // // Tipo de Mensagem X(2) // Data N(8) Formato AAAAMMDD // Hora N(9) Formato HHMMSSmmm (mmm = milisegundos) // Código Instrumento X(20) // // Quantidade itens N(4) // Item 1 X(20) // ... // Item n X(20) // string indice = mensagem.Substring(19, 20).Trim(); int qtdItens = Convert.ToInt16(mensagem.Substring(39, 4), ciBR); for (int ct = 0; ct < qtdItens; ct++) { CadastroBasico cadastroBasico = new CadastroBasico(); cadastroBasico.Instrumento = indice + "@" + mensagem.Substring(43 + 20 * ct, 20).Trim(); cadastroBasico.InstrumentoPrincipal = indice; _db.GravaCadastroBasico(cadastroBasico); logger.DebugFormat("Gravado Composicao Indice: Indice/Instrumento[{0}]", cadastroBasico.Instrumento); } } catch (Exception ex) { logger.Error("ProcessarMensagemComposicaoIndice: " + ex.Message, ex); } }
private void ProcessarMensagemCadastroBasico(string mensagem) { try { ANGCadastroBasico xxx = Utils.FromBinaryString <ANGCadastroBasico>(mensagem); // Layout mensagem CADASTRO BASICO: // // Tipo de Mensagem X(2) // Data N(8) Formato AAAAMMDD // Hora N(9) Formato HHMMSSmmm (mmm = milisegundos) // Código Instrumento X(20) // // Código ISIN X(20) // Instrumento Principal X(20) // Lote padrão N(8) // Segmento Mercado X(8) // Forma Cotação N(8) // Grupo Cotação X(4) // Data Vencimento N(8) // Preço Exercício N(13) // Indicador Opção X(1) // Coeficiente Multiplicação N(13) // Data último negócio N(8) Formato AAAAMMDD // Hora último negócio N(6) Formato HHMMSS // Security Id Source X(4) // Especificação X(100) CadastroBasico cadastroBasico = new CadastroBasico(); cadastroBasico.Instrumento = xxx.Instrumento.ByteArrayToString().Trim(); cadastroBasico.CodigoISIN = xxx.CodigoIsin.ByteArrayToString().Trim(); cadastroBasico.InstrumentoPrincipal = xxx.CodigoPapelObjeto.ByteArrayToString().Trim(); cadastroBasico.LotePadrao = Convert.ToInt32(xxx.LotePadrao.ByteArrayToString().Trim()); cadastroBasico.SegmentoMercado = xxx.SegmentoMercado.ByteArrayToString().Trim(); cadastroBasico.FormaCotacao = Convert.ToInt16(xxx.FormaCotacao.ByteArrayToString()); cadastroBasico.GrupoCotacao = xxx.GrupoCotacao.ByteArrayToString().Trim(); if (!mensagem.Substring(107, 8).Equals("00000000")) { cadastroBasico.DataVencimento = DateTime.ParseExact(xxx.DataVencimento.ByteArrayToString(), "yyyyMMdd", ciBR); } cadastroBasico.PrecoExercicio = Convert.ToDouble(xxx.PrecoExercicio.ByteArrayToString(), ciBR); cadastroBasico.IndicadorOpcao = xxx.IndicadorOpcao.ByteArrayToString(); cadastroBasico.CoeficienteMultiplicacao = Convert.ToDouble(xxx.CoeficienteMultiplicacao.ByteArrayToString(), ciBR); if (!mensagem.Substring(142, 14).Equals("00000000000000")) { cadastroBasico.DataUltimoNegocio = DateTime.ParseExact(xxx.DataHoraNegocio.ByteArrayToString(), "yyyyMMddHHmmss", ciBR); } cadastroBasico.SecurityIDSource = xxx.SecurityIDSource.ByteArrayToString().Trim(); cadastroBasico.Especificacao = xxx.Especificacao.ByteArrayToString().Trim(); //cadastroBasico.Instrumento = mensagem.Substring(19, 20).Trim(); //cadastroBasico.CodigoISIN = mensagem.Substring(39, 20).Trim(); //cadastroBasico.InstrumentoPrincipal = mensagem.Substring(59, 20).Trim(); //cadastroBasico.LotePadrao = Convert.ToInt32(mensagem.Substring(79, 8)); //cadastroBasico.SegmentoMercado = mensagem.Substring(87, 8).Trim(); //cadastroBasico.FormaCotacao = Convert.ToInt16(mensagem.Substring(95, 8)); //cadastroBasico.GrupoCotacao = mensagem.Substring(103, 4).Trim(); //if (!mensagem.Substring(107, 8).Equals("00000000")) // cadastroBasico.DataVencimento = DateTime.ParseExact(mensagem.Substring(107, 8), "yyyyMMdd", ciBR); //cadastroBasico.PrecoExercicio = Convert.ToDouble(mensagem.Substring(115, 13), ciBR); //cadastroBasico.IndicadorOpcao = mensagem.Substring(128, 1); //cadastroBasico.CoeficienteMultiplicacao = Convert.ToDouble(mensagem.Substring(129, 13), ciBR); //if (!mensagem.Substring(142, 14).Equals("00000000000000")) // cadastroBasico.DataUltimoNegocio = DateTime.ParseExact(mensagem.Substring(142, 14), "yyyyMMddHHmmss", ciBR); //cadastroBasico.SecurityIDSource = mensagem.Substring(156, 4).Trim(); //cadastroBasico.Especificacao = mensagem.Substring(160).Trim(); _db.GravaCadastroBasico(cadastroBasico); _db.GravaCadastroBasicoOMS(cadastroBasico); logger.DebugFormat("Gravado Cadastro Basico: Instrumento[{0}] DataUltimoNegocio[{1}] CodigoISIN[{2}] InstrumentoPrincipal[{3}] LotePadrao[{4}] SegmentoMercado[{5}] FormaCotacao[{6}] GrupoCotacao[{7}] DataVencimento[{8}] PrecoExercicio[{9}] IndicadorOpcao[{10}] CoeficienteMultiplicacao[{11}] Especificacao[{12}]", cadastroBasico.Instrumento, cadastroBasico.DataUltimoNegocio, cadastroBasico.CodigoISIN, cadastroBasico.InstrumentoPrincipal, cadastroBasico.LotePadrao, cadastroBasico.SegmentoMercado, cadastroBasico.FormaCotacao, cadastroBasico.GrupoCotacao, cadastroBasico.DataVencimento, cadastroBasico.PrecoExercicio, cadastroBasico.IndicadorOpcao, cadastroBasico.CoeficienteMultiplicacao, cadastroBasico.Especificacao); _db.GravaSecurityList(cadastroBasico); logger.DebugFormat("Gravado SecurityList: Instrumento[{0}] SecurityID[{1}]", cadastroBasico.Instrumento, cadastroBasico.CodigoISIN); } catch (Exception ex) { if (!String.IsNullOrEmpty(mensagem)) { logger.Error("MENSAGEM [" + mensagem + "]"); } logger.Error("ProcessarMensagemCadastroBasico: " + ex.Message, ex); } }