void BindListBox() { string ecid = ViewState["ecid"].ToString(); DataTable dt = KPI_RealTagDal.GetTAGs(); lbx_TAG.DataSource = dt; lbx_TAG.DataTextField = "Name"; lbx_TAG.DataValueField = "Code"; lbx_TAG.DataBind(); dt = ECTagDal.GetKPIs(ecid); lbx_KPI.DataSource = dt; lbx_KPI.DataTextField = "Name"; lbx_KPI.DataValueField = "Code"; lbx_KPI.DataBind(); ExpDone Parser = new ExpDone(); Dictionary <String, String> dic = Parser.CustomFunctionsListing(); ddlCustomFunction.Items.Add(new ListItem("请选择", "NULL")); foreach (KeyValuePair <String, String> kvp in dic) { ddlCustomFunction.Items.Add(new ListItem(kvp.Value, kvp.Key)); } }
public WS_KPISubMethod() { m_RTDataAccess = DBAccess.GetRealTime(); m_KPIVar = new WS_KPIVar(); m_ExpressionParse = new ExpDone(); m_DBClient = new WS_KPIDBClient(); m_KPIValueTable = m_DBClient.GetTableSchema("kpivalue"); m_TagValueTable = m_DBClient.GetTableSchema("tagvalue"); }
public static void Main() { //ExpressionTest(); //ExpressionTest(); //Parser P = new Parser(); //object result = Convert.ToBoolean("9>10"); //Console.WriteLine(result); //VsaEngine ve = VsaEngine.CreateEngine(); //Console.WriteLine(Eval.JScriptEvaluate("9>=8", ve)); //String Exp = "IFF(AVG(\"1_AMMW_XQ01\")-AVG(\"1_AMMW_XQ01\"),19,20)"; String Exp = "IFF(\"([1_AM18CCS0201_XQ01]- [1_AM18CCS0205_XQ01])>2\",0,-5)*" + "(IFF(\"[1_AM18BY03_XQ01]<178\",0,1)+IFF(\"[1_AMMW_XQ01]<178\",1,0))*" + "IFF(\"([1_AM18CCS0201_XQ01]-[1_AM18BY03_XQ01])>5\",1,0)"; String Exp1 = "IFF(\"([1_AM18CCS0206_XQ01]-3.75)>=0\",0,-0.5)+" + "IFF(\"([1_AM18CCS0206_XQ01]-3.00)>=0\",0,-1)+" + "IFF(\"([1_AM18CCS0206_XQ01]-2.50)>=0\",0,-1.5)+" + "IFF(\"([1_AM18CCS0206_XQ01]-2.00)>=0\",0,-2)+" + "IFF(\"([1_AM18CCS0206_XQ01]-1.50)>=0\",0,-3)"; //JurassicDemo(Exp); //AGC速率指标 String AGC1 = "IFF(\"([1_AM18CCS0206_XQ01]-3.75)>=0\",0,-0.5) + " + "IFF(\"([1_AM18CCS0206_XQ01]-3.00)>=0\",0,-1) + " + "IFF(\"([1_AM18CCS0206_XQ01]-2.50)>=0\",0,-1.5) + " + "IFF(\"([1_AM18CCS0206_XQ01]-2.00)>=0\",0,-2) + " + "IFF(\"([1_AM18CCS0206_XQ01]-1.50)>=0\",0,-3)"; //AGC限负荷指标 String AGC2 = "(IFF(\"([1_AM18CCS0204_XQ01]-[1_AM18CCS0201_XQ01])>2\",0,-5) * IFF (\"[1_MAG01CPZ_XQ01]>31\",0,1)* IFF(\"([1_AM18BY03_XQ01]-[1_AM18CCS0201_XQ01])>10\",1,0)) + (IFF(\"([1_AM18CCS0201_XQ01]- [1_AM18CCS0205_XQ01])>2\",0,-5)*(IFF(\"[1_AM18BY03_XQ01]<178\",0,1)+IFF(\"[1_AMMW_XQ01]<178\",1,0))*IFF(\"([1_AM18CCS0201_XQ01]-[1_AM18BY03_XQ01])>5\",1,0))"; //AGC调整补偿指标 String AGC3 = "ABS([1_AM18BY03_XQ01]-[1_AMMW_XQ01])/2 * IFF (\"[1_AM18BY03_XQ01]<178\",0,1)+ IFF (\"[1_AMMW_XQ01]<178\",1,0) * IFF (\"AGC01==0\",1,0) * IFF(\"AGC02==0\",1,0)"; Dictionary <String, double> dcexp = new Dictionary <string, double>(); String strresult = "", strexpression = ""; double result = 0; ExpDone P = new ExpDone(); P.ExpCalculate(AGC2, dcexp, out result, out strresult, out strexpression); Console.WriteLine("{0}={1}", AGC2, result); //Console.WriteLine(IFCRefer.IFC67.TSK(ref p)); //WS_KPIMainMethod KPICalc = new WS_KPIMainMethod(); //KPICalc.KPIAppRunForPerformance(true); /*int i = 1; * while (true) { * KPICalc.KPIAppRunForPerformance(true); * Console.WriteLine(string.Format("第{0}遍计算", i)); * i++; * GC.Collect(); * Thread.Sleep(60000); * }*/ //KPIRecalculate(); //GetUnitLoad(); //KPICalc.KIsTest = 1; //KPICalc.KPIAppRunForRecalculate(); Console.ReadLine(); }
public static void Main() { //ExpressionTest(); //ExpressionTest(); //Parser P = new Parser(); //object result = Convert.ToBoolean("9>10"); //Console.WriteLine(result); //VsaEngine ve = VsaEngine.CreateEngine(); //Console.WriteLine(Eval.JScriptEvaluate("9>=8", ve)); //String Exp = "IFF(AVG(\"1_AMMW_XQ01\")-AVG(\"1_AMMW_XQ01\"),19,20)"; String Exp = "IFF(\"([1_AM18CCS0201_XQ01]- [1_AM18CCS0205_XQ01])>2\",0,-5)*"+ "(IFF(\"[1_AM18BY03_XQ01]<178\",0,1)+IFF(\"[1_AMMW_XQ01]<178\",1,0))*" + "IFF(\"([1_AM18CCS0201_XQ01]-[1_AM18BY03_XQ01])>5\",1,0)"; String Exp1 = "IFF(\"([1_AM18CCS0206_XQ01]-3.75)>=0\",0,-0.5)+" + "IFF(\"([1_AM18CCS0206_XQ01]-3.00)>=0\",0,-1)+" + "IFF(\"([1_AM18CCS0206_XQ01]-2.50)>=0\",0,-1.5)+" + "IFF(\"([1_AM18CCS0206_XQ01]-2.00)>=0\",0,-2)+" + "IFF(\"([1_AM18CCS0206_XQ01]-1.50)>=0\",0,-3)"; //JurassicDemo(Exp); //AGC速率指标 String AGC1="IFF(\"([1_AM18CCS0206_XQ01]-3.75)>=0\",0,-0.5) + "+ "IFF(\"([1_AM18CCS0206_XQ01]-3.00)>=0\",0,-1) + "+ "IFF(\"([1_AM18CCS0206_XQ01]-2.50)>=0\",0,-1.5) + "+ "IFF(\"([1_AM18CCS0206_XQ01]-2.00)>=0\",0,-2) + "+ "IFF(\"([1_AM18CCS0206_XQ01]-1.50)>=0\",0,-3)"; //AGC限负荷指标 String AGC2 = "(IFF(\"([1_AM18CCS0204_XQ01]-[1_AM18CCS0201_XQ01])>2\",0,-5) * IFF (\"[1_MAG01CPZ_XQ01]>31\",0,1)* IFF(\"([1_AM18BY03_XQ01]-[1_AM18CCS0201_XQ01])>10\",1,0)) + (IFF(\"([1_AM18CCS0201_XQ01]- [1_AM18CCS0205_XQ01])>2\",0,-5)*(IFF(\"[1_AM18BY03_XQ01]<178\",0,1)+IFF(\"[1_AMMW_XQ01]<178\",1,0))*IFF(\"([1_AM18CCS0201_XQ01]-[1_AM18BY03_XQ01])>5\",1,0))"; //AGC调整补偿指标 String AGC3 = "ABS([1_AM18BY03_XQ01]-[1_AMMW_XQ01])/2 * IFF (\"[1_AM18BY03_XQ01]<178\",0,1)+ IFF (\"[1_AMMW_XQ01]<178\",1,0) * IFF (\"AGC01==0\",1,0) * IFF(\"AGC02==0\",1,0)"; Dictionary<String, double> dcexp = new Dictionary<string, double>(); String strresult = "", strexpression=""; double result = 0; ExpDone P = new ExpDone(); P.ExpCalculate(AGC2, dcexp, out result, out strresult, out strexpression); Console.WriteLine("{0}={1}", AGC2, result); //Console.WriteLine(IFCRefer.IFC67.TSK(ref p)); //WS_KPIMainMethod KPICalc = new WS_KPIMainMethod(); //KPICalc.KPIAppRunForPerformance(true); /*int i = 1; while (true) { KPICalc.KPIAppRunForPerformance(true); Console.WriteLine(string.Format("第{0}遍计算", i)); i++; GC.Collect(); Thread.Sleep(60000); }*/ //KPIRecalculate(); //GetUnitLoad(); //KPICalc.KIsTest = 1; //KPICalc.KPIAppRunForRecalculate(); Console.ReadLine(); }
private static void ExpressionTest() { ExpDone m_ExpressionParse = new ExpDone(); Dictionary <string, double> dcexp = new Dictionary <string, double>(); double result = 0; String strExpression = ""; string strresult = ""; String tagid = "\"\\MJDC\\CYD\\PI00021\""; String exp = "POWERDIFF(" + tagid + ",10)"; Console.WriteLine(exp); m_ExpressionParse.ExpCalculate(exp, dcexp, out result, out strresult, out strExpression); Console.WriteLine(String.Format("表达式{0}计算结果是{1}", exp, result)); Dictionary <String, double> dic1 = new Dictionary <String, double>(); m_ExpressionParse.ExpEvaluate(exp, ref dic1); }
void ExpCalc() { // double result = double.MinValue; string strresult = ""; string strexpression = ""; ExpDone parser = new ExpDone(); if (parser.ExpCalculate(expression, dc, out result, out strresult, out strexpression) == 0) { tbx_Result.BackColor = Color.Empty; tbx_Result.Text = expression + ": " + strexpression + " = " + strresult; } else { tbx_Result.BackColor = Color.Red; tbx_Result.Text = strresult; } }
void ExpVal() { expression = tbx_Exp.Text; if (expression.Length > 0) { ///标签及指标解析 ExpDone Parser = new ExpDone(); if (Parser.ExpEvaluate(expression, ref dc) == 0) { tbx_Result.BackColor = Color.Green; tbx_Result.Text = "标签及指标解析正确"; } else { tbx_Result.BackColor = Color.Red; tbx_Result.Text = "标签及指标解析不正确"; } } }
private static void ExpressionTest() { ExpDone m_ExpressionParse = new ExpDone(); Dictionary<string, double> dcexp = new Dictionary<string, double>(); double result = 0; String strExpression = ""; string strresult = ""; String tagid = "\"\\MJDC\\CYD\\PI00021\""; String exp = "POWERDIFF(" + tagid + ",10)"; Console.WriteLine(exp); m_ExpressionParse.ExpCalculate(exp, dcexp, out result, out strresult, out strExpression); Console.WriteLine(String.Format("表达式{0}计算结果是{1}", exp, result)); Dictionary<String, double> dic1 = new Dictionary<String, double>(); m_ExpressionParse.ExpEvaluate(exp, ref dic1); }
void ExpCalc() { // double result = double.MinValue; string strresult = ""; string strexpression = ""; ExpDone parser = new ExpDone(); if (parser.ExpCalculate(expression, dc, out result, out strresult, out strexpression) == 0) { tbx_Result.BackColor = Color.Empty; tbx_Result.Text =expression+ ": " + strexpression + " = "+strresult; } else { tbx_Result.BackColor = Color.Red; tbx_Result.Text = strresult; } }
protected void btnCheck_Click(object sender, EventArgs e) { lbxInfor.Items.Clear(); lerror.Clear(); ////////////////////////////////////////////////////////////////////////////// //指标 Dictionary<string, double> dicTags = new Dictionary<string,double>(); ////////////////////////////////////////////////////////////////////////////// //经济指标 List<ECTagEntity> lts = ECTagDal.GetAllEntity(); lbxInfor.Items.Add("查询所有的经济指标!" ); foreach (ECTagEntity ltone in lts) { //lbxInfor.Items.Add("开始校验:" + ltone.ECCode + "--" + ltone.ECName ); //有就不变,没有就添加; string strTagCode = "'" + ltone.ECCode.ToUpper().Trim() + "'"; dicTags[strTagCode] = 0.0; //校验计算公式 if (cbxCheckForEcTag.Items[0].Selected && (ltone.ECCalcExp.Replace("'", "''").Length - ltone.ECCalcExp.Length) % 2 != 0) { lbxInfor.Items.Add(ltone.ECCode + "--" + ltone.ECName + ": 计算公式解析失败! "+ ltone.ECCalcExp); lerror.Add(ltone.ECCalcExp); } ///////////////////////////////////////////////////////////////// //校验Xline曲线 if (cbxCheckForEcTag.Items[1].Selected && !ECTagDal.CheckEntityForXline(ltone)) { //相同X不能存在。 lbxInfor.Items.Add(ltone.ECCode + "--" + ltone.ECName + ": 曲线解析失败! "+ ltone.ECXLineType.ToString() + "--" + ltone.ECXLineXYZ); lerror.Add(ltone.ECXLineXYZ); } //////////////////////////////////////////////////////////////// //校验ScoreExp if (cbxCheckForEcTag.Items[2].Selected && !ECTagDal.CheckEntityForScore(ltone)) { lbxInfor.Items.Add(ltone.ECCode + "--" + ltone.ECName + ": 得分计算解析失败! "+ ltone.ECScoreExp); lerror.Add(ltone.ECScoreExp); } //////////////////////////////////////////////////////////////// //校验Optimal if (cbxCheckForEcTag.Items[2].Selected && !ECTagDal.CheckEntityForOptimal(ltone)) { lbxInfor.Items.Add(ltone.ECCode + "--" + ltone.ECName + ": 最优区间数量不等于1! " + ltone.ECScoreExp); lerror.Add(ltone.ECScoreExp); } } ////////////////////////////////////////////////////////// //实时指标 List<KPI_RealTagEntity> rls = KPI_RealTagDal.GetAllEntity(); lbxInfor.Items.Add("查询所有的实时指标!" ); foreach (KPI_RealTagEntity ltone in rls) { //有就不变,没有就添加; string strTagCode = "'" + ltone.RealCode.ToUpper().Trim() + "'"; dicTags[strTagCode] = 0.0; if (cbxCheckForRealTag.Items[0].Selected) { //lbxInfor.Items.Add("开始校验:" + ltone.RealCode + "--" + ltone.RealDesc); string strtag = ltone.RealCode; if (!DBAccess.GetRealTime().ExistPoint(strtag)) { lbxInfor.Items.Add(ltone.RealCode + "--" + ltone.RealDesc + ": 不存在! "); lerror.Add(ltone.RealCode); } } } ////////////////////////////////////////////// //所有指标 lbxInfor.Items.Add("校验经济指标的标签引用!"); foreach (ECTagEntity ltone in lts) { //lbxInfor.Items.Add("开始校验:" + ltone.ECCode + "--" + ltone.ECName ); //////////////////////////////////////////////////////////////// //校验Calc Tag Dictionary<String, double> dic1 = new Dictionary<String, double>(); string expression = ltone.ECCalcExp.Trim(); if (expression == "") { lbxInfor.Items.Add(ltone.ECCode + "--" + ltone.ECName + " 计算表达式为空!"); continue; } ExpDone parser = new ExpDone(); if (parser.ExpEvaluate(expression, ref dic1) != 0) { lbxInfor.Items.Add(ltone.ECCode + "--" + ltone.ECName + " 指标解析错误:" +ltone.ECCalcExp); lerror.Add(ltone.ECCalcExp); continue; } foreach(KeyValuePair<string, double> kvp in dic1) { string tagcode = kvp.Key.ToUpper().Trim(); if (!dicTags.ContainsKey(tagcode)) { lbxInfor.Items.Add(ltone.ECCode + "--" + ltone.ECName + ": 的标签点引用失败! " + kvp.Key); lerror.Add(kvp.Key); } } } }
void BindListBox() { string ecid = ViewState["ecid"].ToString(); DataTable dt = KPI_RealTagDal.GetTAGs(); lbx_TAG.DataSource = dt; lbx_TAG.DataTextField = "Name"; lbx_TAG.DataValueField = "Code"; lbx_TAG.DataBind(); dt = ECTagDal.GetKPIs(ecid); lbx_KPI.DataSource = dt; lbx_KPI.DataTextField = "Name"; lbx_KPI.DataValueField = "Code"; lbx_KPI.DataBind(); ExpDone Parser = new ExpDone(); Dictionary<String, String> dic = Parser.CustomFunctionsListing(); ddlCustomFunction.Items.Add(new ListItem("请选择", "NULL")); foreach (KeyValuePair<String, String> kvp in dic) { ddlCustomFunction.Items.Add(new ListItem(kvp.Value, kvp.Key)); } }
protected void btnCheck_Click(object sender, EventArgs e) { lbxInfor.Items.Clear(); lerror.Clear(); ////////////////////////////////////////////////////////////////////////////// //指标 Dictionary <string, double> dicTags = new Dictionary <string, double>(); ////////////////////////////////////////////////////////////////////////////// //经济指标 List <ECTagEntity> lts = ECTagDal.GetAllEntity(); lbxInfor.Items.Add("查询所有的经济指标!"); foreach (ECTagEntity ltone in lts) { //lbxInfor.Items.Add("开始校验:" + ltone.ECCode + "--" + ltone.ECName ); //有就不变,没有就添加; string strTagCode = "'" + ltone.ECCode.ToUpper().Trim() + "'"; dicTags[strTagCode] = 0.0; //校验计算公式 if (cbxCheckForEcTag.Items[0].Selected && (ltone.ECCalcExp.Replace("'", "''").Length - ltone.ECCalcExp.Length) % 2 != 0) { lbxInfor.Items.Add(ltone.ECCode + "--" + ltone.ECName + ": 计算公式解析失败! " + ltone.ECCalcExp); lerror.Add(ltone.ECCalcExp); } ///////////////////////////////////////////////////////////////// //校验Xline曲线 if (cbxCheckForEcTag.Items[1].Selected && !ECTagDal.CheckEntityForXline(ltone)) { //相同X不能存在。 lbxInfor.Items.Add(ltone.ECCode + "--" + ltone.ECName + ": 曲线解析失败! " + ltone.ECXLineType.ToString() + "--" + ltone.ECXLineXYZ); lerror.Add(ltone.ECXLineXYZ); } //////////////////////////////////////////////////////////////// //校验ScoreExp if (cbxCheckForEcTag.Items[2].Selected && !ECTagDal.CheckEntityForScore(ltone)) { lbxInfor.Items.Add(ltone.ECCode + "--" + ltone.ECName + ": 得分计算解析失败! " + ltone.ECScoreExp); lerror.Add(ltone.ECScoreExp); } //////////////////////////////////////////////////////////////// //校验Optimal if (cbxCheckForEcTag.Items[2].Selected && !ECTagDal.CheckEntityForOptimal(ltone)) { lbxInfor.Items.Add(ltone.ECCode + "--" + ltone.ECName + ": 最优区间数量不等于1! " + ltone.ECScoreExp); lerror.Add(ltone.ECScoreExp); } } ////////////////////////////////////////////////////////// //实时指标 List <KPI_RealTagEntity> rls = KPI_RealTagDal.GetAllEntity(); lbxInfor.Items.Add("查询所有的实时指标!"); foreach (KPI_RealTagEntity ltone in rls) { //有就不变,没有就添加; string strTagCode = "'" + ltone.RealCode.ToUpper().Trim() + "'"; dicTags[strTagCode] = 0.0; if (cbxCheckForRealTag.Items[0].Selected) { //lbxInfor.Items.Add("开始校验:" + ltone.RealCode + "--" + ltone.RealDesc); string strtag = ltone.RealCode; if (!DBAccess.GetRealTime().ExistPoint(strtag)) { lbxInfor.Items.Add(ltone.RealCode + "--" + ltone.RealDesc + ": 不存在! "); lerror.Add(ltone.RealCode); } } } ////////////////////////////////////////////// //所有指标 lbxInfor.Items.Add("校验经济指标的标签引用!"); foreach (ECTagEntity ltone in lts) { //lbxInfor.Items.Add("开始校验:" + ltone.ECCode + "--" + ltone.ECName ); //////////////////////////////////////////////////////////////// //校验Calc Tag Dictionary <String, double> dic1 = new Dictionary <String, double>(); string expression = ltone.ECCalcExp.Trim(); if (expression == "") { lbxInfor.Items.Add(ltone.ECCode + "--" + ltone.ECName + " 计算表达式为空!"); continue; } ExpDone parser = new ExpDone(); if (parser.ExpEvaluate(expression, ref dic1) != 0) { lbxInfor.Items.Add(ltone.ECCode + "--" + ltone.ECName + " 指标解析错误:" + ltone.ECCalcExp); lerror.Add(ltone.ECCalcExp); continue; } foreach (KeyValuePair <string, double> kvp in dic1) { string tagcode = kvp.Key.ToUpper().Trim(); if (!dicTags.ContainsKey(tagcode)) { lbxInfor.Items.Add(ltone.ECCode + "--" + ltone.ECName + ": 的标签点引用失败! " + kvp.Key); lerror.Add(kvp.Key); } } } }