duheng
2025-03-28 d5a2d7e66f9c8046bd88b8269e61aac5a2a265e2
WinFrmUI/Yw.WinFrmUI.Hydro.Core/06-visual/15-pipe/HydroPipeListCtrl.cs
@@ -1,4 +1,6 @@
using Yw.Model;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraPrinting;
using Yw.Model;
namespace Yw.WinFrmUI
{
@@ -32,6 +34,7 @@
        /// </summary>
        public event Action<List<HydroVisualViewModel>> HydroChangedViewEvent;
        /// <summary>
        /// 是否拥有水力列表
        /// </summary>
@@ -40,34 +43,54 @@
            get { return _allList != null && _allList.Count > 0; }
        }
        //所有列表
        private List<HydroPipeViewModel> _allList = null;
        //所有绑定列表
        private List<HydroPipeViewModel> _allBindingList = null;
        private List<HydroPipeViewModel> _allList = null;//所有列表
        private List<HydroPipeViewModel> _allBindingList = null;//所有绑定列表
        private HydroChangeHelper _changeHelper = null;//改变辅助类
        private HydroPropStatusHelper _propStatusHelper = null;//属性状态辅助类
        /// <summary>
        /// 绑定数据
        /// </summary>
        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo)
        public void SetBindingData
            (
                Yw.Model.HydroModelInfo hydroInfo,
                HydroChangeHelper changeHelper = null,
                HydroPropStatusHelper propStatusHelper = null
            )
        {
            SetBindingData(hydroInfo, allCalcuResultVisualDict: null);
            SetBindingData(hydroInfo, allCalcuResultVisualDict: null, changeHelper, propStatusHelper);
        }
        /// <summary>
        /// 绑定数据
        /// </summary>
        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, List<HydroCalcuVisualResult> allCalcuResultList)
        public void SetBindingData
            (
                Yw.Model.HydroModelInfo hydroInfo,
                List<HydroCalcuVisualResult> allCalcuResultList,
                HydroChangeHelper changeHelper = null,
                HydroPropStatusHelper propStatusHelper = null
            )
        {
            var allCalcuResultVisualDict = allCalcuResultList?.ToDictionary(x => x.Code);
            SetBindingData(hydroInfo, allCalcuResultVisualDict);
            SetBindingData(hydroInfo, allCalcuResultVisualDict, changeHelper, propStatusHelper);
        }
        /// <summary>
        /// 绑定数据
        /// </summary>
        public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo, Dictionary<string, HydroCalcuVisualResult> allCalcuResultVisualDict)
        public void SetBindingData
            (
                HydroModelInfo hydroInfo,
                Dictionary<string, HydroCalcuVisualResult> allCalcuResultVisualDict,
                HydroChangeHelper changeHelper = null,
                HydroPropStatusHelper propStatusHelper = null
            )
        {
            _allList = new List<HydroPipeViewModel>();
            _changeHelper = changeHelper;
            _propStatusHelper = propStatusHelper;
            if (hydroInfo != null && hydroInfo.Pipes != null && hydroInfo.Pipes.Count > 0)
            {
                foreach (var visual in hydroInfo.Pipes)
@@ -87,9 +110,16 @@
        /// <summary>
        /// 绑定数据
        /// </summary>
        public void SetBindingData(List<HydroVisualViewModel> allVisualViewModelList)
        public void SetBindingData
            (
                List<HydroVisualViewModel> allVisualViewModelList,
                HydroChangeHelper changeHelper = null,
                HydroPropStatusHelper propStatusHelper = null
            )
        {
            _allList = new List<HydroPipeViewModel>();
            _changeHelper = changeHelper;
            _propStatusHelper = propStatusHelper;
            allVisualViewModelList?.ForEach(x =>
            {
                if (x.Vmo.Catalog == Yw.Hydro.ParterCatalog.Pipe)
@@ -205,21 +235,32 @@
            {
                return;
            }
            var name = this.txtName.Text.Trim();
            var code = this.txtCode.Text.Trim();
            var modelType = this.txtModelType.Text.Trim();
            _allBindingList = _allList;
            var name = this.txtName.Text.Trim();
            if (!string.IsNullOrEmpty(name))
            {
                _allBindingList = _allBindingList.Where(x => !string.IsNullOrEmpty(x.Name) && x.Name.Contains(name)).ToList();
            }
            var code = this.txtCode.Text.Trim();
            if (!string.IsNullOrEmpty(code))
            {
                _allBindingList = _allBindingList.Where(x => !string.IsNullOrEmpty(x.Code) && x.Code.Contains(code)).ToList();
            }
            var modelType = this.txtModelType.Text.Trim();
            if (!string.IsNullOrEmpty(modelType))
            {
                _allBindingList = _allBindingList.Where(x => !string.IsNullOrEmpty(x.ModelType) && x.ModelType.Contains(modelType)).ToList();
            }
            double? diameterMin = this.txtDiameterMin.EditValue == null ? null : double.Parse(this.txtDiameterMin.EditValue.ToString());
            if (diameterMin.HasValue)
            {
                _allBindingList = _allBindingList.Where(x => x.Diameter >= diameterMin.Value).ToList();
            }
            double? diameterMax = this.txtDiameterMax.EditValue == null ? null : double.Parse(this.txtDiameterMax.EditValue.ToString());
            if (diameterMax.HasValue)
            {
                _allBindingList = _allBindingList.Where(x => x.Diameter <= diameterMax.Value).ToList();
            }
            this.hydroPipeViewModelBindingSource.DataSource = _allBindingList;
            this.hydroPipeViewModelBindingSource.ResetBindings(false);
@@ -244,9 +285,13 @@
                return;
            }
            var dlg = new SetHydroPipeDlg();
            dlg.SetBindingData(_allBindingList.Select(x => x.Vmo).ToList());
            dlg.SetBindingData(_allBindingList.Select(x => x.Vmo).ToList(), _changeHelper, _propStatusHelper);
            dlg.ReloadDataEvent += (list) =>
            {
                if (list == null || list.Count < 1)
                {
                    return;
                }
                _allBindingList.ForEach(x => x.UpdateProperty());
                this.hydroPipeViewModelBindingSource.ResetBindings(false);
                var allVisualViewModelList = _allBindingList.Select(x => x as HydroVisualViewModel).ToList();
@@ -257,7 +302,7 @@
            dlg.ShowDialog();
        }
        //行单元点击事件
        private void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e)
        {
            var row = this.gridView1.GetRow(e.RowHandle) as HydroPipeViewModel;
@@ -269,9 +314,13 @@
            if (e.Column == this.colSet)
            {
                var dlg = new SetHydroPipeDlg();
                dlg.SetBindingData(row.Vmo);
                dlg.SetBindingData(row.Vmo, _changeHelper, _propStatusHelper);
                dlg.ReloadDataEvent += (list) =>
                {
                    if (list == null || list.Count < 1)
                    {
                        return;
                    }
                    row.UpdateProperty();
                    this.gridView1.RefreshRow(e.RowHandle);
                    this.HydroChangedViewEvent?.Invoke(new List<HydroVisualViewModel>() { row });
@@ -294,6 +343,7 @@
        {
            this.groupForHead.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
            this.colDbLocked.Visible = false;
            this.colBeginGroup.Visible = false;
            this.colName.Visible = true;
            this.colCode.Visible = true;
            this.colModelType.Visible = true;
@@ -301,7 +351,6 @@
            this.colDiameter.Visible = true;
            this.colLength.Visible = false;
            this.colRoughness.Visible = false;
            this.colMinorLoss.Visible = false;
            this.colHasDb.Visible = false;
            this.colFlags.Visible = true;
            this.colDescription.Visible = true;
@@ -309,7 +358,6 @@
            this.colCalcuPr1.Visible = false;
            this.colCalcuPr2.Visible = false;
            this.colCalcuVelocity.Visible = false;
            this.colCalcuMinorLoss.Visible = false;
            this.colCalcuFrictionLoss.Visible = false;
            this.colSet.Visible = false;
        }
@@ -321,6 +369,7 @@
        {
            this.groupForHead.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
            this.colDbLocked.Visible = true;
            this.colBeginGroup.Visible = true;
            this.colName.Visible = true;
            this.colCode.Visible = true;
            this.colModelType.Visible = true;
@@ -328,7 +377,6 @@
            this.colDiameter.Visible = true;
            this.colLength.Visible = true;
            this.colRoughness.Visible = true;
            this.colMinorLoss.Visible = true;
            this.colHasDb.Visible = true;
            this.colFlags.Visible = true;
            this.colDescription.Visible = true;
@@ -336,7 +384,6 @@
            this.colCalcuPr1.Visible = false;
            this.colCalcuPr2.Visible = false;
            this.colCalcuVelocity.Visible = false;
            this.colCalcuMinorLoss.Visible = false;
            this.colCalcuFrictionLoss.Visible = false;
            this.colSet.Visible = true;
        }
@@ -348,6 +395,7 @@
        {
            this.groupForHead.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
            this.colDbLocked.Visible = true;
            this.colBeginGroup.Visible = true;
            this.colName.Visible = true;
            this.colCode.Visible = true;
            this.colModelType.Visible = true;
@@ -355,12 +403,10 @@
            this.colDiameter.Visible = true;
            this.colLength.Visible = true;
            this.colRoughness.Visible = true;
            this.colMinorLoss.Visible = true;
            this.colHasDb.Visible = true;
            this.colFlags.Visible = true;
            this.colDescription.Visible = true;
            this.colCalcuFrictionLoss.Visible = true;
            this.colCalcuMinorLoss.Visible = true;
            this.colCalcuVelocity.Visible = true;
            this.colCalcuPr2.Visible = true;
            this.colCalcuPr1.Visible = true;
@@ -375,6 +421,7 @@
        {
            this.groupForHead.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
            this.colDbLocked.Visible = true;
            this.colBeginGroup.Visible = true;
            this.colName.Visible = true;
            this.colCode.Visible = true;
            this.colModelType.Visible = true;
@@ -382,7 +429,6 @@
            this.colDiameter.Visible = true;
            this.colLength.Visible = true;
            this.colRoughness.Visible = true;
            this.colMinorLoss.Visible = true;
            this.colHasDb.Visible = true;
            this.colFlags.Visible = true;
            this.colDescription.Visible = true;
@@ -390,7 +436,6 @@
            this.colCalcuPr1.Visible = false;
            this.colCalcuPr2.Visible = false;
            this.colCalcuVelocity.Visible = false;
            this.colCalcuMinorLoss.Visible = false;
            this.colCalcuFrictionLoss.Visible = false;
            this.colSet.Visible = true;
        }
@@ -402,6 +447,7 @@
        {
            this.groupForHead.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
            this.colDbLocked.Visible = true;
            this.colBeginGroup.Visible = true;
            this.colName.Visible = true;
            this.colCode.Visible = true;
            this.colModelType.Visible = true;
@@ -409,17 +455,45 @@
            this.colDiameter.Visible = true;
            this.colLength.Visible = true;
            this.colRoughness.Visible = true;
            this.colMinorLoss.Visible = true;
            this.colHasDb.Visible = true;
            this.colFlags.Visible = true;
            this.colDescription.Visible = true;
            this.colCalcuFrictionLoss.Visible = true;
            this.colCalcuMinorLoss.Visible = true;
            this.colCalcuVelocity.Visible = true;
            this.colCalcuPr2.Visible = true;
            this.colCalcuPr1.Visible = true;
            this.colCalcuQ.Visible = true;
            this.colSet.Visible = false;
        }
        /// <summary>
        ///
        /// </summary>
        public GridView GetGridView()
        {
            return this.gridView1;
        }
        /// <summary>
        ///
        /// </summary>
        public void ExportToXlsx()
        {
            var filePath = FileDialogHelper.SaveFile("导出Excel文件", "Excel文件|*.xlsx");
            if (string.IsNullOrEmpty(filePath))
            {
                return;
            }
            var options = new XlsxExportOptions
            {
                ExportMode = XlsxExportMode.SingleFile, // 导出模式
                ShowGridLines = true, // 显示网格线
                TextExportMode = TextExportMode.Value, // 导出文本模式
                SheetName = "管道" // 工作表名称
            };
            this.gridView1.ExportToXlsx(filePath, options);
        }
    }
}