Esempio n. 1
0
        private IEnumerable <HistoryData> ReadFromFile(DateTime start, DateTime end)
        {
            int eyear  = end.Year;
            int syear  = start.Year;
            int emonth = end.Month;
            int smonth = start.Month;
            int year   = syear;

            while (year <= eyear)
            {
                int month = (year == syear ? smonth : 1);
                while (month <= (year == eyear ? emonth : 12))
                {
                    var result = HDAIOHelper.LoadFromFile((year == syear && month == smonth ? start : new DateTime(year, month, 1)),
                                                          (year == eyear && month == emonth ? end : new DateTime(year, month, 1).AddMonths(1).AddMilliseconds(-2)));//考虑按月遍历
                    if (result != null)
                    {
                        foreach (var data in result)
                        {
                            yield return(data);
                        }
                    }
                    month++;
                }
                year++;
            }
        }
Esempio n. 2
0
 public IEnumerable <HistoryData> ReadRaw(DateTime start, DateTime end, short ID)
 {
     if (end < start)
     {
         return(null);
     }
     try
     {
         if (HDAIOHelper.FindFile(end) && (DateTime.Today > end.Date))
         {
             return(ReadFromFile(start, end, ID));
         }
         return(group.SendHdaRequest(start, end, ID));
     }
     catch (Exception exp)
     {
         App.AddErrorLog(exp);
         return(null);
     }
 }
Esempio n. 3
0
        /// <summary>
        /// 从文件或者数据库中获取归档的数据
        /// </summary>
        /// <param name="start"></param>
        /// <param name="end"></param>
        /// <returns></returns>
        private IEnumerable <HistoryData> GetHData(DateTime start, DateTime end)
        {
            if (start > end)
            {
                yield break;
            }
            DateTime now = DateTime.Now;

            if (start > now)
            {
                yield break;
            }
            if (end > now)
            {
                end = now;
            }
            //if (now.Date > start.Date)
            //{
            //    DateTime tempstart = DateTime.MinValue;
            //    DateTime tempend = end;
            //    HDAIOHelper.GetRangeFromDatabase(null, ref tempend, ref tempstart);
            //    if (tempend > start)
            //    {
            //        int eyear = tempend.Year;
            //        int syear = start.Year;
            //        int emonth = tempend.Month;
            //        int smonth = start.Month;
            //        int year = syear;
            //        while (year <= eyear)
            //        {
            //            int month = (year == syear ? smonth : 1);
            //            while (month <= (year == eyear ? emonth : 12))
            //            {
            //                var result = HDAIOHelper.LoadFromFile((year == syear && month == smonth ? start : new DateTime(year, month, 1)),
            //                    (year == eyear && month == emonth ? tempend : new DateTime(year, month, 1).AddMonths(1).AddMilliseconds(-2)));//考虑按月遍历
            //                if (result != null)
            //                {
            //                    foreach (var data in result)
            //                    {
            //                        yield return data;
            //                    }
            //                }
            //                month++;
            //            }
            //            year++;
            //        }
            //    }
            //}
            var      tempdata = _hda.ToArray();
            DateTime ftime    = (tempdata.Length > 0 ? tempdata[0].TimeStamp : DateTime.Now);

            if (start < ftime)
            {
                var result = HDAIOHelper.LoadFromDatabase(start, ftime > end ? end : ftime);//范围冲突
                if (result != null)
                {
                    foreach (var data in result)
                    {
                        yield return(data);
                    }
                }
            }
            if (end > ftime)
            {
                var result = tempdata.Where(x => x.TimeStamp >= ftime && x.TimeStamp <= end);
                if (result != null)
                {
                    foreach (var data in result)
                    {
                        yield return(data);
                    }
                }
            }
            yield break;
        }