////////////////////////////////////////////////////////////////////////////// #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); }
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); } } } }