lixiaojun
2024-11-29 0cc49afcb0da13470d36a4412767d38588682f62
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/08-working/XhsProjectSimulationWorkingPage.cs
@@ -94,17 +94,18 @@
                _bimfaceCtrl = new XhsProjectSimulationBimfaceCtrl();
                _bimfaceCtrl.Dock = DockStyle.Fill;
                await _bimfaceCtrl.InitialData(_project, _projectSite);
                _bimfaceCtrl.LoadCompletedEvent += () =>
                _bimfaceCtrl.LoadCompletedEvent += async () =>
                {//view加载完成事件
                    if (_hydroInfo == null)
                    {
                        return;
                    }
                    await InitialWorking();
                    this.barCkDecorator.Checked = false;
                    this.barCkMonitor.Checked = true;
                    this.barCkGrading.Checked = true;
                    this.barCkCalcu.Checked = true;
                    CalcuWorking();
                };
                _bimfaceCtrl.HydroMouseLeftClickEvent += (code) =>
                {//鼠标左键点击事件
@@ -166,10 +167,10 @@
        #region 属性控件
        //属性控件
        private XhsProjectSimulationPropertyCtrl _propertyCtrl = null;
        private HydroVisualPropertyViewCtrl _propertyCtrl = null;
        //获取属性控件
        private XhsProjectSimulationPropertyCtrl GetPropertyCtrl()
        private HydroVisualPropertyViewCtrl GetPropertyCtrl()
        {
            if (_hydroInfo == null)
            {
@@ -177,11 +178,11 @@
            }
            if (_propertyCtrl == null)
            {
                _propertyCtrl = new XhsProjectSimulationPropertyCtrl();
                _propertyCtrl = new HydroVisualPropertyViewCtrl();
                _propertyCtrl.Dock = DockStyle.Fill;
                _propertyCtrl.HydroViewEvent += (visual) =>
                _propertyCtrl.HydroViewEvent += (visualViewModel) =>
                {
                    SelectVisual(visual, eVisualSource.Property);
                    SelectVisual(GetVisual(visualViewModel), eVisualSource.Property);
                };
                _propertyCtrl.BlinkLinkNodeEvent += async (link, linkNodeCode) =>
                { //强调连接节点
@@ -220,38 +221,6 @@
                    await Task.Delay(5000);
                    await _bimfaceCtrl?.ClearBlinkComponents();
                };
                _propertyCtrl.PropertyValueChangedEvent += async (visual) =>
                {
                    if (visual == null)
                    {
                        return;
                    }
                    UpdateVisualListCtrl();
                    var gradingHelper = await GetGradingHelper();
                    gradingHelper.Set();
                };
                _propertyCtrl.MarkPropertyValueChangedEvent += async (visual) =>
                {
                    //标注属性发生改变
                    //判断当前是否有标注展示,若有则更新标注,最好是更新单个标注
                    var markHelper = await GetMarkHelper();
                    markHelper.Set(visual);
                };
                _propertyCtrl.GradingPropertyValueChangedEvent += async (visual) =>
                {
                    //分级属性发生改变
                    //判断当前是否有分级展示,若有则更新分级,最好是更新单个分级
                    var gradingHelper = await GetGradingHelper();
                    gradingHelper.Set(visual);
                };
                _propertyCtrl.FlowEffectPropertyValueChangedEvent += async (visual) =>
                {
                    //流向属性发生改变
                    //判断流向是否加载,如果加载则更新流向,最好是更新单个流向
                    var flowEffectHelper = await GetFlowEffectHelper();
                    flowEffectHelper.Set(visual);
                };
            }
            return _propertyCtrl;
        }
@@ -422,6 +391,23 @@
                _visualListHelper.InitialData(_hydroInfo);
            }
            return _visualListHelper;
        }
        //获取可见构件
        private Yw.Model.HydroVisualInfo GetVisual(string code)
        {
            if (string.IsNullOrEmpty(code))
            {
                return default;
            }
            var visualListHelper = GetVisualListHelper();
            return visualListHelper.GetVisual(code);
        }
        //获取可见构件
        private Yw.Model.HydroVisualInfo GetVisual(HydroVisualViewModel visualViewModel)
        {
            return GetVisual(visualViewModel?.Code);
        }
        #endregion
@@ -776,36 +762,6 @@
            return _gradingHelper;
        }
        //设置颜色分级列表
        private async void SetGradingList()
        {
            if (_hydroInfo == null)
            {
                return;
            }
            var gradingHelper = await GetGradingHelper();
            var allGradingList = await gradingHelper.GetGradingList();
            var dlg = new SetHydroGradingTreeDlg();
            dlg.SetBindingData(_hydroInfo, allGradingList);
            dlg.ReloadDataEvent += (list) =>
            {
                gradingHelper.SetGradingList(list);
                gradingHelper.Set();
            };
            dlg.ApplyDataEvent += (catalog, propName) =>
            {
                gradingHelper.UpdateApply(catalog, propName);
                gradingHelper.Set();
            };
            dlg.ShowDialog();
        }
        //配置颜色分级
        private void barBtnSetGradingList_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            SetGradingList();
        }
        //应用颜色分级列表
        private async void ApplyGradingList()
        {
@@ -930,42 +886,6 @@
            return _monitorHelper;
        }
        //设置监测点列表
        private async void SetMonitorList(HydroVisualInfo visual)
        {
            if (_hydroInfo == null)
            {
                return;
            }
            var monitorHelper = GetMonitorHelper();
            var allMonitorList = await monitorHelper.Get();
            var dlg = new SetHydroMonitorListDlg();
            dlg.SetBindingData(_hydroInfo, visual, allMonitorList);
            dlg.ReloadDataEvent += async (list) =>
            {
                var bol = await BLLFactory<Yw.BLL.HydroMonitor>.Instance.Save(_hydroInfo.ID, visual.Code, list);
                if (!bol)
                {
                    TipFormHelper.ShowError("设置失败!");
                    return;
                }
                TipFormHelper.ShowSucceed("设置成功!");
                var monitorList = await monitorHelper.Update(visual.Code);
                var monitorValueHelper = GetMonitorValueHelper();
                monitorValueHelper.Update(visual.Code, monitorList);
                var monitorMarkerHelper = await GetMonitorMarkerHelper();
                monitorMarkerHelper.Update(visual.Code, monitorList);
                monitorMarkerHelper.Set();
            };
            dlg.ShowDialog();
        }
        //设置监测点
        private void barBtnSetMonitor_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            SetMonitorList(_visual);
        }
        #endregion
        #region 监测值
@@ -999,6 +919,7 @@
            {
                _monitorValueListCtrl = new HydroMonitorValueListCtrl();
                _monitorValueListCtrl.Dock = DockStyle.Fill;
                _monitorValueListCtrl.SetViewBoard();
                _monitorValueListCtrl.HydroViewEvent += (code) =>
                {
                    var visualListHelper = GetVisualListHelper();
@@ -1045,8 +966,8 @@
            monitorValueListCtrl.SetBindingData(allMonitorValueList);
        }
        //设置监测值
        private void barBtnSetMonitorValue_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        //显示监测值
        private void barBtnShowMonitorValue_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            ShowMonitorValueListCtrl();
        }
@@ -1340,59 +1261,6 @@
        #endregion
        #region 工况计算
        //计算工况
        private async void CalcuWorking()
        {
            if (_hydroInfo == null)
            {
                return;
            }
            if (_working == null)
            {
                return;
            }
            _hydroInfo.UpdateWorkingInfo(_working.WorkingInfo);
            var workingHelper = GetWorkingHelper();
            //校验
            var checkResult = _hydroInfo.Check();
            if (!checkResult.Succeed)
            {
                workingHelper.InitialData(_hydroInfo, _working, checkResult, null);
                ShowCheckCtrl(checkResult);
                TipFormHelper.ShowError("校验失败,请检查后重试");
                return;
            }
            //计算
            var calcuResult = _hydroInfo.Calcu(Yw.EPAnet.CalcuMode.MinorLoss);
            workingHelper.InitialData(_hydroInfo, _working, checkResult, calcuResult);
            if (calcuResult.Succeed)
            {
                if (calcuResult.WainingList != null && calcuResult.WainingList.Count > 0)
                {
                    ShowCalcuWarningCtrl(calcuResult);
                }
                TipFormHelper.ShowSucceed("计算成功!");
            }
            else
            {
                ShowCalcuFailedCtrl(calcuResult);
                TipFormHelper.ShowError("计算失败!");
            }
            #region 计算标签
            var calcuResultLabelHelper = await GetCalcuResultLabelHelper();
            calcuResultLabelHelper.Set();
            #endregion
        }
        #endregion
        #region 管网修复
        //修复管网
@@ -1481,7 +1349,7 @@
        #endregion
        #region 并联计算
        #region 并联模拟
        //并联分析
        private void ParallelAnalysis()
@@ -1598,26 +1466,73 @@
            return workingHelper.CalcuResult;
        }
        #endregion
        #region 工况分析
        #region 工况评估
        //精度评估
        private void barBtnWorkingEvaluation_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        //初始化工况
        private async Task InitialWorking()
        {
            if (_hydroInfo == null)
            {
                return;
            }
            if (_working == null)
            {
                return;
            }
            _hydroInfo.UpdateWorkingInfo(_working.WorkingInfo);
            var monitorValueHelper = GetMonitorValueHelper();
            var allMonitorValueList = await monitorValueHelper.Get();
            allMonitorValueList.UpdateMonitorValue(_working.MonitorInfo);
            var workingHelper = GetWorkingHelper();
            //校验
            var checkResult = _hydroInfo.Check();
            if (!checkResult.Succeed)
            {
                workingHelper.InitialData(_hydroInfo, _working, checkResult, null);
                ShowCheckCtrl(checkResult);
                TipFormHelper.ShowError("校验失败!");
                return;
            }
            //计算
            var calcuResult = _hydroInfo.Calcu(Yw.EPAnet.CalcuMode.MinorLoss);
            workingHelper.InitialData(_hydroInfo, _working, checkResult, calcuResult);
            if (calcuResult.Succeed)
            {
                if (calcuResult.WainingList != null && calcuResult.WainingList.Count > 0)
                {
                    ShowCalcuWarningCtrl(calcuResult);
                }
            }
            else
            {
                ShowCalcuFailedCtrl(calcuResult);
                TipFormHelper.ShowError("计算失败!");
            }
        }
        #endregion
        #region 工况并联
        #region 工况分析
        //并联分析
        private void barBtnAnaly_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        //精度评估
        private async void barBtnWorkingEvaluation_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            var monitorHelper = GetMonitorHelper();
            var allMonitorList = await monitorHelper.Get();
            var workingHelper = GetWorkingHelper();
            if (!workingHelper.Initialized)
            {
                TipFormHelper.ShowWarn("工况计算失败!");
                return;
            }
            var dlg = new HydroSingleWorkingEvaluationDlg();
            dlg.SetBindingData(workingHelper.HydroInfo, allMonitorList, workingHelper.Working, workingHelper.CalcuResult);
            dlg.ShowDialog();
        }
        //水泵分析
        private void barBtnPumpAnaly_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (_hydroInfo == null)
            {
@@ -1707,61 +1622,88 @@
            dlg.ShowDialog();
        }
        #endregion
        #region 工况能效
        //能效分析
        private void barBtnWorkingPower_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            XtraMessageBox.Show("正在开发中,敬请期待!");
        }
        #endregion
        #region 损失曲线
        private void barBtnWorkingLossCurve_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (_visual == null)
            var workingHelper = GetWorkingHelper();
            if (!workingHelper.Initialized)
            {
                XtraMessageBox.Show("请选择节点后重试!");
                TipFormHelper.ShowWarn("工况计算失败!");
                return;
            }
            if (!(_visual is Yw.Model.HydroNodeInfo))
            {
                XtraMessageBox.Show("请选择节点后重试!");
                return;
            }
            var network = _hydroInfo.ToNetwork();
            var calcuResult = network.Calcu(Yw.EPAnet.CalcuMode.MinorLoss);
            var allNodeList = network.GetAllNodes();
            var node = allNodeList.Find(x => x.Id == _visual.Code);
            var allPathList = network.AnalyzeDownstreamPath(node, calcuResult);
            var allEpaLossList = network.GetChartNodeByPathLinks(allPathList, calcuResult);
            var allLossList = allEpaLossList?.Select(x => new HydroNodeLossViewModel(x)).ToList();
            var dlg = new HydroSingleLossCurveDlg();
            dlg.SetBindingData(allLossList);
            var dlg = new SimulationSingleWorkingEnergyDlg();
            dlg.SetBindingData(workingHelper.HydroInfo, workingHelper.CalcuResult);
            dlg.ShowDialog();
        }
        #endregion
        #region 损失比例
        private void barBtnWorkingLossScale_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        //损失曲线
        private void barBtnWorkingLossCurve_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            XtraMessageBox.Show("正在开发中,敬请期待!");
            var workingHelper = GetWorkingHelper();
            if (!workingHelper.Initialized)
            {
                TipFormHelper.ShowError("工况计算失败!");
                return;
            }
            if (_visual == null)
            {
                TipFormHelper.ShowWarn("请选择构件!");
                return;
            }
            HydroVisualInfo visual = _visual;
            if (_visual is HydroLinkInfo linkInfo)
            {
                var visualListHelper = GetVisualListHelper();
                visual = visualListHelper.GetVisual(linkInfo.StartCode);
            }
            var dlg = new HydroSingleWorkingLossCurveDlg();
            dlg.SetBindingData(workingHelper.HydroInfo, workingHelper.CalcuResult, visual);
            dlg.ShowDialog();
        }
        #endregion
        #region 综合分析
        private void barBtnWorkingAnaly_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        //损失统计
        private void barBtnWorkingLossStatistics_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            XtraMessageBox.Show("正在开发中,敬请期待!");
            var workingHelper = GetWorkingHelper();
            if (!workingHelper.Initialized)
            {
                TipFormHelper.ShowError("工况计算失败!");
                return;
            }
            var dlg = new HydroSingleWorkingLossStatisticsDlg();
            dlg.SetBindingData(workingHelper.HydroInfo, workingHelper.CalcuResult);
            dlg.ShowDialog();
        }
        #endregion
        //综合分析
        private async void barBtnWorkingAnaly_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (_visual == null)
            {
                TipFormHelper.ShowWarn("请选择构件后重试!");
                return;
            }
            HydroVisualInfo visual = _visual;
            if (_visual is HydroLinkInfo linkInfo)
            {
                var visualListHelper = GetVisualListHelper();
                visual = visualListHelper.GetVisual(linkInfo.StartCode);
            }
            var monitorHelper = GetMonitorHelper();
            var allMonitorList = await monitorHelper.Get();
            var workingHelper = GetWorkingHelper();
            if (!workingHelper.Initialized)
            {
                TipFormHelper.ShowWarn("工况计算失败!");
                return;
            }
            var dlg = new SimulationSingleWorkingAnalyDlg();
            dlg.SetBindingData(workingHelper.HydroInfo, allMonitorList, workingHelper.Working, workingHelper.CalcuResult, visual);
            dlg.ShowDialog();
        }
        #endregion