namespace HStation.WinFrmUI
|
{
|
/// <summary>
|
///
|
/// </summary>
|
public class SimulationPrintLossStatisticsCategoryViewModel
|
{
|
/// <summary>
|
///
|
/// </summary>
|
public SimulationPrintLossStatisticsCategoryViewModel() { }
|
|
/// <summary>
|
///
|
/// </summary>
|
public SimulationPrintLossStatisticsCategoryViewModel
|
(
|
Yw.Model.HydroModelInfo hydroInfo,
|
HydroCalcuResult calcuResult,
|
List<SimulationPrintLossStatisticsItemViewModel> allItemList
|
)
|
{
|
if (hydroInfo == null)
|
{
|
return;
|
}
|
if (calcuResult == null || !calcuResult.Succeed)
|
{
|
return;
|
}
|
if (allItemList == null || allItemList.Count < 1)
|
{
|
return;
|
}
|
|
this.Items = new List<SimulationPrintLossStatisticsCategoryItemViewModel>();
|
var groupList = allItemList.GroupBy(x => x.EnergyType).ToList();
|
foreach (var group in groupList)
|
{
|
var item = new SimulationPrintLossStatisticsCategoryItemViewModel();
|
switch (group.Key)
|
{
|
case Yw.EPAnet.eEnergyType.Input:
|
{
|
item.EnergyType = Yw.WinFrmUI.eEnergyType.Input;
|
item.Name = "输入能量";
|
}
|
break;
|
case Yw.EPAnet.eEnergyType.Output:
|
{
|
item.EnergyType = Yw.WinFrmUI.eEnergyType.Output;
|
item.Name = "输出能量";
|
}
|
break;
|
case Yw.EPAnet.eEnergyType.Promote:
|
{
|
item.EnergyType = Yw.WinFrmUI.eEnergyType.Promote;
|
item.Name = "提升能量";
|
}
|
break;
|
case Yw.EPAnet.eEnergyType.MinorLoss:
|
{
|
item.EnergyType = Yw.WinFrmUI.eEnergyType.MinorLoss;
|
item.Name = "局部损失";
|
}
|
break;
|
case Yw.EPAnet.eEnergyType.FrictionalLoss:
|
{
|
item.EnergyType = Yw.WinFrmUI.eEnergyType.FrictionalLoss;
|
item.Name = "沿程损失";
|
}
|
break;
|
default: break;
|
}
|
item.Value = group.Sum(x => x.EnergyValue);
|
this.Items.Add(item);
|
}
|
|
double pumpLoss = 0;
|
if (hydroInfo.Pumps != null && hydroInfo.Pumps.Count > 0)
|
{
|
var allCalcuVisualDict = calcuResult.GetVisualDict();
|
foreach (var pump in hydroInfo.Pumps)
|
{
|
var calcuPumpResult = allCalcuVisualDict?.GetValue(pump.Code) as HydroCalcuPumpResult;
|
if (calcuPumpResult != null)
|
{
|
if (calcuPumpResult.CalcuP.HasValue && calcuPumpResult.CalcuE.HasValue)
|
{
|
pumpLoss += calcuPumpResult.CalcuP.Value * 1000 * (1 - calcuPumpResult.CalcuE.Value / 100);
|
}
|
}
|
}
|
}
|
|
var promoteItem = this.Items.Find(x => x.EnergyType == Yw.WinFrmUI.eEnergyType.Promote);
|
if (promoteItem != null)
|
{
|
promoteItem.Value += pumpLoss;
|
}
|
|
var minorLossItem = this.Items.Find(x => x.EnergyType == Yw.WinFrmUI.eEnergyType.MinorLoss);
|
if (minorLossItem != null)
|
{
|
minorLossItem.Value += pumpLoss;
|
}
|
|
}
|
|
/// <summary>
|
/// 子级集合
|
/// </summary>
|
public List<SimulationPrintLossStatisticsCategoryItemViewModel> Items { get; set; }
|
|
|
}
|
}
|