lixiaojun
2024-11-25 839d9f96be96108dc9ca9359b3db32596e7e2454
WinFrmUI/Yw.WinFrmUI.Hydro.Core/10-working/04-set/SetHydroWorkingCtrl.cs
@@ -19,15 +19,11 @@
        /// </summary>
        public event Action<Yw.Model.HydroVisualInfo> HydroViewEvent;
        //水力信息
        private Yw.Model.HydroModelInfo _hydroInfo = null;
        //工况
        private SetHydroWorkingViewModel _hydroWorking = null;
        //基础控件
        private SetHydroWorkingBasicCtrl _basicCtrl = null;
        //可见控件列表
        private List<ISetHydroWorkingVisualCtrl> _visualCtrlList = null;
        private Yw.Model.HydroModelInfo _hydroInfo = null;//水力信息
        private SetHydroWorkingViewModel _working = null;//工况
        //private SetHydroWorkingBasicCtrl _basicCtrl = null;//基础控件
        private List<ISetHydroWorkingVisualCtrl> _visualCtrlList = null;//可见控件列表
        /// <summary>
        /// 绑定数据
@@ -44,32 +40,29 @@
                return;
            }
            _hydroInfo = hydroInfo;
            _hydroWorking = new SetHydroWorkingViewModel();
            var workingNames = allWorkingList?.Select(x => x.Name).Distinct().ToList();
            _hydroWorking.Name = Yw.Untity.UniqueHelper.CreateFromFirst("工况", workingNames);
            _working = new SetHydroWorkingViewModel(hydroInfo, allWorkingList, allMonitorValueList);
            _visualCtrlList = new List<ISetHydroWorkingVisualCtrl>();
            #region 工况信息
            #region 信息
            var basicGroup = this.layoutControl1.AddGroup();
            basicGroup.Text = "工况信息";
            basicGroup.ExpandButtonVisible = true;
            basicGroup.Expanded = false;
            basicGroup.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
            basicGroup.ExpandOnDoubleClick = true;
            var basicCtrl = new SetHydroWorkingBasicCtrl();
            basicCtrl.SetBindingData(_hydroWorking);
            var basicItem = basicGroup.AddItem("工况信息", basicCtrl);
            basicItem.TextVisible = false;
            basicItem.Height = 120;
            basicGroup.BestFit();
            basicGroup.LayoutMode = LayoutMode.Regular;
            basicGroup.AllowBorderColorBlending = true;
            basicGroup.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204);
            _basicCtrl = basicCtrl;
            //var basicGroup = this.layoutControl1.AddGroup();
            //basicGroup.Text = "工况信息";
            //basicGroup.ExpandButtonVisible = true;
            //basicGroup.Expanded = false;
            //basicGroup.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
            //basicGroup.ExpandOnDoubleClick = true;
            //var basicCtrl = new SetHydroWorkingBasicCtrl();
            //basicCtrl.SetBindingData(_hydroWorking);
            //var basicItem = basicGroup.AddItem("工况信息", basicCtrl);
            //basicItem.TextVisible = false;
            //basicItem.Height = 120;
            //basicGroup.BestFit();
            //basicGroup.LayoutMode = LayoutMode.Regular;
            //basicGroup.AllowBorderColorBlending = true;
            //basicGroup.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204);
            //_basicCtrl = basicCtrl;
            #endregion
            _visualCtrlList = new List<ISetHydroWorkingVisualCtrl>();
            #region 水库
@@ -86,7 +79,7 @@
                    var visualCtrl = new SetHydroWorkingReservoirCtrl();
                    visualCtrl.HydroViewEvent += x => this.HydroViewEvent?.Invoke(x);
                    var workingInfo = new HydroWorkingReservoirViewModel(visual);
                    _hydroWorking.WorkingInfo.AppendWorking(workingInfo);
                    _working.WorkingInfo.AppendWorking(workingInfo);
                    visualCtrl.SetBindingData(visual, workingInfo);
                    var item = group.AddItem(visual.Name, visualCtrl);
                    item.TextVisible = false;
@@ -106,7 +99,8 @@
            #region 水池
            if (hydroInfo.Tanks != null && hydroInfo.Tanks.Count > 0)
            var tanks = hydroInfo.GetAllTanks();
            if (tanks != null && tanks.Count > 0)
            {
                var group = this.layoutControl1.AddGroup();
                group.Text = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Tank);
@@ -114,45 +108,12 @@
                group.Expanded = true;
                group.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
                group.ExpandOnDoubleClick = true;
                foreach (var visual in hydroInfo.Tanks)
                foreach (var visual in tanks)
                {
                    var visualCtrl = new SetHydroWorkingTankCtrl();
                    visualCtrl.HydroViewEvent += x => this.HydroViewEvent?.Invoke(x);
                    var workingInfo = new HydroWorkingTankViewModel(visual);
                    _hydroWorking.WorkingInfo.AppendWorking(workingInfo);
                    visualCtrl.SetBindingData(visual, workingInfo);
                    var item = group.AddItem(visual.Name, visualCtrl);
                    item.TextVisible = false;
                    _visualCtrlList.Add(visualCtrl);
                }
                group.BestFit();
                group.LayoutMode = LayoutMode.Flow;
                group.AllowBorderColorBlending = true;
                group.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204);
                foreach (LayoutControlItem item in group.Items)
                {
                    item.Size = new Size(200, 80);
                }
            }
            #endregion
            #region 水箱
            if (hydroInfo.Waterboxs != null && hydroInfo.Waterboxs.Count > 0)
            {
                var group = this.layoutControl1.AddGroup();
                group.Text = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Waterbox);
                group.ExpandButtonVisible = true;
                group.Expanded = true;
                group.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
                group.ExpandOnDoubleClick = true;
                foreach (var visual in hydroInfo.Waterboxs)
                {
                    var visualCtrl = new SetHydroWorkingWaterboxCtrl();
                    visualCtrl.HydroViewEvent += x => this.HydroViewEvent?.Invoke(x);
                    var workingInfo = new HydroWorkingWaterboxViewModel(visual);
                    _hydroWorking.WorkingInfo.AppendWorking(workingInfo);
                    _working.WorkingInfo.AppendWorking(workingInfo);
                    visualCtrl.SetBindingData(visual, workingInfo);
                    var item = group.AddItem(visual.Name, visualCtrl);
                    item.TextVisible = false;
@@ -185,7 +146,7 @@
                    var visualCtrl = new SetHydroWorkingPumpCtrl();
                    visualCtrl.HydroViewEvent += x => this.HydroViewEvent?.Invoke(x);
                    var workingInfo = new HydroWorkingPumpViewModel(visual);
                    _hydroWorking.WorkingInfo.AppendWorking(workingInfo);
                    _working.WorkingInfo.AppendWorking(workingInfo);
                    visualCtrl.SetBindingData(visual, workingInfo);
                    var item = group.AddItem(visual.Name, visualCtrl);
                    item.TextVisible = false;
@@ -207,46 +168,26 @@
            if (hydroInfo.Valves != null && hydroInfo.Valves.Count > 0)
            {
                //var group = this.layoutControl1.AddGroup();
                //group.Text = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Valve);
                //group.ExpandButtonVisible = true;
                //group.Expanded = true;
                //group.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
                //group.ExpandOnDoubleClick = true;
                //foreach (var visual in hydroInfo.Valves)
                //{
                //    var visualCtrl = new SetHydroWorkingValveCtrl();
                //    visualCtrl.HydroViewEvent += x => this.HydroViewEvent?.Invoke(x);
                //    var workingInfo = new HydroWorkingValveViewModel(visual);
                //    _hydroWorking.WorkingInfo.AppendWorking(workingInfo);
                //    visualCtrl.SetBindingData(visual, workingInfo);
                //    var item = group.AddItem(visual.Name, visualCtrl);
                //    item.TextVisible = false;
                //    _visualCtrlList.Add(visualCtrl);
                //}
                //group.BestFit();
                //group.LayoutMode = LayoutMode.Flow;
                //group.AllowBorderColorBlending = true;
                //group.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204);
                //foreach (LayoutControlItem item in group.Items)
                //{
                //    item.Size = new Size(200, 100);
                //}
                foreach (var visual in hydroInfo.Valves)
                {
                    var workingInfo = new HydroWorkingValveViewModel(visual);
                    _working.WorkingInfo.AppendWorking(workingInfo);
                }
            }
            #endregion
            #region 监测值
            #region 阻件
            if (allMonitorValueList != null && allMonitorValueList.Count > 0)
            var resistances = hydroInfo.GetAllResistances();
            if (resistances != null && resistances.Count > 0)
            {
                foreach (var monitor in allMonitorValueList)
                foreach (var visual in resistances)
                {
                    var vm = new HydroWorkingMonitorViewModel(monitor);
                    _hydroWorking.MonitorInfo.Add(vm);
                    var workingInfo = new HydroWorkingResistanceViewModel(visual);
                    _working.WorkingInfo.AppendWorking(workingInfo);
                }
            }
            #endregion
@@ -262,21 +203,12 @@
            {
                return default;
            }
            if (_hydroWorking == null)
            {
                return default;
            }
            if (_basicCtrl == null)
            {
                return default;
            }
            var vm = _basicCtrl.GetBindingData();
            if (vm == null)
            if (_working == null)
            {
                return default;
            }
            _visualCtrlList?.ForEach(x => x.GetWorking());
            return _hydroWorking;
            return _working;
        }