示例#1
0
        //////////////////////////////////////////////////////////////////////////////
        #region Define Functions

        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public bool KPIInitialVar()
        {
            try {
                //是否取服务器时间
                bTimeMode = KPI_SystemDal.GetKPITimeMode() == 1 ? true : false;
                //偏置时间
                nOffset = KPI_SystemDal.GetKPIOffset();
                //初始所有List<>
                ltUnits = KPI_UnitDal.GetValidEntity();
                ltSeqs  = KPI_SeqDal.GetValidEntity();
                ltKpis  = KpiDal.GetValidEntity();

                //实时、手录、曲线指标
                ltReals  = KPI_RealTagDal.GetAllEntity();
                ltInputs = KPI_InputTagDal.GetAllEntity();
                ltCurves = CurveTagDal.GetAllEntity();
                //计算周期
                List <CycleEntity> ltCYs = CycleDal.GetAllEntity();
                dicCYs = new Dictionary <string, CycleEntity>();
                foreach (CycleEntity cye in ltCYs)
                {
                    dicCYs[cye.CycleID] = cye;
                }

                //经济指标
                ltECs    = ECTagDal.GetValidEntity();
                ltXLines = ECTagDal.GetAllXLineEntity();
                ltScores = ECTagDal.GetAllScoreEntity();
                /////////////////////////////////////////////////////////////////
                //安全指标
                dicUnitStatus = new Dictionary <string, bool>();
                dicUnitPEs    = new Dictionary <string, double>();
                dicTags       = new Dictionary <string, double>();
                dicRealTag    = new Dictionary <string, RealTag>();
            }
            catch (Exception ex) {
                LogUtil.LogMessage(ex.ToString());

                return(false);
            }

            return(true);
        }
示例#2
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);
                    }
                }
            }
        }