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; } } }
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; }