using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace IStation.Calculation
|
{
|
/// <summary>
|
/// 能效汇总单月辅助类
|
/// </summary>
|
public class EtaSumSingleMonthHelper
|
{
|
|
/// <summary>
|
/// 汇总
|
/// </summary>
|
public static Model.EtaSumSingleMonthRecord Sum
|
(
|
long CorpID,
|
string ObjectType,
|
long ObjectID,
|
int DataYear,
|
int DataMonth,
|
IEnumerable<Model.EtaSumSingleDayRecord> list
|
)
|
{
|
if (list == null || list.Count() < 1)
|
return default;
|
|
var model = new Model.EtaSumSingleMonthRecord();
|
model.CorpID = CorpID;
|
model.ObjectType = ObjectType;
|
model.ObjectID = ObjectID;
|
model.DataYear = DataYear;
|
model.DataMonth = DataMonth;
|
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.Where(x=>!double.IsNaN(x.Qavg)).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.Where(x => !double.IsNaN(x.Eavg)).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.Where(x => !double.IsNaN(x.Havg)).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.Where(x => !double.IsNaN(x.Pavg)).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.Where(x => !double.IsNaN(x.WPavg)).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.Where(x => !double.IsNaN(x.UWPavg)).Sum(t => t.UWPavg * ((double)t.PointCount) / ((double)model.PointCount));
|
}
|
|
return model;
|
|
}
|
|
|
}
|
}
|