using Mapster; namespace HStation.WinFrmUI { /// /// /// public class SimulationPrintMonitorAnalyHelper { /// /// 创建 /// public static SimulationPrintMonitorAnalyViewModel Create ( Yw.Model.HydroModelInfo hydroInfo, List allMonitorList, Yw.Vmo.HydroWorkingVmo working, HydroCalcuResult calcuResult = null, bool isHead = false, List allEvaluationList = null ) { var vm = new SimulationPrintMonitorAnalyViewModel(); //验证 if (hydroInfo == null) { return vm; } if (allMonitorList == null || allMonitorList.Count < 1) { return vm; } if (working == null) { return vm; } //过滤测点,仅需要分析测点 var monitorList = allMonitorList?.Where(x => x.SourceType == Yw.Hydro.eSourceType.Analyse).ToList(); if (monitorList == null || monitorList.Count < 1) { return vm; } //赋值模型信息,避免干扰 //var newHydroInfo = hydroInfo.Adapt(); var allVisualDict = hydroInfo.GetVisualDict(); if (allVisualDict == null || allVisualDict.Count < 1) { return vm; } //计算结果 if (calcuResult == null) { calcuResult = hydroInfo.Calcu(Yw.EPAnet.CalcuMode.MinorLoss, isHead, allEvaluationList); if (!calcuResult.Succeed) { return vm; } } var allCalcuVisualDict = calcuResult.GetVisualDict(); //遍历测点 vm.Items = new List(); foreach (var monitor in monitorList) { var item = new SimulationPrintMonitorAnalyItemViewModel(monitor, allVisualDict, allCalcuVisualDict); vm.Items.Add(item); } return vm; } } }