private CurrentWorkInfo GetWorkInfo(String unitID, DateTime CalcDateTime) { CurrentWorkInfo Result = new CurrentWorkInfo(); KPI_UnitEntity Entity = KPI_UnitDal.GetEntity(unitID); Result.WorkID = Entity.WorkID; String strStartTime = ""; String strEndTime = ""; String Shift = ""; String Period = ""; String strCurrentMinute = CalcDateTime.ToString("yyyy-MM-dd HH:mm:00"); KPI_WorkDal.GetShiftAndPeriod(Result.WorkID, strCurrentMinute, ref Shift, ref Period, ref strStartTime, ref strEndTime); Result.Shift = Shift; Result.Period = Period; Result.StartTime = Convert.ToDateTime(strStartTime); Result.EndTime = Convert.ToDateTime(strEndTime); return(Result); }
private void CalculateSAScore(DateTime StartTime, DateTime EndTime) { KPI_SATagValueEntity SATagValue; List <KPI_SATagEntity> SATagList; this.BeginTime = StartTime; //开始时间 this.EndTime = EndTime; m_Log.Info("开始计算安全得分"); m_Log.InfoFormat("开始时间:{0} 结束时间:{1}", BeginTime.ToString("yyyy-MM-dd HH:mm:ss"), EndTime.ToString("yyyy-MM-dd HH:mm:ss")); using (KPI_SATagDal DataAccess = new KPI_SATagDal()) { foreach (KPI_UnitEntity Unit in m_UnitList) { if (UnitIsRunning(Unit.UnitID) == false) { continue; //机组停运不计算得分 } CurrentWorkInfo WorkInfo = GetWorkInfo(Unit.UnitID, BeginTime); //获取当前值次、班次相关信息 SATagValue = new KPI_SATagValueEntity(); SATagValue.Shift = WorkInfo.Shift; SATagValue.Period = WorkInfo.Period; SATagValue.CalcDateTime = EndTime; SATagList = DataAccess.GetSATagList(Unit.UnitID); foreach (KPI_SATagEntity SATag in SATagList) { SATagValue.SAID = SATag.SAID; SATagValue.SAScore = Convert.ToDecimal(m_Parser.Evaluate(SATag.SACalcExp)); //计算安全得分 //Console.WriteLine(SATag.SACountExpression); SATagValue.TotalCount = Convert.ToInt32(m_Parser.Evaluate(SATag.SACountExpression)); //计算超限次数 SATagValue.TotalDuration = Convert.ToDecimal(m_Parser.Evaluate(SATag.SADurationExpression)); //计算超限时长 if (SATagValue.TotalCount > 0) { m_DataAccess.SaveKPI_SATagValue(SATagValue); } } SATagList.Clear(); } } //Console.WriteLine("安全得分计算结束"); m_Log.Info("安全得分计算结束"); }
private CurrentWorkInfo GetWorkInfo(String unitID, DateTime CalcDateTime) { CurrentWorkInfo Result = new CurrentWorkInfo(); KPI_UnitEntity Entity = KPI_UnitDal.GetEntity(unitID); Result.WorkID = Entity.WorkID; String strStartTime = ""; String strEndTime = ""; String Shift = ""; String Period = ""; String strCurrentMinute = CalcDateTime.ToString("yyyy-MM-dd HH:mm:00"); KPI_WorkDal.GetShiftAndPeriod(Result.WorkID, strCurrentMinute, ref Shift, ref Period, ref strStartTime, ref strEndTime); Result.Shift = Shift; Result.Period = Period; Result.StartTime = Convert.ToDateTime(strStartTime); Result.EndTime = Convert.ToDateTime(strEndTime); return Result; }