Ejemplo n.º 1
0
        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));
            }
        }
Ejemplo n.º 2
0
 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");
 }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
 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();
 }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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;
            }
        }
Ejemplo n.º 7
0
        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      = "标签及指标解析不正确";
                }
            }
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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 = "标签及指标解析不正确";
                }
            }
        }
Ejemplo n.º 10
0
 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;
     }
 }
Ejemplo n.º 11
0
        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));
            }
        }
Ejemplo n.º 13
0
        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);
                    }
                }
            }
        }