lixiaojun
2025-02-06 146ca8c7eefe74d3b73c00a73e99e94e903be401
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
@@ -1,21 +1,11 @@
using Castle.Core.Logging;
using DevExpress.CodeParser;
using DevExpress.Diagram.Core.Native;
using DevExpress.Diagram.Core.Native;
using DevExpress.Mvvm.Native;
using DevExpress.Office.Utils;
using DevExpress.Utils.MVVM;
using DevExpress.Xpo.Helpers;
using DevExpress.XtraMap;
using HStation.WinFrmUI.PhartRelation;
using DevExpress.Pdf.Native;
using Mapster;
using NPOI.OpenXmlFormats.Dml;
using NPOI.SS.Formula.Functions;
using System.Diagnostics;
using Yw.EPAnet;
using Yw.Hydro;
using Yw.Model;
using Yw.Vmo;
using Yw.WinFrmUI.Q3d;
namespace HStation.WinFrmUI
{
@@ -30,25 +20,50 @@
            RegistBulkSetEvents();
        }
        /// <summary>
        /// 新增工况事件
        /// </summary>
        public event Action<HydroWorkingVmo> AppendWorkingEvent;
        #region 模型事件
        /// <summary>
        /// 刷新模型事件
        /// </summary>
        public event Func<Task<Yw.Model.HydroModelInfo>> RefreshModelEvent;
        #endregion
        #region 方案事件
        /// <summary>
        /// 更新方案事件
        /// </summary>
        public event Action<XhsSchemeVmo> UpdateSchemeEvent;
        /// <summary>
        /// 移除方案事件
        /// </summary>
        public event Action<XhsSchemeVmo> RemoveSchemeEvent;
        #endregion
        #region 工况事件
        /// <summary>
        /// 新增工况事件
        /// </summary>
        public event Action<HydroWorkingVmo> AppendWorkingEvent;
        /// <summary>
        /// 更新工况事件
        /// </summary>
        public event Action<HydroWorkingVmo> UpdateWorkingEvent;
        /// <summary>
        /// 移除工况事件
        /// </summary>
        public event Action<HydroWorkingVmo> RemoveWorkingEvent;
        /// <summary>
        /// 重载工况事件
        /// </summary>
        public event Action<Dictionary<HydroWorkingVmo, bool>> ReloadWorkingEvent;
        #endregion
        private HStation.Vmo.XhsProjectVmo _project = null;//项目
        private HStation.Vmo.XhsProjectSiteVmo _projectSite = null;//项目站
@@ -389,11 +404,12 @@
            }
            if (_propertyCtrl == null)
            {
                var changeHelper = GetChangeHelper();
                var propStatusHelper = await GetPropStatusHelper();
                _propertyCtrl = new SimulationPropertyCtrl();
                _propertyCtrl.Dock = DockStyle.Fill;
                _propertyCtrl.AllowEdit = true;
                _propertyCtrl.InitialData(propStatusHelper);
                _propertyCtrl.InitialData(changeHelper, propStatusHelper);
                _propertyCtrl.CalcuResult = () => GetCalcuResult();
                _propertyCtrl.HydroViewEvent += (visual) =>
                {
@@ -459,14 +475,6 @@
                    //判断当前是否有分级展示,若有则更新分级,最好是更新单个分级
                    var gradingHelper = await GetGradingHelper();
                    gradingHelper.Set(visual);
                };
                _propertyCtrl.ParterChangedEvent += (parter, changeType) =>
                {
                    if (parter == null)
                    {
                        return;
                    }
                    AppendChangeParter(parter, changeType);
                };
            }
            return _propertyCtrl;
@@ -692,7 +700,7 @@
            return helper.GetSourceList();
        }
        #endregion 可见列表
        #endregion
        #region 视图列表
@@ -729,7 +737,7 @@
            return helper.GetVisual(code);
        }
        #endregion 视图列表
        #endregion
        #region 明细控件
@@ -750,10 +758,6 @@
                _visualListCtrl.HydroChangedInfoEvent += (visualList) =>
                {
                    SelectVisual(_visual, eSimulationVisualSource.List);
                };
                _visualListCtrl.ParterChangedEvent += (parter, changeType) =>
                {
                    AppendChangeParter(parter, changeType);
                };
            }
            return _visualListCtrl;
@@ -779,7 +783,7 @@
        }
        //显示构件明细控件
        private void ShowVisualListCtrl()
        private async void ShowVisualListCtrl()
        {
            if (_hydroInfo == null)
            {
@@ -795,8 +799,10 @@
                this.docPnlBottom.Height = 350;
            }
            var visualVmListHelper = GetVisualVmListHelper();
            var changeHelper = GetChangeHelper();
            var propStatusHelper = await GetPropStatusHelper();
            var allVisualVmList = visualVmListHelper.GetVisualList();
            visualListCtrl.SetBindingData(allVisualVmList);
            visualListCtrl.SetBindingData(allVisualVmList, changeHelper, propStatusHelper);
            var calcuResult = GetCalcuResult();
            if (calcuResult != null && calcuResult.Succeed)
            {
@@ -833,7 +839,7 @@
            ShowVisualListCtrl();
        }
        #endregion 明细控件
        #endregion
        #region 构件显示
@@ -948,38 +954,62 @@
            {
                if (_isSaving)
                {
                    TipFormHelper.ShowWarn("正在保存,请稍后重试!");
                    this.FindForm().ShowAlertInfo("保存", "正在保存,请稍后重试!");
                    return;
                }
            }
            _isSaving = true;
            var addParterList = GetAddParterList();
            var updateParterList = GetUpdateParterList();
            var removeParters = GetRemoveParters();
            var changeHelper = GetChangeHelper();
            this.FindForm().ShowAlertInfo("水力信息保存", "正在更新水力信息!");
            var addParterList = changeHelper.GetAddParterList();
            var updateParterList = changeHelper.GetUpdateParterList();
            var removeParters = changeHelper.GetRemoveParters();
            if (addParterList == null || addParterList.Count < 1)
            {
                if (updateParterList == null || updateParterList.Count < 1)
                {
                    if (removeParters == null || removeParters.Count < 1)
                    {
                        TipFormHelper.ShowWarn("未检测到修改,无需保存!");
                        _isSaving = false;
                        return;
                    }
                }
            }
            WaitFormHelper.ShowWaitForm("正在保存,请稍后...");
            var bol = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance
                .Update(_hydroInfo, addParterList, updateParterList, removeParters);
            if (!bol)
            {
                this.FindForm().ShowAlertInfo("水力信息保存", "水力信息更新失败!");
                WaitFormHelper.HideWaitForm();
                TipFormHelper.ShowError("水力信息更新失败!");
                _isSaving = false;
                return;
            }
            this.FindForm().ShowAlertInfo("水力信息保存", "水力信息更新成功!");
            changeHelper.Reset();
            this.FindForm().ShowAlertInfo("水力信息保存", "正在保存属性状态!");
            var propStatusDbList = await GetPropStatusDbList();
            bol = await BLLFactory<Yw.BLL.HydroParterPropStatusInfo>.Instance.Save(_hydroInfo.ID, propStatusDbList);
            if (bol)
            var propStatusHelper = await GetPropStatusHelper();
            var updatePropStatusList = propStatusHelper.GetUpdatePropStatusDbList();
            if (updatePropStatusList != null && updatePropStatusList.Count > 0)
            {
                this.FindForm().ShowAlertInfo("水力信息保存", "属性状态保存成功!");
                bol = await BLLFactory<Yw.BLL.HydroParterPropStatusInfo>.Instance.Update(_hydroInfo.ID, updatePropStatusList);
                if (!bol)
                {
                    WaitFormHelper.HideWaitForm();
                    TipFormHelper.ShowWarn("属性状态更新失败!");
                    _isSaving = false;
                    return;
                }
            }
            else
            {
                this.FindForm().ShowAlertInfo("水力信息保存", "属性状态保存失败!");
            }
            propStatusHelper.Reset();
            WaitFormHelper.HideWaitForm();
            TipFormHelper.ShowSucceed("保存成功!");
            _isSaving = false;
            //Stopwatch sw = new Stopwatch();
@@ -998,11 +1028,13 @@
        private void RegistBulkSetEvents()
        {
            //水库
            this.barBtnSetReservoirList.ItemClick += delegate
            this.barBtnSetReservoirList.ItemClick += async delegate
            {
                var allVisualViewModelList = GetVisualViewModelList();
                var changeHelper = GetChangeHelper();
                var propStatusHelper = await GetPropStatusHelper();
                var dlg = new SetHydroReservoirListDlg();
                dlg.SetBindingData(allVisualViewModelList);
                dlg.SetBindingData(allVisualViewModelList, changeHelper, propStatusHelper);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eSimulationVisualSource.Set);
@@ -1011,19 +1043,17 @@
                {
                    SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ParterChangedEvent += (parter, changeType) =>
                {
                    AppendChangeParter(parter, changeType);
                };
                dlg.ShowDialog();
            };
            //水池
            this.barBtnSetTankList.ItemClick += delegate
            this.barBtnSetTankList.ItemClick += async delegate
            {
                var allVisualViewModelList = GetVisualViewModelList();
                var changeHelper = GetChangeHelper();
                var propStatusHelper = await GetPropStatusHelper();
                var dlg = new SetHydroTankListDlg();
                dlg.SetBindingData(allVisualViewModelList);
                dlg.SetBindingData(allVisualViewModelList, changeHelper, propStatusHelper);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eSimulationVisualSource.Set);
@@ -1032,19 +1062,17 @@
                {
                    SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ParterChangedEvent += (parter, changeType) =>
                {
                    AppendChangeParter(parter, changeType);
                };
                dlg.ShowDialog();
            };
            //水箱
            this.barBtnSetWaterboxList.ItemClick += delegate
            this.barBtnSetWaterboxList.ItemClick += async delegate
            {
                var allVisualViewModelList = GetVisualViewModelList();
                var changeHelper = GetChangeHelper();
                var propStatusHelper = await GetPropStatusHelper();
                var dlg = new SetHydroWaterboxListDlg();
                dlg.SetBindingData(allVisualViewModelList);
                dlg.SetBindingData(allVisualViewModelList, changeHelper, propStatusHelper);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eSimulationVisualSource.Set);
@@ -1053,19 +1081,17 @@
                {
                    SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ParterChangedEvent += (parter, changeType) =>
                {
                    AppendChangeParter(parter, changeType);
                };
                dlg.ShowDialog();
            };
            //连接节点
            this.barBtnSetJunctionList.ItemClick += delegate
            this.barBtnSetJunctionList.ItemClick += async delegate
            {
                var allVisualViewModelList = GetVisualViewModelList();
                var changeHelper = GetChangeHelper();
                var propStatusHelper = await GetPropStatusHelper();
                var dlg = new SetHydroJunctionListDlg();
                dlg.SetBindingData(allVisualViewModelList);
                dlg.SetBindingData(allVisualViewModelList, changeHelper, propStatusHelper);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eSimulationVisualSource.Set);
@@ -1074,19 +1100,17 @@
                {
                    SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ParterChangedEvent += (parter, changeType) =>
                {
                    AppendChangeParter(parter, changeType);
                };
                dlg.ShowDialog();
            };
            //闷头
            this.barBtnSetBluntheadList.ItemClick += delegate
            this.barBtnSetBluntheadList.ItemClick += async delegate
            {
                var allVisualViewModelList = GetVisualViewModelList();
                var changeHelper = GetChangeHelper();
                var propStatusHelper = await GetPropStatusHelper();
                var dlg = new SetHydroBluntheadListDlg();
                dlg.SetBindingData(allVisualViewModelList);
                dlg.SetBindingData(allVisualViewModelList, changeHelper, propStatusHelper);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eSimulationVisualSource.Set);
@@ -1095,19 +1119,17 @@
                {
                    SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ParterChangedEvent += (parter, changeType) =>
                {
                    AppendChangeParter(parter, changeType);
                };
                dlg.ShowDialog();
            };
            //弯头
            this.barBtnSetElbowsList.ItemClick += delegate
            this.barBtnSetElbowsList.ItemClick += async delegate
            {
                var allVisualVmList = GetVisualViewModelList();
                var changeHelper = GetChangeHelper();
                var propStatusHelper = await GetPropStatusHelper();
                var dlg = new SetHydroElbowListDlg();
                dlg.SetBindingData(allVisualVmList);
                dlg.SetBindingData(allVisualVmList, changeHelper, propStatusHelper);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eSimulationVisualSource.Set);
@@ -1116,19 +1138,17 @@
                {
                    SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ParterChangedEvent += (parter, changeType) =>
                {
                    AppendChangeParter(parter, changeType);
                };
                dlg.ShowDialog();
            };
            //三通
            this.barBtnSetThreelinkList.ItemClick += delegate
            this.barBtnSetThreelinkList.ItemClick += async delegate
            {
                var allVisualViewModelList = GetVisualViewModelList();
                var changeHelper = GetChangeHelper();
                var propStatusHelper = await GetPropStatusHelper();
                var dlg = new SetHydroThreelinkListDlg();
                dlg.SetBindingData(allVisualViewModelList);
                dlg.SetBindingData(allVisualViewModelList, changeHelper, propStatusHelper);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eSimulationVisualSource.Set);
@@ -1137,19 +1157,17 @@
                {
                    SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ParterChangedEvent += (parter, changeType) =>
                {
                    AppendChangeParter(parter, changeType);
                };
                dlg.ShowDialog();
            };
            //四通
            this.barBtnSetFourlinkList.ItemClick += delegate
            this.barBtnSetFourlinkList.ItemClick += async delegate
            {
                var allVisualViewModelList = GetVisualViewModelList();
                var changeHelper = GetChangeHelper();
                var propStatusHelper = await GetPropStatusHelper();
                var dlg = new SetHydroFourlinkListDlg();
                dlg.SetBindingData(allVisualViewModelList);
                dlg.SetBindingData(allVisualViewModelList, changeHelper, propStatusHelper);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eSimulationVisualSource.Set);
@@ -1158,19 +1176,17 @@
                {
                    SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ParterChangedEvent += (parter, changeType) =>
                {
                    AppendChangeParter(parter, changeType);
                };
                dlg.ShowDialog();
            };
            //水表
            this.barBtnSetMeterList.ItemClick += delegate
            this.barBtnSetMeterList.ItemClick += async delegate
            {
                var allVisualViewModelList = GetVisualViewModelList();
                var changeHelper = GetChangeHelper();
                var propStatusHelper = await GetPropStatusHelper();
                var dlg = new SetHydroMeterListDlg();
                dlg.SetBindingData(allVisualViewModelList);
                dlg.SetBindingData(allVisualViewModelList, changeHelper, propStatusHelper);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eSimulationVisualSource.Set);
@@ -1179,19 +1195,17 @@
                {
                    SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ParterChangedEvent += (parter, changeType) =>
                {
                    AppendChangeParter(parter, changeType);
                };
                dlg.ShowDialog();
            };
            //流量计
            this.barBtnSetFlowmeterList.ItemClick += delegate
            this.barBtnSetFlowmeterList.ItemClick += async delegate
            {
                var allVisualViewModelList = GetVisualViewModelList();
                var changeHelper = GetChangeHelper();
                var propStatusHelper = await GetPropStatusHelper();
                var dlg = new SetHydroFlowmeterListDlg();
                dlg.SetBindingData(allVisualViewModelList);
                dlg.SetBindingData(allVisualViewModelList, changeHelper, propStatusHelper);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eSimulationVisualSource.Set);
@@ -1200,19 +1214,17 @@
                {
                    SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ParterChangedEvent += (parter, changeType) =>
                {
                    AppendChangeParter(parter, changeType);
                };
                dlg.ShowDialog();
            };
            //压力表
            this.barBtnSetPressmeterList.ItemClick += delegate
            this.barBtnSetPressmeterList.ItemClick += async delegate
            {
                var allVisualViewModelList = GetVisualViewModelList();
                var changeHelper = GetChangeHelper();
                var propStatusHelper = await GetPropStatusHelper();
                var dlg = new SetHydroPressmeterListDlg();
                dlg.SetBindingData(allVisualViewModelList);
                dlg.SetBindingData(allVisualViewModelList, changeHelper, propStatusHelper);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eSimulationVisualSource.Set);
@@ -1221,19 +1233,17 @@
                {
                    SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ParterChangedEvent += (parter, changeType) =>
                {
                    AppendChangeParter(parter, changeType);
                };
                dlg.ShowDialog();
            };
            //喷嘴
            this.barBtnSetNozzleList.ItemClick += delegate
            this.barBtnSetNozzleList.ItemClick += async delegate
            {
                var allVisualViewModelList = GetVisualViewModelList();
                var changeHelper = GetChangeHelper();
                var propStatusHelper = await GetPropStatusHelper();
                var dlg = new SetHydroNozzleListDlg();
                dlg.SetBindingData(allVisualViewModelList);
                dlg.SetBindingData(allVisualViewModelList, changeHelper, propStatusHelper);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eSimulationVisualSource.Set);
@@ -1242,19 +1252,17 @@
                {
                    SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ParterChangedEvent += (parter, changeType) =>
                {
                    AppendChangeParter(parter, changeType);
                };
                dlg.ShowDialog();
            };
            //冷却塔
            this.barBtnSetCoolingList.ItemClick += delegate
            this.barBtnSetCoolingList.ItemClick += async delegate
            {
                var allVisualViewModelList = GetVisualViewModelList();
                var changeHelper = GetChangeHelper();
                var propStatusHelper = await GetPropStatusHelper();
                var dlg = new SetHydroCoolingListDlg();
                dlg.SetBindingData(allVisualViewModelList);
                dlg.SetBindingData(allVisualViewModelList, changeHelper, propStatusHelper);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eSimulationVisualSource.Set);
@@ -1263,19 +1271,17 @@
                {
                    SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ParterChangedEvent += (parter, changeType) =>
                {
                    AppendChangeParter(parter, changeType);
                };
                dlg.ShowDialog();
            };
            //管道
            this.barBtnSetPipeList.ItemClick += delegate
            this.barBtnSetPipeList.ItemClick += async delegate
            {
                var allVisualViewModelList = GetVisualViewModelList();
                var changeHelper = GetChangeHelper();
                var propStatusHelper = await GetPropStatusHelper();
                var dlg = new SetHydroPipeListDlg();
                dlg.SetBindingData(allVisualViewModelList);
                dlg.SetBindingData(allVisualViewModelList, changeHelper, propStatusHelper);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eSimulationVisualSource.Set);
@@ -1284,19 +1290,17 @@
                {
                    SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ParterChangedEvent += (parter, changeType) =>
                {
                    AppendChangeParter(parter, changeType);
                };
                dlg.ShowDialog();
            };
            //过渡件
            this.barBtnSetTranslationList.ItemClick += delegate
            this.barBtnSetTranslationList.ItemClick += async delegate
            {
                var allVisualViewModelList = GetVisualViewModelList();
                var changeHelper = GetChangeHelper();
                var propStatusHelper = await GetPropStatusHelper();
                var dlg = new SetHydroTranslationListDlg();
                dlg.SetBindingData(allVisualViewModelList);
                dlg.SetBindingData(allVisualViewModelList, changeHelper, propStatusHelper);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eSimulationVisualSource.Set);
@@ -1305,19 +1309,17 @@
                {
                    SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ParterChangedEvent += (parter, changeType) =>
                {
                    AppendChangeParter(parter, changeType);
                };
                dlg.ShowDialog();
            };
            //水泵
            this.barBtnSetPumpList.ItemClick += delegate
            this.barBtnSetPumpList.ItemClick += async delegate
            {
                var allVisualViewModelList = GetVisualViewModelList();
                var changeHelper = GetChangeHelper();
                var propStatusHelper = await GetPropStatusHelper();
                var dlg = new SetHydroPumpListDlg();
                dlg.SetBindingData(allVisualViewModelList);
                dlg.SetBindingData(allVisualViewModelList, changeHelper, propStatusHelper);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eSimulationVisualSource.Set);
@@ -1326,19 +1328,17 @@
                {
                    SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ParterChangedEvent += (parter, changeType) =>
                {
                    AppendChangeParter(parter, changeType);
                };
                dlg.ShowDialog();
            };
            //阀门
            this.barBtnSetValveList.ItemClick += delegate
            this.barBtnSetValveList.ItemClick += async delegate
            {
                var allVisualViewModelList = GetVisualViewModelList();
                var changeHelper = GetChangeHelper();
                var propStatusHelper = await GetPropStatusHelper();
                var dlg = new SetHydroValveListDlg();
                dlg.SetBindingData(allVisualViewModelList);
                dlg.SetBindingData(allVisualViewModelList, changeHelper, propStatusHelper);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eSimulationVisualSource.Set);
@@ -1347,19 +1347,17 @@
                {
                    SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ParterChangedEvent += (parter, changeType) =>
                {
                    AppendChangeParter(parter, changeType);
                };
                dlg.ShowDialog();
            };
            //换热器
            this.barBtnSetExchangerList.ItemClick += delegate
            this.barBtnSetExchangerList.ItemClick += async delegate
            {
                var allVisualViewModelList = GetVisualViewModelList();
                var changeHelper = GetChangeHelper();
                var propStatusHelper = await GetPropStatusHelper();
                var dlg = new SetHydroExchangerListDlg();
                dlg.SetBindingData(allVisualViewModelList);
                dlg.SetBindingData(allVisualViewModelList, changeHelper, propStatusHelper);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eSimulationVisualSource.Set);
@@ -1368,19 +1366,17 @@
                {
                    SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ParterChangedEvent += (parter, changeType) =>
                {
                    AppendChangeParter(parter, changeType);
                };
                dlg.ShowDialog();
            };
            //压缩机
            this.barBtnSetCompressorList.ItemClick += delegate
            this.barBtnSetCompressorList.ItemClick += async delegate
            {
                var allVisualViewModelList = GetVisualViewModelList();
                var changeHelper = GetChangeHelper();
                var propStatusHelper = await GetPropStatusHelper();
                var dlg = new SetHydroCompressorListDlg();
                dlg.SetBindingData(allVisualViewModelList);
                dlg.SetBindingData(allVisualViewModelList, changeHelper, propStatusHelper);
                dlg.HydroClickInfoEvent += (visual) =>
                {
                    SelectVisual(visual, eSimulationVisualSource.Set);
@@ -1389,10 +1385,6 @@
                {
                    SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                    UpdateVisualListCtrl();
                };
                dlg.ParterChangedEvent += (parter, changeType) =>
                {
                    AppendChangeParter(parter, changeType);
                };
                dlg.ShowDialog();
            };
@@ -1866,39 +1858,6 @@
        }
        #endregion 人工刷新
        #region 水流动画
        //水流动画辅助类
        private SimulationFlowEffectHelper _flowEffectHelper = null;
        //获取水流动画辅助类
        private async Task<SimulationFlowEffectHelper> GetFlowEffectHelper()
        {
            if (_hydroInfo == null)
            {
                return default;
            }
            if (_flowEffectHelper == null)
            {
                var visualListHelper = GetVisualListHelper();
                var bimfaceCtrl = await GetBimfaceCtrl();
                _flowEffectHelper = new SimulationFlowEffectHelper(visualListHelper, bimfaceCtrl);
                var calcuResult = GetCalcuResult();
                _flowEffectHelper.InitialData(calcuResult);
            }
            return _flowEffectHelper;
        }
        //水流动画是否可见
        private async void barCkFlowEffect_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            var flowEffectHelper = await GetFlowEffectHelper();
            //flowEffectHelper.Visible = this.barCkFlowEffect.Checked;
            //flowEffectHelper.Set();
        }
        #endregion
        #region 监测点
@@ -2535,6 +2494,25 @@
        #endregion 水泵列表
        #region 压力切换
        //计算压力是否为绝对压力
        private bool _calcuPressModeIsHead = false;
        //计算结果压力切换
        private void barToggleSwitchPress_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            _calcuPressModeIsHead = !this.barToggleSwitchPress.Checked;
            this.barToggleSwitchPress.Caption = _calcuPressModeIsHead ? "绝对压力" : "自由压力";
            var workingHelper = GetWorkingHelper();
            workingHelper.ResetResult(_calcuPressModeIsHead);
            UpdateVisualListCtrl();
            UpdatePropertyCtrl();
        }
        #endregion
        #region 水力计算
        //计算
@@ -2586,7 +2564,7 @@
                WaitFormHelper.ShowWaitForm(this, "正在计算分析中,请稍候...");
                await Task.Delay(3000);
                var calcuResult = _hydroInfo.Calcu(Yw.EPAnet.CalcuMode.MinorLoss);
                var calcuResult = _hydroInfo.Calcu(Yw.EPAnet.CalcuMode.MinorLoss, _calcuPressModeIsHead);
                WaitFormHelper.HideWaitForm();
                workingHelper.InitialData(hydroInfo, working, checkResult, calcuResult);
                if (calcuResult.Succeed)
@@ -2647,7 +2625,7 @@
            Calcu();
        }
        #endregion 水力计算
        #endregion
        #region 导出报告
@@ -2689,7 +2667,7 @@
            dlg.ShowDialog();
        }
        #endregion 导出报告
        #endregion
        #region 当前工况
@@ -2754,7 +2732,7 @@
            AddWorking();
        }
        #endregion 当前工况
        #endregion
        #region 选择工况
@@ -2766,11 +2744,17 @@
        {
            if (_workingCheckedListHelper == null)
            {
                var visualListHelper = GetVisualListHelper();
                _workingCheckedListHelper = new SimulationWorkingCheckedListHelper(visualListHelper);
                _workingCheckedListHelper = new SimulationWorkingCheckedListHelper();
                _workingCheckedListHelper.InitialData(_allWorkingCheckedListDict);
            }
            return _workingCheckedListHelper;
        }
        //获取工况字典
        private Dictionary<HydroWorkingVmo, bool> GetWorkingDict()
        {
            var helper = GetWorkingCheckedListHelper();
            return helper.GetWorkingDict();
        }
        //获取工况列表
@@ -2808,7 +2792,44 @@
            helper.Remove(working);
        }
        #endregion 选择工况
        /// <summary>
        /// 重载工况选择列表
        /// </summary>
        public void ReloadWorkingCheckedList(Dictionary<HydroWorkingVmo, bool> dict)
        {
            var helper = GetWorkingCheckedListHelper();
            helper.InitialData(dict);
        }
        //管理工况
        private void barBtnMgrWorking_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            var dict = GetWorkingDict();
            var dlg = new HydroWorkingMgrDlg();
            dlg.ReloadDataEvent += (dict) =>
            {
                this.ReloadWorkingEvent?.Invoke(dict);
            };
            dlg.UpdateDataEvent += (rhs) =>
            {
                this.UpdateWorkingEvent?.Invoke(rhs);
            };
            dlg.ApplyDataEvent += async (rhs) =>
            {
                _hydroInfo.UpdateWorkingInfo(rhs.WorkingInfo);
                var monitorValueHelper = GetMonitorValueHelper();
                var allMonitorValueList = await monitorValueHelper.GetAll();
                allMonitorValueList.UpdateMonitorValue(rhs.MonitorInfo);
            };
            dlg.DeleteDataEvent += (rhs) =>
            {
                this.RemoveWorkingEvent?.Invoke(rhs);
            };
            dlg.SetBindingData(dict);
            dlg.ShowDialog();
        }
        #endregion
        #region 监测分析
@@ -2893,7 +2914,7 @@
            ShowMonitorAnalyListCtrl();
        }
        #endregion 监测分析
        #endregion
        #region 工况分析
@@ -3073,19 +3094,27 @@
        #region 损失曲线
        //单工况损失曲线控件
        private HydroSingleWorkingLossCurveCtrl _singleWorkingLossCurveCtrl = null;
        private HydroSingleWorkingLossCurveInteropCtrl _singleWorkingLossCurveCtrl = null;
        //获取单工况损失曲线控件
        private HydroSingleWorkingLossCurveCtrl GetSingleWorkingLossCurveCtrl()
        private HydroSingleWorkingLossCurveInteropCtrl GetSingleWorkingLossCurveCtrl()
        {
            if (_singleWorkingLossCurveCtrl == null)
            {
                _singleWorkingLossCurveCtrl = new HydroSingleWorkingLossCurveCtrl();
                _singleWorkingLossCurveCtrl = new HydroSingleWorkingLossCurveInteropCtrl();
                _singleWorkingLossCurveCtrl.Dock = DockStyle.Fill;
                _singleWorkingLossCurveCtrl.HydroClickEvent += (code) =>
                {
                    var visual = GetVisual(code);
                    SelectVisual(visual, eSimulationVisualSource.None);
                };
                _singleWorkingLossCurveCtrl.HydroSpecialDisplayEvent += (list) =>
                {
                    _bimfaceCtrl?.SetLogicOutlineGlowEffect(list);
                };
                _singleWorkingLossCurveCtrl.HydroCancelSpecialDisplayEvent += () =>
                {
                    _bimfaceCtrl?.RemoveLogicOutlineGlowEffect();
                };
            }
            return _singleWorkingLossCurveCtrl;
@@ -3100,7 +3129,7 @@
                {
                    if (this.controlContainerBottom.Controls.Count > 0)
                    {
                        if (this.controlContainerBottom.Controls[0] is HydroSingleWorkingLossCurveCtrl)
                        if (this.controlContainerBottom.Controls[0] is HydroSingleWorkingLossCurveInteropCtrl)
                        {
                            return true;
                        }
@@ -3168,7 +3197,7 @@
            }
        }
        #endregion 损失曲线
        #endregion
        #region 方案管理
@@ -3244,5 +3273,9 @@
        }
        #endregion 方案管理
    }
}