using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IStation.Calculation
{
///
/// 能效汇总单周辅助类
///
public class EtaSumSingleWeekHelper
{
///
/// 汇总
///
public static Model.EtaSumSingleWeekRecord Sum
(
long CorpID,
string ObjectType,
long ObjectID,
DateTime StartDay,
DateTime EndDay,
IEnumerable list
)
{
if (StartDay.Date > EndDay.Date)
return default;
if (list == null || list.Count() < 1)
return default;
var model = new Model.EtaSumSingleWeekRecord();
model.CorpID = CorpID;
model.ObjectType = ObjectType;
model.ObjectID = ObjectID;
model.StartDay = StartDay.Date;
model.EndDay = EndDay.Date;
model.DataTime = DateTime.Now;
model.Qt = list.Sum(x => x.Qt);
model.Dt = list.Sum(x => x.Dt);
model.RunTime = list.Sum(x => x.RunTime);
model.BootTimes = list.Sum(x => x.BootTimes);
model.PointCount = list.Sum(x => x.PointCount);
if (model.PointCount > 0)
{
model.Qmin = list.Min(t => t.Qmin);
model.Qmax = list.Max(t => t.Qmax);
model.Qavg = list.Sum(t => t.Qavg * ((double)t.PointCount) / ((double)model.PointCount));
model.Emin = list.Min(t => t.Emin);
model.Emax = list.Max(t => t.Emax);
model.Eavg = list.Sum(t => t.Eavg * ((double)t.PointCount) / ((double)model.PointCount));
model.Hmin = list.Min(t => t.Hmin);
model.Hmax = list.Max(t => t.Hmax);
model.Havg = list.Sum(t => t.Havg * ((double)t.PointCount) / ((double)model.PointCount));
model.Pmin = list.Min(t => t.Pmin);
model.Pmax = list.Max(t => t.Pmax);
model.Pavg = list.Sum(t => t.Pavg * ((double)t.PointCount) / ((double)model.PointCount));
model.WPmin = list.Min(t => t.WPmin);
model.WPmax = list.Max(t => t.WPmax);
model.WPavg = list.Sum(t => t.WPavg * ((double)t.PointCount) / ((double)model.PointCount));
model.UWPmin = list.Min(t => t.UWPmin);
model.UWPmax = list.Max(t => t.UWPmax);
model.UWPavg = list.Sum(t => t.UWPavg * ((double)t.PointCount) / ((double)model.PointCount));
}
return model;
}
}
}