예제 #1
0
 IList <AnalogHistoryHour> getHourData(DateTime startTime, DateTime endTime, int analogNo)
 {
     try
     {
         //获取该测点每小时读数
         IList <AnalogHistoryHour> historyList = analogHistoryRepos.getHourEnergyHistoryByAnalogNo(analogNo, startTime, endTime);
         IList <AnalogHistoryHour> hourList    = new List <AnalogHistoryHour>();
         int count = 0;
         //填补缺失时间点读数,将值设为0.0
         for (DateTime tmp = startTime; tmp < endTime; tmp = tmp.AddHours(1))
         {
             if (count >= historyList.Count || historyList[count].AHH_HTime != tmp)
             {
                 AnalogHistoryHour ahh = new AnalogHistoryHour();
                 ahh.AHH_AnalogNo = analogNo;
                 ahh.AHH_HTime    = tmp;
                 ahh.AHH_Value    = 0.0;
                 hourList.Add(ahh);
             }
             else
             {
                 hourList.Add(historyList[count]);
                 count++;
             }
         }
         return(hourList);
     }
     catch (Exception ex)
     {
         log.write("Func:getHourData:" + ex.StackTrace);
         return(null);
     }
 }
        public IList <AnalogHistoryHour> getHourEnergyHistoryByAnalogNo(int analogNo, DateTime startTime, DateTime endTime)
        {
            IList <AnalogHistoryHour> result = new List <AnalogHistoryHour>();

            try
            {
                var tempQuery = from ah in dataEntities.AnalogHistory
                                where ah.AH_AnalogNo == analogNo && ah.AH_Time >= startTime && ah.AH_Time <= endTime
                                select new
                {
                    PNO  = ah.AH_AnalogNo,
                    Time = new DateTime(ah.AH_Time.Year, ah.AH_Time.Month, ah.AH_Time.Day, ah.AH_Time.Hour, 0, 0),
                    Val  = ah.AH_Value
                };
                var resultQuery = from ah1 in tempQuery
                                  group ah1.Val by new { ah1.PNO, ah1.Time } into g
                orderby g.Key.Time
                    select new HourEntity
                {
                    AnalogNo   = g.Key.PNO,
                    AnalogTime = g.Key.Time,
                    value      = g.Max()
                };
                IList <HourEntity> tmpList = resultQuery.ToList();
                for (int i = 0; i < tmpList.Count; i++)
                {
                    AnalogHistoryHour ahh = new AnalogHistoryHour();
                    ahh.AHH_AnalogNo = tmpList[i].AnalogNo;
                    ahh.AHH_HTime    = tmpList[i].AnalogTime;
                    ahh.AHH_Value    = tmpList[i].value;
                    result.Add(ahh);
                }
            }
            catch (Exception e)
            {
                log.write("Func:getHourEnergyHistoryByAnalogNo;" + e.StackTrace);
            }
            return(result);
        }