using DevExpress.Xpo.Helpers; using Yw.Model; using Yw.Vmo; namespace HStation.WinFrmUI { /// /// 颜色分级辅助类 /// public class SimulationGradingHelper { /// /// /// public SimulationGradingHelper(SimulationVisualListHelper visualListHelper, SimulationCalcuResultHelper calcuResultHelper, ISimulationGradingView view) { _visualListHelper = visualListHelper; _calcuResultHelper = calcuResultHelper; _views = new List() { view }; } private SimulationVisualListHelper _visualListHelper = null;//可见列表辅助类 private SimulationCalcuResultHelper _calcuResultHelper = null;//计算结果辅助类 private List _views = null;//视图列表 private List _allGradingList = null;//所有颜色分级列表 private List _allResultList = null;//所有结果列表 /// /// 可见性 /// public bool Visible { get { return _visible; } set { _visible = value; } } private bool _visible = false; /// /// 应用列表 /// public List Applies { get { if (_applies == null) { _applies = HydroGradingHelper.GetApplyList(_visualListHelper.HydroInfo); if (_applies == null) { _applies = new List(); } } return _applies; } set { _applies = value; if (_applies == null) { _applies = new List(); } } } private List _applies = null; /// /// 初始化数据 /// public void InitialData() { _allGradingList = null; _applies = null; } /// /// 获取颜色分级列表 /// public async Task> GetGradingList() { if (_allGradingList == null) { _allGradingList = await HydroGradingHelper.GetGradingList(_visualListHelper.HydroInfo); if (_allGradingList == null) { _allGradingList = new List(); } } return _allGradingList; } /// /// 设置颜色分级列表 /// public void SetGradingList(List allGradingList) { _allGradingList = allGradingList; if (_allGradingList == null) { _allGradingList = new List(); } } /// /// 更新应用 /// public void UpdateApply(string catalog, string propName) { var apply = this.Applies.Find(x => x.Catalog == catalog); if (apply == null) { return; } apply.PropName = propName; } //获取结果列表 private async Task> GetResultList() { var allGradingList = await GetGradingList(); _allResultList = HydroGradingHelper.GetResultList(_visualListHelper.HydroInfo, allGradingList, this.Applies, _calcuResultHelper.GetVisualDict()); if (_allResultList == null) { _allResultList = new List(); } return _allResultList; } /// /// 设置 /// public async void Set() { if (this.Visible) { var allResultList = await GetResultList(); var groupList = allResultList.GroupBy(x => x.Color).ToList(); foreach (var group in groupList) { var codes = group.Select(x => x.Code).Distinct().ToList(); _views?.ForEach(x => x.OverrideComponentsColor(codes, group.Key, 1)); } } else { var codes = _allResultList?.Select(x => x.Code).Distinct().ToList(); _views?.ForEach(x => x.RestoreComponentsColor(codes)); } } /// /// 设置 /// public async void Set(HydroVisualInfo visual) { if (visual == null) { return; } var oldResult = _allResultList?.Find(x => x.Code == visual.Code); if (oldResult != null) { _allResultList.Remove(oldResult); } var allGradingList = await GetGradingList(); var newResult = HydroGradingHelper.GetResult(visual, allGradingList, this.Applies, _calcuResultHelper.GetVisualDict()); if (newResult != null) { if (_allResultList != null) { _allResultList.Add(newResult); } } if (this.Visible) { if (newResult == null) { if (oldResult != null) { _views?.ForEach(x => x.RestoreComponentsColor(oldResult.Code)); } } else { _views?.ForEach(x => x.OverrideComponentsColor(newResult.Code, newResult.Color, 1)); } } } /// /// 设置 /// public void Set(List visuals) { visuals?.ForEach(x => Set(visuals)); } } }