namespace Yw.WinFrmUI
{
///
/// 损失统计输入辅助类
///
public class HydroLossStatisticsInputHelper
{
///
/// 创建
///
public static HydroLossStatisticsInputViewModel Create
(
Yw.Model.HydroModelInfo hydroInfo,
HydroCalcuResult calcuResult,
List allItemList
)
{
if (hydroInfo == null)
{
return default;
}
if (calcuResult == null || !calcuResult.Succeed)
{
return default;
}
if (allItemList == null || allItemList.Count < 1)
{
return default;
}
var vm = new HydroLossStatisticsInputViewModel();
vm.Items = new List();
var itemForInitial = new HydroLossStatisticsInputItemViewModel();
itemForInitial.EnergyName = "初始势能";
vm.Items.Add(itemForInitial);
var initialItemList = allItemList.Where(x => x.EnergyType == eEnergyType.Input).ToList();
if (initialItemList.Count > 0)
{
itemForInitial.EnergyValue = initialItemList.Sum(x => x.EnergyValue);
}
var itemForPump = new HydroLossStatisticsInputItemViewModel();
itemForPump.EnergyName = "水泵提升";
vm.Items.Add(itemForPump);
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)
{
itemForPump.EnergyValue += calcuPumpResult.CalcuP.Value * 1000;
}
}
}
}
vm.TotalEnergyValue = vm.Items.Sum(x => x.EnergyValue);
//w=>kW
vm.TotalEnergyValue = Math.Round(vm.TotalEnergyValue / 1000d, 1);
vm.Items.ForEach(x => x.EnergyValue = Math.Round(x.EnergyValue / 1000d, 1));
return vm;
}
}
}