using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace IStation.Calculation
|
{
|
/// <summary>
|
/// 能效标准单年辅助类
|
/// </summary>
|
public class EtaStandardLogicYearHelper
|
{
|
|
/// <summary>
|
/// 分析
|
/// </summary>
|
public static List<Model.EtaStandardLogicYearRecord> Standard
|
(
|
long CorpID,
|
string ObjectType,
|
long ObjectID,
|
int DataYear,
|
IEnumerable<Model.EtaStandardConfigure> configures,
|
IEnumerable<Model.EtaStandardLogicMonthRecord> list
|
)
|
{
|
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<Model.EtaStandardLogicYearRecord>();
|
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.EtaStandardLogicYearRecord();
|
record.CorpID = CorpID;
|
record.ConfigureID = configure.ID;
|
record.ObjectType = ObjectType;
|
record.ObjectID = ObjectID;
|
record.DataYear = DataYear;
|
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;
|
}
|
}
|
}
|