using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace IStation.Calculation { /// /// 能效标准业务周辅助类 /// public class EtaStandardLogicWeekHelper { /// /// 分析 /// public static List Standard ( long CorpID, string ObjectType, long ObjectID, DateTime StartDay, DateTime EndDay, IEnumerable configures, IEnumerable list ) { if (StartDay.Date > EndDay.Date) return default; if (configures == null || configures.Count() < 1) return default; if (list == null || list.Count() < 1) return default; var dt_now = DateTime.Now; var record_list = new List(); foreach (var configure in configures) { var configure_record_list = list.Where(x => x.ConfigureID == configure.ID).ToList(); if (configure_record_list != null && configure_record_list.Count > 0) { var record = new Model.EtaStandardLogicWeekRecord(); record.CorpID = CorpID; record.ConfigureID = configure.ID; record.ObjectType = ObjectType; record.ObjectID = ObjectID; record.StartDay = StartDay.Date; record.EndDay = EndDay.Date; record.DataTime = dt_now; record.LowerLimit = configure.LowerLimit; record.UpperLimit = configure.UpperLimit; record.Dt = configure_record_list.Sum(t => t.Dt); record.Dtt = configure_record_list.Sum(t => t.Dtt); record.Qt = configure_record_list.Sum(t => t.Qt); record.Qtt = configure_record_list.Sum(t => t.Qtt); record.PointCount = configure_record_list.Sum(t => t.PointCount); record.TotalPointCount = configure_record_list.Sum(t => t.TotalPointCount); record.Qmin = configure_record_list.Min(t => t.Qmin); record.Qmax = configure_record_list.Max(t => t.Qmax); record.Qavg = configure_record_list.Sum(t => t.Qavg * ((double)t.PointCount) / ((double)record.PointCount)); record.Emin = configure_record_list.Min(t => t.Emin); record.Emax = configure_record_list.Max(t => t.Emax); record.Eavg = configure_record_list.Sum(t => t.Eavg * ((double)t.PointCount) / ((double)record.PointCount)); record.Hmin = configure_record_list.Min(t => t.Hmin); record.Hmax = configure_record_list.Max(t => t.Hmax); record.Havg = configure_record_list.Sum(t => t.Havg * ((double)t.PointCount) / ((double)record.PointCount)); record.Pmin = configure_record_list.Min(t => t.Pmin); record.Pmax = configure_record_list.Max(t => t.Pmax); record.Pavg = configure_record_list.Sum(t => t.Pavg * ((double)t.PointCount) / ((double)record.PointCount)); record.WPmin = configure_record_list.Min(t => t.WPmin); record.WPmax = configure_record_list.Max(t => t.WPmax); record.WPavg = configure_record_list.Sum(t => t.WPavg * ((double)t.PointCount) / ((double)record.PointCount)); record.UWPmin = configure_record_list.Min(t => t.UWPmin); record.UWPmax = configure_record_list.Max(t => t.UWPmax); record.UWPavg = configure_record_list.Sum(t => t.UWPavg * ((double)t.PointCount) / ((double)record.PointCount)); record_list.Add(record); } } return record_list; } } }