duheng
2024-12-11 2e8e85f65748ee5a5adf0dcda864aa4167cbf2ef
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/00-core/02-visual/03-vm/SimulationVisualVmListHelper.cs
@@ -12,40 +12,48 @@
        /// <summary>
        /// 
        /// </summary>
        public SimulationVisualVmListHelper(SimulationVisualListHelper visualListHelper, SimulationCalcuResultHelper calcuResultHelper)
        public SimulationVisualVmListHelper
            (
                SimulationVisualListHelper visualListHelper,
                SimulationCalcuResultHelper calcuResultHelper
            )
        {
            _visualListHelper = visualListHelper;
            _calcuResultHelper = calcuResultHelper;
            _visualListHelper.InitialEvent += () => Initial();
            Initial();
        }
        private SimulationVisualListHelper _visualListHelper = null;//可见列表辅助类
        private SimulationCalcuResultHelper _calcuResultHelper = null;//计算结果辅助类
        private Dictionary<string, HydroVisualViewModel> _dict;//字典
        //初始化
        private void Initial()
        {
            _dict = new Dictionary<string, HydroVisualViewModel>();
            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);
                }
            }
        }
        /// <summary>
        /// 获取可见视图字典
        /// </summary>
        public Dictionary<string, HydroVisualViewModel> GetVisualDict()
        {
            if (_dict == null)
            {
                _dict = new Dictionary<string, HydroVisualViewModel>();
                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;
        }
@@ -55,7 +63,7 @@
        public List<HydroVisualViewModel> GetVisualList()
        {
            var dict = GetVisualDict();
            return dict.Values.ToList();
            return dict?.Values.ToList();
        }
        /// <summary>
@@ -68,6 +76,10 @@
                return default;
            }
            var dict = GetVisualDict();
            if (dict == null || dict.Count < 1)
            {
                return default;
            }
            if (dict.ContainsKey(code))
            {
                return dict[code];
@@ -106,7 +118,7 @@
        public void UpdateProperty()
        {
            var dict = GetVisualDict();
            dict.ForEach(x => x.Value.UpdateProperty());
            dict?.ForEach(x => x.Value.UpdateProperty());
        }
        /// <summary>
@@ -150,6 +162,10 @@
        public void UpdateCalcuProperty(HydroCalcuResult calcuResult)
        {
            var dict = GetVisualDict();
            if (dict == null || dict.Count < 1)
            {
                return;
            }
            var allCalcuResultVisualDict = calcuResult?.GetVisualDict();
            foreach (var visualKeyValue in dict)
            {