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 }); }
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 }); }
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); }