/// <summary> 主要计算方法 </summary> /// <param name="times"> 要处理的集合 </param> /// <param name="start"> 起始时间 </param> /// <param name="end"> 结束时间 </param> /// <param name="space"> 时间间隔或阀值 </param> public void CaculateTimeValue(Queue <DayTimeModelEntity <T> > times, DateTime start, DateTime end, int space) { DateTime tempTime = start; CaculateGroupEngine <DayTimeModelEntity <T> > engine = new CaculateGroupEngine <DayTimeModelEntity <T> >(space); engine.ThresholdEvent = _thresholdEvent; while (tempTime < end) { DayTimeModelEntity <T> outTime = GetListEntity(times, tempTime); if (outTime == null) { break; } List <DayTimeModelEntity <T> > entityList = new List <DayTimeModelEntity <T> >(); GetAppEntity(outTime, ref tempTime, ref entityList); foreach (var v in entityList) { engine.AddItem(v); } } }
public int CompareTo(object obj) { DayTimeModelEntity <T> temp = obj as DayTimeModelEntity <T>; if (this.time.Date > temp.time) { return(1); } else if (this.time.Date < temp.time) { return(-1); } else { return(0); } }
/// <summary> 递归获取的时间比比较时间小则过滤掉 </summary> DayTimeModelEntity <T> GetListEntity(Queue <DayTimeModelEntity <T> > times, DateTime time) { if (times.Count == 0) { return(null); } DayTimeModelEntity <T> outTime = times.Dequeue(); if (outTime.CompareTo(time) < 0) { return(GetListEntity(times, time)); } else { return(outTime); } }
/// <summary> 递归批量增加间断的时间 </summary> void GetAppEntity(DayTimeModelEntity <T> outTime, ref DateTime tempTime, ref List <DayTimeModelEntity <T> > entityList) { if (outTime.CompareTo(tempTime) == 0) { entityList.Add(outTime); tempTime = tempTime.AddDays(1); } else { DayTimeModelEntity <T> entity = new DayTimeModelEntity <T>(); entity.Time = tempTime; entity.Value = defautValue; entityList.Add(entity); tempTime = tempTime.AddDays(1); GetAppEntity(outTime, ref tempTime, ref entityList); } }