using DevExpress.Mvvm.Native; using Yw.EPAnet; using Yw.Model; namespace HStation.WinFrmUI { /// /// 可见视图列表辅助类 /// public class SimulationVisualVmListHelper { /// /// /// public SimulationVisualVmListHelper(SimulationVisualListHelper visualListHelper, SimulationCalcuResultHelper calcuResultHelper) { _visualListHelper = visualListHelper; _calcuResultHelper = calcuResultHelper; } private SimulationVisualListHelper _visualListHelper = null;//可见列表辅助类 private SimulationCalcuResultHelper _calcuResultHelper = null;//计算结果辅助类 private Dictionary _dict;//字典 /// /// 获取可见视图字典 /// public Dictionary GetVisualDict() { if (_dict == null) { _dict = new Dictionary(); var allVisualDict = _visualListHelper.GetVisualDict(); if (allVisualDict != null && allVisualDict.Count > 0) { var allCalcuResultVisualDict = _calcuResultHelper.GetVisualDict(); foreach (var visualKeyValue in allVisualDict) { var vm = HydroVisualViewModelBuilder.CreateVisualViewModel(visualKeyValue.Value, _visualListHelper.HydroInfo); var calcuVisualResult = allCalcuResultVisualDict?.GetValue(visualKeyValue.Key); if (calcuVisualResult != null) { vm.UpdateCalcuProperty(calcuVisualResult); } _dict.Add(visualKeyValue.Key, vm); } } } return _dict; } /// /// 获取可见视图列表 /// public List GetVisualList() { var dict = GetVisualDict(); return dict.Values.ToList(); } /// /// 获取可见视图 /// public HydroVisualViewModel GetVisual(string code) { if (string.IsNullOrEmpty(code)) { return default; } var dict = GetVisualDict(); if (dict.ContainsKey(code)) { return dict[code]; } return default; } /// /// 获取可见视图列表 /// public List GetVisualList(List codes) { var list = codes?.Select(x => GetVisual(x)).Where(x => x != null).ToList(); return list; } /// /// 获取可见视图 /// public HydroVisualViewModel GetVisual(HydroVisualInfo visual) { return GetVisual(visual?.Code); } /// /// 获取可见视图列表 /// public List GetVisualList(List visualList) { return visualList?.Select(x => GetVisual(x)).Where(x => x != null).ToList(); } /// /// 更新属性 /// public void UpdateProperty() { var dict = GetVisualDict(); dict.ForEach(x => x.Value.UpdateProperty()); } /// /// 更新属性 /// public void UpdateProperty(string code) { var visual = GetVisual(code); visual?.UpdateProperty(); } /// /// 更新属性 /// public void UpdateProperty(List codes) { var visualList = GetVisualList(codes); visualList?.ForEach(x => x.UpdateProperty()); } /// /// 更新属性 /// public void UpdateProperty(HydroVisualInfo visual) { UpdateProperty(visual?.Code); } /// /// 更新属性 /// public void UpdateProperty(List visualList) { var codes = visualList?.Select(x => x.Code).Distinct().ToList(); UpdateProperty(codes); } /// /// 更新计算属性 /// public void UpdateCalcuProperty(HydroCalcuResult calcuResult) { var dict = GetVisualDict(); var allCalcuResultVisualDict = calcuResult?.GetVisualDict(); foreach (var visualKeyValue in dict) { var calcuVisualResult = allCalcuResultVisualDict?.GetValue(visualKeyValue.Key); visualKeyValue.Value.UpdateCalcuProperty(calcuVisualResult); } } } }