Пример #1
0
        public void ExecutarExpressaoSimplesPorServico()
        {
            int a = 1, b = 2;
            string expressao = "(a+b)>0";
            string blocoAcaoTrue = "a=0;b=-1";

            MaquinaInequacoesServiceReference.MaquinaInequacoesServiceClient serviceClient = new MaquinaInequacoesServiceReference.MaquinaInequacoesServiceClient();
            MaquinaInequacoesServiceReference.Variavel variavelA = new MaquinaInequacoesServiceReference.Variavel();
            variavelA.Nome = "a";
            variavelA.TipoDado = MaquinaInequacoesServiceReference.TipoDado.Numerico;
            variavelA.Valor = a;

            MaquinaInequacoesServiceReference.Variavel variavelB = new MaquinaInequacoesServiceReference.Variavel();
            variavelB.Nome = "b";
            variavelB.TipoDado = MaquinaInequacoesServiceReference.TipoDado.Numerico;
            variavelB.Valor = b;

            MaquinaInequacoesServiceReference.MemoriaCalculo memoriaCalculo = new MaquinaInequacoesServiceReference.MemoriaCalculo();
            memoriaCalculo.Variaveis = new List<MaquinaInequacoesServiceReference.Variavel>();
            memoriaCalculo.Variaveis.Add(variavelA);
            memoriaCalculo.Variaveis.Add(variavelB);

            MaquinaInequacoesServiceReference.Decisao decisao = new MaquinaInequacoesServiceReference.Decisao();
            decisao.Inequacao = expressao;
            decisao.BlocoDeAcao = blocoAcaoTrue;

            MaquinaInequacoesServiceReference.ListaDecisoes listaDecisoes = new MaquinaInequacoesServiceReference.ListaDecisoes();
            listaDecisoes.Decisoes = new List<MaquinaInequacoesServiceReference.Decisao>();
            listaDecisoes.Decisoes.Add(decisao);

            try
            {
                memoriaCalculo = serviceClient.ExecutarJSONcomObjetos(memoriaCalculo, listaDecisoes);

                Assert.AreEqual(memoriaCalculo.Variaveis[0].Valor, 0.0);
                Assert.AreEqual(memoriaCalculo.Variaveis[1].Valor, -1.0);
            }
            catch (Exception iEx)
            {
                if (iEx is System.ServiceModel.EndpointNotFoundException)
                    throw new Exception(MsgExceptionServicoNaoAtivo, iEx);
                else
                {
                    if (serviceClient != null && serviceClient.State != System.ServiceModel.CommunicationState.Closed)
                        serviceClient.Close();
                }
            }
        }
        public void LimiteFNS()
        {
            MaquinaInequacoesServiceReference.MaquinaInequacoesServiceClient serviceClient = new MaquinaInequacoesServiceReference.MaquinaInequacoesServiceClient();
            MaquinaInequacoesServiceReference.MemoriaCalculo memoriaCalculo = new MaquinaInequacoesServiceReference.MemoriaCalculo();
            MaquinaInequacoesServiceReference.ListaDecisoes listaDecisoes = new MaquinaInequacoesServiceReference.ListaDecisoes();

            string nomeFuncao = "Modulo_Limites_MOPs-LIM_FNS_n3";
            Mediador mediador = new Mediador();

            mediador.CarregarMemoriaDeCalculo(memoriaCalculo, nomeFuncao);
            mediador.CarregarListaDecisoes(listaDecisoes, nomeFuncao);

            mediador.CarregarDados_SheetRow_SEVERA_N3();
            mediador.CarregarDados_SheetRow_S_SE();
            mediador.CarregarDados_SheetRow_N_NE_SE();

            try
            {
                for (int i = 0; i < mediador.linhas_N_NE_SE.Count; i++)
                {
                    Modulo_Limites_MOPs_LIM_FNS_n3.AtualizarVariaveisDaMemoriaDeCalculo(memoriaCalculo, mediador.linhas_SEVERA_N3[i], mediador.linhas_S_SE[i], mediador.linhas_N_NE_SE[i]);
                    memoriaCalculo = serviceClient.ExecutarJSONcomObjetos(memoriaCalculo, listaDecisoes);

                    MaquinaInequacoesServiceReference.Variavel limite = Mediador.GetVariavelPorNome(memoriaCalculo, "lim");
                    MaquinaInequacoesServiceReference.Variavel limiteTexto = Mediador.GetVariavelPorNome(memoriaCalculo, "limTexto");

                    if (limiteTexto.Valor.ToString().Trim() != string.Empty)
                        Assert.AreEqual(limiteTexto.Valor, "!Maq.C.Brava!");
                    else
                        Assert.AreEqual(limite.Valor, mediador.linhas_SEVERA_N3[i].LDvalorplanilha_LIMIT_FNS);
                }

            }
            catch (Exception iEx)
            {
                if (iEx is System.ServiceModel.EndpointNotFoundException)
                    throw new Exception(TestesBasicos.MsgExceptionServicoNaoAtivo, iEx);
                else
                {
                    if (serviceClient != null && serviceClient.State != System.ServiceModel.CommunicationState.Closed)
                        serviceClient.Close();
                    throw iEx;
                }
            }
        }
Пример #3
0
        public void LimiteFINBA()
        {
            MaquinaInequacoesServiceReference.MaquinaInequacoesServiceClient serviceClient = new MaquinaInequacoesServiceReference.MaquinaInequacoesServiceClient();
            MaquinaInequacoesServiceReference.MemoriaCalculo memoriaCalculo = new MaquinaInequacoesServiceReference.MemoriaCalculo();
            MaquinaInequacoesServiceReference.ListaDecisoes listaDecisoes = new MaquinaInequacoesServiceReference.ListaDecisoes();

            string nomeFuncao = "Modulo_Interligacao_SSE-limiteFINBA";
            Mediador mediador = new Mediador();

            mediador.CarregarMemoriaDeCalculo(memoriaCalculo, nomeFuncao);
            mediador.CarregarListaDecisoes(listaDecisoes, nomeFuncao);

            mediador.CarregarDados_SheetRow_S_SE();
            mediador.CarregarDados_SheetRow_SUL();

            try
            {
                for (int i = 0; i < mediador.linhas_S_SE.Count; i++)
                {
                    Modulo_Interligacao_SSE_limiteFINBA.AtualizarVariaveisDaMemoriaDeCalculo(memoriaCalculo, mediador.linhas_S_SE[i], mediador.linhas_SUL[i]);
                    memoriaCalculo = serviceClient.ExecutarJSONcomObjetos(memoriaCalculo, listaDecisoes);

                    Assert.AreEqual(Mediador.GetVariavelPorNome(memoriaCalculo, "lim").Valor, mediador.linhas_S_SE[i].LDvalorplanilha_LIM_FINBA);
                }

            }
            catch (Exception iEx)
            {
                if (iEx is System.ServiceModel.EndpointNotFoundException)
                    throw new Exception(TestesBasicos.MsgExceptionServicoNaoAtivo, iEx);
                else
                {
                    if (serviceClient != null && serviceClient.State != System.ServiceModel.CommunicationState.Closed)
                        serviceClient.Close();

                    throw iEx;
                }
            }
        }
        public void LimiteFACROInferior()
        {
            MaquinaInequacoesServiceReference.MaquinaInequacoesServiceClient serviceClient = new MaquinaInequacoesServiceReference.MaquinaInequacoesServiceClient();
            MaquinaInequacoesServiceReference.MemoriaCalculo memoriaCalculo = new MaquinaInequacoesServiceReference.MemoriaCalculo();
            MaquinaInequacoesServiceReference.ListaDecisoes listaDecisoes = new MaquinaInequacoesServiceReference.ListaDecisoes();

            string nomeFuncao = "Modulo_RACRO-Limite_Inf_FACRO";
            Mediador mediador = new Mediador();

            mediador.CarregarMemoriaDeCalculo(memoriaCalculo, nomeFuncao);
            mediador.CarregarListaDecisoes(listaDecisoes, nomeFuncao);

            mediador.CarregarDados_SheetRow_ACRO_MT();

            try
            {
                for (int i = 0; i < mediador.linhas_ACRO_MT.Count; i++)
                {
                    Modulo_RACRO_Limite_Inf_FACRO.AtualizarVariaveisDaMemoriaDeCalculo(memoriaCalculo, mediador.linhas_ACRO_MT[i]);
                    memoriaCalculo = serviceClient.ExecutarJSONcomObjetos(memoriaCalculo, listaDecisoes);

                    Assert.AreEqual(Math.Round((double)Mediador.GetVariavelPorNome(memoriaCalculo, "lim").Valor,0), Math.Round((double)mediador.linhas_ACRO_MT[i].LDvalorplanilha_Lim_FACROInf,0));
                }

            }
            catch (Exception iEx)
            {
                if (iEx is System.ServiceModel.EndpointNotFoundException)
                    throw new Exception(TestesBasicos.MsgExceptionServicoNaoAtivo, iEx);
                else
                {
                    if (serviceClient != null && serviceClient.State != System.ServiceModel.CommunicationState.Closed)
                        serviceClient.Close();

                    throw iEx;
                }
            }
        }
        public bool Executar()
        {
            bool result = true;
            MaquinaInequacoesServiceReference.MaquinaInequacoesServiceClient maquinaInequacoesServiceClient = new MaquinaInequacoesServiceReference.MaquinaInequacoesServiceClient();

            try
            {
                MaquinaInequacoesServiceReference.MemoriaCalculo memoriaCalculo = new MaquinaInequacoesServiceReference.MemoriaCalculo();

                // Para cada linha no grid em cada visão
                foreach (TabPage tab in tabControl1.TabPages)
                {
                    // Carrega visao referente a TabPage
                    Visao visao = Visoes.Where(v => v.Nome == tab.Name).FirstOrDefault();
                    if (visao == null)
                        break;

                    foreach (Control ctrl in tab.Controls)
                    {
                        if (ctrl is DataGridView)
                        {
                            DataGridView dat = (DataGridView)ctrl;
                            visao.DataGridView = dat;
                            int rowIndex = 0;
                            foreach (DataGridViewRow row in dat.Rows)
                            {
                                // Sai do for ao chegar no final (por algum motivo há uma linha a mais com valores nulos no final)
                                if (row.Cells[0].Value == null)
                                    break;

                                // Atualiza MC pelos valores na linha do DataGridView
                                for (int i = 0; i < row.Cells.Count; i++)
                                {
                                    MaquinaInequacoesServiceReference.Variavel variavel = Variaveis.Where(v => "var_" + v.Nome == row.Cells[i].OwningColumn.Name).FirstOrDefault();
                                    if (variavel != null)
                                    {
                                        variavel.Valor = row.Cells[i].Value;
                                    }
                                }

                                // Se for horário, atualiza a variável xHora
                                if (visao.NumValoresDiario30em30min)
                                {
                                    MaquinaInequacoesServiceReference.Variavel variavelHora = Variaveis.Where(v => v.Nome.Trim().ToLower() == "xhora").FirstOrDefault();
                                    if (variavelHora != null)
                                        variavelHora.Valor = DateTime.Parse(row.Cells[0].Value.ToString().Substring(0, 5) + ":00");

                                }

                                memoriaCalculo.Variaveis = Variaveis.ToArray();

                                // Executa para cada função na visão
                                foreach (KeyValuePair<Funcao, int> funcaoKVP in visao.Funcoes)
                                {

                                    Funcao funcao = funcaoKVP.Key;

                                    // Atualiza variáveis globais e dependência enre visões da Validação Limites
                                    // 01) Atualiza variável do Periodo Carga: PeriodoCarga_SE_CO
                                    if (dat.Columns.Contains("func_Modulo_PERIODO_SE_CO_RNE_2009-PeriodoCarga_SE_CO") && row.Cells["func_Modulo_PERIODO_SE_CO_RNE_2009-PeriodoCarga_SE_CO"].Value.ToString() != valorPadraoNaoExecutado)
                                    {
                                        MaquinaInequacoesServiceReference.Variavel variavelPC = Variaveis.Where(v => v.Nome.Trim().ToLower() == "PeriodoCarga_SE_CO".ToLower()).FirstOrDefault();
                                        if (variavelPC != null)
                                        {
                                            variavelPC.Valor = row.Cells["func_Modulo_PERIODO_SE_CO_RNE_2009-PeriodoCarga_SE_CO"].Value;
                                        }
                                    }
                                    if (dat.Columns.Contains("func_Modulo_Horarios_RNE_2009-PeriodoCarga_N_NE") && row.Cells["func_Modulo_Horarios_RNE_2009-PeriodoCarga_N_NE"].Value.ToString() != valorPadraoNaoExecutado)
                                    {
                                        MaquinaInequacoesServiceReference.Variavel variavelPC = Variaveis.Where(v => v.Nome.Trim().ToLower() == "PeriodoCarga_N_NE".ToLower()).FirstOrDefault();
                                        if (variavelPC != null)
                                        {
                                            variavelPC.Valor = row.Cells["func_Modulo_Horarios_RNE_2009-PeriodoCarga_N_NE"].Value;
                                        }
                                    }

                                    // 02) Dependência da VisaoS_SE com VisaoSUL: xUGarauc, x_refFRS_Ger, xFRS_GerUSs, xJLP, xJLM, xJLG, xJLGG
                                    // "Modulo_Interligacao_SSE-limiteFINBA"
                                    if (visao.Nome == "S_SE" && funcao.Nome == "Modulo_Interligacao_SSE-limiteFINBA")
                                    {
                                        Visao visaoSUL = Visoes.Where(v => v.Nome == "SUL").FirstOrDefault();
                                        DataGridView dgv = (DataGridView)visaoSUL.DataGridView;

                                        MaquinaInequacoesServiceReference.Variavel varHardCode = Variaveis.Where(v => v.Nome.Trim().ToLower() == "xUGarauc".ToLower()).FirstOrDefault();
                                        if (varHardCode != null)
                                        {
                                            varHardCode.Valor = dgv.Rows[rowIndex].Cells["var_vglobal_UGs_Gerando_Araucaria"].Value;
                                        }

                                        varHardCode = Variaveis.Where(v => v.Nome.Trim().ToLower() == "x_refFRS_Ger".ToLower()).FirstOrDefault();
                                        if (varHardCode != null)
                                        {
                                            varHardCode.Valor = dgv.Rows[rowIndex].Cells["func_Modulo_Interligacao_SSE-refFRS_Ger"].Value;
                                        }

                                        varHardCode = Variaveis.Where(v => v.Nome.Trim().ToLower() == "xFRS_GerUSs".ToLower()).FirstOrDefault();
                                        if (varHardCode != null)
                                        {
                                            // SUL[FRS] - S_SE[Gera_Usinas]
                                            varHardCode.Valor = double.Parse(dgv.Rows[rowIndex].Cells["var_vglobal_FRS"].Value.ToString()) - double.Parse(row.Cells["var_vglobal_Gera_Usinas"].Value.ToString());
                                        }

                                        varHardCode = Variaveis.Where(v => v.Nome.Trim().ToLower() == "xJLP".ToLower()).FirstOrDefault();
                                        if (varHardCode != null)
                                        {
                                            varHardCode.Valor = dgv.Rows[rowIndex].Cells["var_vglobal_J_Lacerda_P"].Value;
                                        }
                                        varHardCode = Variaveis.Where(v => v.Nome.Trim().ToLower() == "xJLM".ToLower()).FirstOrDefault();
                                        if (varHardCode != null)
                                        {
                                            varHardCode.Valor = dgv.Rows[rowIndex].Cells["var_vglobal_J_Lacerda_M"].Value;
                                        }
                                        varHardCode = Variaveis.Where(v => v.Nome.Trim().ToLower() == "xJLG".ToLower()).FirstOrDefault();
                                        if (varHardCode != null)
                                        {
                                            varHardCode.Valor = dgv.Rows[rowIndex].Cells["var_vglobal_J_Lacerda_G"].Value;
                                        }
                                        varHardCode = Variaveis.Where(v => v.Nome.Trim().ToLower() == "xJLGG".ToLower()).FirstOrDefault();
                                        if (varHardCode != null)
                                        {
                                            varHardCode.Valor = dgv.Rows[rowIndex].Cells["var_vglobal_J_Lacerda_GG"].Value;
                                        }

                                    }

                                    // 03) Dependência da VisaoN_NE_SE com VisaoS_SE: xMqIPU
                                    if (visao.Nome == "N_NE_SE" && (funcao.Nome == "Modulo_Limites_MOPs-LimiteFNS_IO" || funcao.Nome == "Modulo_Limites_MOPs-Limite_Superior_FSM"))
                                    {
                                        Visao visaoS_SE = Visoes.Where(v => v.Nome == "S_SE").FirstOrDefault();
                                        DataGridView dgv = (DataGridView)visaoS_SE.DataGridView;
                                        DataGridView dgvN_NE_SE = (DataGridView)visao.DataGridView;

                                        MaquinaInequacoesServiceReference.Variavel varHardCode = Variaveis.Where(v => v.Nome.Trim().ToLower() == "xMqIPU".ToLower()).FirstOrDefault();
                                        if (varHardCode != null)
                                        {
                                            varHardCode.Valor = dgv.Rows[rowIndex].Cells["func_Modulo_Interligacao_SSE-Mqs_CORTE_FIPU_FSE"].Value;
                                        }
                                        varHardCode = Variaveis.Where(v => v.Nome.Trim().ToLower() == "xECE_IPU_TUC".ToLower()).FirstOrDefault();
                                        if (varHardCode != null)
                                        {
                                            varHardCode.Valor = dgvN_NE_SE.Rows[rowIndex].Cells["func_Modulo_N_NE_SE_comECE_RNE_2009-ECE_ON_OFF"].Value;
                                        }
                                        varHardCode = Variaveis.Where(v => v.Nome.Trim().ToLower() == "xMW_ug_ipu".ToLower()).FirstOrDefault();
                                        if (varHardCode != null)
                                        {
                                            varHardCode.Valor = double.Parse(dgv.Rows[rowIndex].Cells["var_vglobal_GIPU_60Hz"].Value.ToString()) / double.Parse(dgv.Rows[rowIndex].Cells["var_vglobal_Mq_60Hz"].Value.ToString());
                                        }
                                    }

                                    // 04) Dependência da VisaoSEVERA_N3 com VisaoN_NE_SE e VisaoS_SE
                                    if (visao.Nome == "SEVERA_N3" && (funcao.Nome == "Modulo_Limites_MOPs-Limite_GIPU_n3") || funcao.Nome == "Modulo_Limites_MOPs-LIM_FSE_n3" || funcao.Nome == "Modulo_Limites_MOPs-LIM_FNS_n3" || funcao.Nome == "Modulo_Limites_MOPs-LIM_FSM_n3" || funcao.Nome == "Modulo_Limites_MOPs-Limite_RSUL_n3")
                                    {
                                        Visao visaoS_SE = Visoes.Where(v => v.Nome == "S_SE").FirstOrDefault();
                                        DataGridView dgvS_SE = (DataGridView)visaoS_SE.DataGridView;
                                        Visao visaoN_NE_SE = Visoes.Where(v => v.Nome == "N_NE_SE").FirstOrDefault();
                                        DataGridView dgvN_NE_SE = (DataGridView)visaoN_NE_SE.DataGridView;

                                        MaquinaInequacoesServiceReference.Variavel varHardCode = Variaveis.Where(v => v.Nome.Trim().ToLower() == "xcarga_SIN".ToLower()).FirstOrDefault();
                                        if (varHardCode != null)
                                        {
                                            varHardCode.Valor = dgvN_NE_SE.Rows[rowIndex].Cells["var_vglobal_CARGASIN"].Value;
                                        }

                                        varHardCode = Variaveis.Where(v => v.Nome.Trim().ToLower() == "xcargaSIN".ToLower()).FirstOrDefault();
                                        if (varHardCode != null)
                                        {
                                            varHardCode.Valor = dgvS_SE.Rows[rowIndex].Cells["var_vglobal_CARGA_SIN"].Value;
                                        }

                                        varHardCode = Variaveis.Where(v => v.Nome.Trim().ToLower() == "xelocc".ToLower()).FirstOrDefault();
                                        if (varHardCode != null)
                                        {
                                            varHardCode.Valor = dgvS_SE.Rows[rowIndex].Cells["var_vglobal_POT_ELO_CC"].Value;
                                        }

                                        varHardCode = Variaveis.Where(v => v.Nome.Trim().ToLower() == "xlimite_fse".ToLower()).FirstOrDefault();
                                        if (varHardCode != null)
                                        {
                                            varHardCode.Valor = dgvS_SE.Rows[rowIndex].Cells["func_Modulo_Interligacao_SSE-LimiteFSE"].Value;
                                        }
                                        varHardCode = Variaveis.Where(v => v.Nome.Trim().ToLower() == "xlimite_rse".ToLower()).FirstOrDefault();
                                        if (varHardCode != null)
                                        {
                                            varHardCode.Valor = dgvS_SE.Rows[rowIndex].Cells["func_Modulo_Interligacao_SSE-Limite_RSE"].Value;
                                        }

                                        // xmq_sm = N_NE_SE!L6+N_NE_SE!O6
                                        varHardCode = Variaveis.Where(v => v.Nome.Trim().ToLower() == "xmq_sm".ToLower()).FirstOrDefault();
                                        if (varHardCode != null)
                                        {
                                            varHardCode.Valor = double.Parse(dgvN_NE_SE.Rows[rowIndex].Cells["var_vglobal_SMGerando"].Value.ToString()) + double.Parse(dgvN_NE_SE.Rows[rowIndex].Cells["var_vglobal_Maqs_SMCOp"].Value.ToString());
                                        }
                                    }

                                    MaquinaInequacoesServiceReference.ListaDecisoes listaDecisoes = funcao.ListaDecisoes;

                                    try
                                    {
                                        // Chama o serviço
                                        MaquinaInequacoesServiceReference.MemoriaCalculo memoriaCalculoResult = maquinaInequacoesServiceClient.ExecutarJSONcomObjetos(memoriaCalculo, listaDecisoes);

                                        try
                                        {
                                            // Atualiza variáveis na grid com valores
                                            for (int i = 0; i < row.Cells.Count; i++)
                                            {
                                                MaquinaInequacoesServiceReference.Variavel var = memoriaCalculoResult.Variaveis.Where(v => "var_" + v.Nome == row.Cells[i].OwningColumn.Name).FirstOrDefault();
                                                if (var != null)
                                                {
                                                    row.Cells[i].Value = var.Valor;
                                                }
                                            }

                                            funcao.VariavelRetorno = memoriaCalculoResult.Variaveis.Where(v => v.Nome.Trim().ToLower() == funcao.VariavelRetorno.Nome.Trim().ToLower()).FirstOrDefault();

                                            // Atualiza valor da função na grid com valor da variável de retorno
                                            for (int i = 0; i < row.Cells.Count; i++)
                                            {
                                                if (row.Cells[i].OwningColumn.Name == "func_" + funcao.Nome)
                                                {
                                                    row.Cells[i].Value = funcao.VariavelRetorno.Valor;
                                                    break;
                                                }
                                            }
                                        }
                                        catch(Exception iEx)
                                        {
                                            MessageBox.Show("Erro após a chamada ao serviço [" + funcao.Nome + "]:" + iEx.Message + "\n" + iEx.StackTrace);
                                        }
                                    }
                                    catch (Exception iEx)
                                    {
                                        MessageBox.Show("Erro na chamada ao serviço [" + funcao.Nome + "]:" + iEx.Message + "\n" + iEx.StackTrace);
                                    }

                                }

                                rowIndex++;

                            }
                            break;
                        }
                    }

                }

                maquinaInequacoesServiceClient.Close();

            }
            catch (Exception iEx)
            {
                MessageBox.Show("Erro na execução:" + iEx.Message + "\n");
                if (maquinaInequacoesServiceClient != null && maquinaInequacoesServiceClient.State == System.ServiceModel.CommunicationState.Opened)
                    maquinaInequacoesServiceClient.Close();
                maquinaInequacoesServiceClient = null;
                result = false;
            }

            return result;
        }