lixiaojun
2024-11-15 1aa330646ad9f88abc580e17d08d727a0ecaae48
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/01-set/02-valve/SetSchemeValveListCtrl.cs
@@ -1,16 +1,29 @@
using Yw.Model;
using HStation.WinFrmUI.Xhs;
using Yw.Model;
namespace HStation.WinFrmUI
{
    public partial class SetSchemeValveListCtrl : DevExpress.XtraEditors.XtraUserControl, IHydroParterList
    public partial class SetSchemeValveListCtrl : DevExpress.XtraEditors.XtraUserControl, ISetSchemeParterList
    {
        public SetSchemeValveListCtrl()
        {
            InitializeComponent();
            this.layoutControl1.SetupLayoutControl();
            this.gridView1.SetNormalView(30);
            this.gridView1.RegistCustomDrawRowIndicator(40);
            this.gridView1.BorderStyle = BorderStyles.NoBorder;
            this.layoutControl1.SetupLayoutControl();
            this.generalSearchAndSelectCtrl1.SearchEvent += () =>
            {
                Search();
            };
            this.generalSearchAndSelectCtrl1.ClearEvent += () =>
            {
                Clear();
            };
            this.generalSearchAndSelectCtrl1.SelectEvent += () =>
            {
                TipFormHelper.Show(eTipStatus.Info, "批量选择待更新");
            };
        }
        /// <summary>
@@ -21,6 +34,11 @@
        /// 水力改变事件
        /// </summary>
        public event Action<List<HydroParterInfo>> HydroChangedEvent;
        /// <summary>
        /// 水力记录改变事件
        /// </summary>
        public event Action<SetSchemeParterRecord> HydroRecordChangedEvent;
        /// <summary>
        /// 显示查询面板
@@ -42,6 +60,8 @@
            get { return _allList != null && _allList.Count > 0; }
        }
        //水力信息
        private Yw.Model.HydroModelInfo _hydroInfo = null;
        //所有列表
        private List<HydroValveViewModel> _allList = null;
        //所有绑定列表
@@ -52,6 +72,7 @@
        /// </summary>
        public void SetBindingData(HydroModelInfo hydroInfo)
        {
            _hydroInfo=hydroInfo;
            _allList = new List<HydroValveViewModel>();
            if (hydroInfo != null && hydroInfo.Valves != null && hydroInfo.Valves.Count > 0)
            {
@@ -67,7 +88,7 @@
        /// <summary>
        /// 绑定数据
        /// </summary>
        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuResult> allCalcuResultList)
        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultList)
        {
            _allList = new List<HydroValveViewModel>();
            if (hydroInfo != null && hydroInfo.Valves != null && hydroInfo.Valves.Count > 0)
@@ -148,7 +169,7 @@
        /// <summary>
        /// 更新计算属性
        /// </summary>
        public void UpdateCalcuProperty(List<HydroCalcuResult> allCalcuResultList)
        public void UpdateCalcuProperty(List<HydroCalcuVisualResult> allCalcuResultList)
        {
            if (allCalcuResultList != null && allCalcuResultList.Count > 0)
            {
@@ -204,127 +225,35 @@
        }
        //设置
        private void Set()
        {
        private void SelectChange()
        {
            if (_hydroInfo == null)
            {
                XtraMessageBox.Show("无水力信息");
                return;
            }
            Search();
            if (_allBindingList == null || _allBindingList.Count < 1)
            var row = this.gridView1.GetFocusedRow() as HydroValveViewModel;
            if (row == null)
            {
                XtraMessageBox.Show("无可设置阀门数据");
                return;
            }
            var dlg = new SetHydroValveDlg();
            dlg.SetBindingData(_allBindingList.Select(x => x.Vmo).ToList());
            dlg.ReloadDataEvent += (list) =>
            var input = AssetsMatchingParasHelper.Create(_hydroInfo, row.Vmo, null);
            var dlg = new ValveSingleMatchingDlg();
            dlg.SetBindingData(input);
            dlg.ReloadDataEvent += (output) =>
            {
                _allBindingList.ForEach(x =>
                var bol = AssetsMatchingParasHelper.Apply(_hydroInfo, output);
                if (bol)
                {
                    x.UpdateProperty();
                });
                this.hydroValveViewModelBindingSource.ResetBindings(false);
                var allParterList = _allBindingList.Select(x => x.Vmo as Yw.Model.HydroParterInfo).ToList();
                this.HydroChangedEvent?.Invoke(allParterList);
                    UpdateProperty();
                }
            };
            dlg.ShowDialog();
        }
        /// <summary>
        /// 设置简单显示模式
        /// </summary>
        public void SetSimpleView()
        {
            this.groupForHead.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
            this.colDbLocked.Visible = false;
            this.colName.Visible = true;
            this.colCode.Visible = true;
            this.colModelType.Visible = true;
            this.colValveType.Visible = false;
            this.colLinkStatus.Visible = true;
            this.colMaterial.Visible = false;
            this.colDiameter.Visible = false;
            this.colMinorLoss.Visible = false;
            this.colCalcuFlow.Visible = false;
            this.colCalcuVelocity.Visible = false;
            this.colCalcuHeadLoss.Visible = false;
            this.colHasDb.Visible = false;
            this.colFlags.Visible = true;
            this.colDescription.Visible = true;
            this.colSet.Visible = false;
        }
        /// <summary>
        /// 设置正常显示模式
        /// </summary>
        public void SetNormalView()
        {
            this.groupForHead.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
            this.colDbLocked.Visible = true;
            this.colName.Visible = true;
            this.colCode.Visible = true;
            this.colModelType.Visible = true;
            this.colValveType.Visible = true;
            this.colLinkStatus.Visible = true;
            this.colMaterial.Visible = true;
            this.colDiameter.Visible = true;
            this.colMinorLoss.Visible = true;
            this.colCalcuFlow.Visible = false;
            this.colCalcuVelocity.Visible = false;
            this.colCalcuHeadLoss.Visible = false;
            this.colHasDb.Visible = true;
            this.colFlags.Visible = true;
            this.colDescription.Visible = true;
            this.colSet.Visible = true;
        }
        /// <summary>
        /// 设置计算显示模式
        /// </summary>
        public void SetCalcuView()
        {
            this.groupForHead.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
            this.colDbLocked.Visible = true;
            this.colName.Visible = true;
            this.colCode.Visible = true;
            this.colModelType.Visible = true;
            this.colValveType.Visible = true;
            this.colLinkStatus.Visible = true;
            this.colMaterial.Visible = true;
            this.colDiameter.Visible = true;
            this.colMinorLoss.Visible = true;
            this.colCalcuFlow.Visible = true;
            this.colCalcuVelocity.Visible = true;
            this.colCalcuHeadLoss.Visible = true;
            this.colHasDb.Visible = true;
            this.colFlags.Visible = true;
            this.colDescription.Visible = true;
            this.colSet.Visible = true;
        }
        /// <summary>
        /// 设置批量设置模式
        /// </summary>
        public void SetBulkSetView()
        {
            this.groupForHead.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
            this.colDbLocked.Visible = true;
            this.colName.Visible = true;
            this.colCode.Visible = true;
            this.colModelType.Visible = true;
            this.colValveType.Visible = true;
            this.colLinkStatus.Visible = true;
            this.colMaterial.Visible = true;
            this.colDiameter.Visible = true;
            this.colMinorLoss.Visible = true;
            this.colCalcuFlow.Visible = false;
            this.colCalcuVelocity.Visible = false;
            this.colCalcuHeadLoss.Visible = false;
            this.colHasDb.Visible = true;
            this.colFlags.Visible = true;
            this.colDescription.Visible = true;
            this.colSet.Visible = true;
        }
        //单元格点击
        private void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e)
@@ -335,15 +264,35 @@
                return;
            }
            if (e.Column == this.colSet)
            if (e.Column == this.colSelect)
            {
                var dlg = new SetHydroValveDlg();
                dlg.SetBindingData(row.Vmo);
                dlg.ReloadDataEvent += (list) =>
                var input = AssetsMatchingParasHelper.Create(_hydroInfo, row.Vmo, null);
                var dlg = new ValveSingleMatchingDlg();
                dlg.SetBindingData(input);
                dlg.ReloadDataEvent += (output) =>
                {
                    row.UpdateProperty();
                    this.gridView1.RefreshRow(e.RowHandle);
                    this.HydroChangedEvent?.Invoke(new List<Yw.Model.HydroParterInfo>() { row.Vmo });
                    var bol = AssetsMatchingParasHelper.Apply(_hydroInfo, output);
                    if (bol)
                    {
                        row.UpdateProperty();
                        this.gridView1.RefreshRow(e.RowHandle);
                        this.HydroChangedEvent?.Invoke(new List<Yw.Model.HydroParterInfo>() { row.Vmo });
                        var record = new SetSchemeParterRecord();
                        record.Name = row.Vmo.Name;
                        record.Code = row.Vmo.Code;
                        record.Catalog = Yw.Hydro.ParterCatalog.Valve;
                        record.MatchingModel = output;
                        record.Items = new List<SetSchemeParterRecordItem>() {
                        new() {Name="型号",BeforeValue=$"{output.ModelType}",AfterValue=$"{output.MatchingModelType}"},
                        new() {Name="材料",BeforeValue=$"{output.Material}",AfterValue=$"{output.MatchingMaterial}"},
                        new() {Name="直径(mm)",BeforeValue=$"{output.Diameter}",AfterValue=$"{output.MatchingDiameter}"},
                        new() {Name="局阻系数",BeforeValue=$"{output.MinorLoss}",AfterValue=$"{output.MatchingMinorLoss}"},
                        new() {Name="阀门类型",BeforeValue=$"{output.ValveType}",AfterValue=$"{output.MatchingValveType}"},
                        };
                        this.HydroRecordChangedEvent?.Invoke(record);
                    }
                };
                dlg.ShowDialog();
            }
@@ -352,57 +301,6 @@
                this.HydroClickEvent?.Invoke(row.Vmo);
            }
        }
        #region BtnClick
        private void buttonEditSearch_ButtonClick(object sender, ButtonPressedEventArgs e)
        {
            var obj = e.Button.Tag;
            if (obj is string tag)
            {
                BtnClick(tag);
            }
        }
        private void buttonEditSet_ButtonClick(object sender, ButtonPressedEventArgs e)
        {
            var obj = e.Button.Tag;
            if (obj is string tag)
            {
                BtnClick(tag);
            }
        }
        private void BtnClick(string tag)
        {
            switch (tag)
            {
                case "Search":
                    {
                        Search();
                    }
                    break;
                case "Clear":
                    {
                        Clear();
                    }
                    break;
                case "Set":
                    {
                        Set();
                    }
                    break;
                default:
                    {
                    }
                    break;
            }
        }
        #endregion
    }
}