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; } } }