Exemplo n.º 1
0
        private EnergyInfo02 GetEntities(string key, string current, EnmPeriod period, DateTime start, DateTime end)
        {
            var dates  = new List <DateTime>();
            var tpdate = start;

            while (tpdate <= end)
            {
                dates.Add(tpdate);
                tpdate = tpdate.AddDays(1);
            }

            var details = new List <EnergyDetailInfo02>();

            if (period == EnmPeriod.Month)
            {
                dates = dates.GroupBy(d => new { d.Year, d.Month }).Select(g => new DateTime(g.Key.Year, g.Key.Month, 1)).ToList();
                foreach (var date in dates)
                {
                    details.Add(new EnergyDetailInfo02 {
                        Period = date.ToString("yyyy-MM"),
                        Start  = date,
                        End    = date.AddMonths(1).AddDays(-1),
                        Value  = 0
                    });
                }
            }
            else if (period == EnmPeriod.Week)
            {
                dates = dates.GroupBy(d => d.Date.AddDays(-1 * (((int)d.DayOfWeek + 6) % 7))).Select(g => g.Key).ToList();
                var gc = new GregorianCalendar();
                foreach (var date in dates)
                {
                    details.Add(new EnergyDetailInfo02 {
                        Period = string.Format("第{0}周", gc.GetWeekOfYear(date, CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday)),
                        Start  = date,
                        End    = date.AddDays(6),
                        Value  = 0
                    });
                }
            }
            else
            {
                foreach (var date in dates)
                {
                    details.Add(new EnergyDetailInfo02 {
                        Period = WebUtility.GetDateString2(date),
                        Start  = date,
                        End    = date,
                        Value  = 0
                    });
                }
            }

            return(new EnergyInfo02 {
                Key = key,
                Current = current,
                Details = details
            });
        }
Exemplo n.º 2
0
        private EnergyInfo03 GetEntities(string key, string current, EnmPeriod period, DateTime start, DateTime end)
        {
            //var dates = new List<DateTime>();
            //var tpdate = start;
            //while(tpdate <= end) {
            //    dates.Add(tpdate);
            //    tpdate = tpdate.AddDays(1);
            //}

            //var details = new List<EnergyDetailInfo03>();
            //if(period == EnmPeriod.Month) {
            //    dates = dates.GroupBy(d => new { d.Year, d.Month }).Select(g => new DateTime(g.Key.Year, g.Key.Month, 1)).ToList();
            //    foreach(var date in dates) {
            //        details.Add(new EnergyDetailInfo03 {
            //            Period = date.ToString("yyyy-MM"),
            //            Start = date,
            //            End = date.AddMonths(1).AddDays(-1),
            //            Value = 0,
            //            TValue = 0
            //        });
            //    }
            //} else if(period == EnmPeriod.Week) {
            //    dates = dates.GroupBy(d => d.Date.AddDays(-1 * (((int)d.DayOfWeek + 6) % 7))).Select(g => g.Key).ToList();
            //    var gc = new GregorianCalendar();
            //    foreach(var date in dates) {
            //        details.Add(new EnergyDetailInfo03 {
            //            Period = string.Format("第{0}周", gc.GetWeekOfYear(date, CalendarWeekRule.FirstDay, DayOfWeek.Monday)),
            //            Start = date,
            //            End = date.AddDays(6),
            //            Value = 0,
            //            TValue = 0
            //        });
            //    }
            //} else {
            //    foreach(var date in dates) {
            //        details.Add(new EnergyDetailInfo03 {
            //            Period = WebUtility.GetDateString2(date),
            //            Start = date,
            //            End = date,
            //            Value = 0,
            //            TValue = 0
            //        });
            //    }
            //}

            return(new EnergyInfo03 {
                Key = key,
                Current = current,
                Period = string.Format("{0} ~ {1}", WebUtility.GetDateString2(start), WebUtility.GetDateString2(end)),
                Value = 0,
                TValue = 0
            });
        }
Exemplo n.º 3
0
        public List <ElecValueInfo> GetElecValues(int lscId, DateTime startDate, DateTime endDate, EnmPeriod period)
        {
            var result = new List <ElecValueInfo>();

            var values = this.GetElecMeters(lscId, startDate, endDate);

            if (values.Count > 0)
            {
                if (period == EnmPeriod.Day)
                {
                    var eachValues = values.GroupBy(v => new { v.NodeId, Start = v.UpdateTime.Date });
                    foreach (var eValue in eachValues)
                    {
                        result.Add(new ElecValueInfo {
                            LscId  = lscId,
                            NodeId = eValue.Key.NodeId,
                            Value  = eValue.Sum(v => v.Value),
                            Start  = eValue.Key.Start,
                            End    = eValue.Key.Start
                        });
                    }
                }
                else if (period == EnmPeriod.Week)
                {
                    var eachValues = values.GroupBy(v => new { v.NodeId, Start = v.UpdateTime.Date.AddDays(-1 * (((int)v.UpdateTime.DayOfWeek + 6) % 7)) });
                    foreach (var eValue in eachValues)
                    {
                        result.Add(new ElecValueInfo {
                            LscId  = lscId,
                            NodeId = eValue.Key.NodeId,
                            Value  = eValue.Sum(v => v.Value),
                            Start  = eValue.Key.Start,
                            End    = eValue.Key.Start.AddDays(6)
                        });
                    }
                }
                else if (period == EnmPeriod.Month)
                {
                    var eachValues = values.GroupBy(v => new { v.NodeId, Start = new DateTime(v.UpdateTime.Year, v.UpdateTime.Month, 1) });
                    foreach (var eValue in eachValues)
                    {
                        result.Add(new ElecValueInfo {
                            LscId  = lscId,
                            NodeId = eValue.Key.NodeId,
                            Value  = eValue.Sum(v => v.Value),
                            Start  = eValue.Key.Start,
                            End    = eValue.Key.Start.AddMonths(1).AddDays(-1)
                        });
                    }
                }
            }

            return(result);
        }