Shuxia Ning
2024-11-25 d4898c5d7e1bbbbba384a0e29f29c066d6f502a7
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/XhsProjectSimulationSchemeMgrPage.cs
@@ -1,12 +1,7 @@
global using Yw.EPAnet;
using DevExpress.Mvvm.Native;
using DevExpress.Xpo.Helpers;
using DevExpress.XtraRichEdit.Layout;
using DevExpress.XtraSpreadsheet.Commands;
using HStation.WinFrmUI.PhartRelation;
using System.Diagnostics;
using System.Windows.Media;
using System.Windows.Media.Media3D;
using Yw.Pump;
using Yw.Vmo;
using Yw.WinFrmUI.Bimface;
@@ -93,7 +88,7 @@
            {
                _bimfaceCtrl = new XhsProjectSimulationBimfaceCtrl();
                _bimfaceCtrl.Dock = DockStyle.Fill;
                await _bimfaceCtrl.InitialData(_project, _projectSite, () => _hydroInfo);
                await _bimfaceCtrl.InitialData(_project, _projectSite);
                _bimfaceCtrl.LoadCompletedEvent += () =>
                {//view加载完成事件
                    if (_hydroInfo == null)
@@ -108,7 +103,7 @@
                    {
                        return;
                    }
                    _selectedVisual = obj;
                    //_selectedVisual = obj;
                    ShowSelectedProperty();
                };
            }
@@ -179,57 +174,57 @@
            {
                _propertyCtrl = new XhsProjectSimulationPropertyCtrl();
                _propertyCtrl.Dock = DockStyle.Fill;
                _propertyCtrl.InitialData(() => _hydroInfo, () => GetCalcuResultList());
                _propertyCtrl.BlinkLinkParterEvent += async (code, linkCode) =>
                { //强调连接组件
                    if (string.IsNullOrEmpty(code))
                    {
                        return;
                    }
                    if (string.IsNullOrEmpty(linkCode))
                    {
                        return;
                    }
                    if (_hydroInfo == null)
                    {
                        return;
                    }
                    var allVisualList = _hydroInfo.GetAllVisuals();
                    if (allVisualList == null || allVisualList.Count < 1)
                    {
                        return;
                    }
                    var linkParter = allVisualList.Find(x => x.Code == linkCode);
                    if (linkParter == null)
                    {
                        return;
                    }
                    var blinkCodes = new List<string>();
                    if (linkParter.GetType() == typeof(Yw.Model.HydroJunctionInfo))
                    {
                        var allLinkList = _hydroInfo.GetAllLinks();
                        if (allLinkList == null || allLinkList.Count < 1)
                        {
                            return;
                        }
                        var linkList = allLinkList.Where(x => (x.StartCode == linkParter.Code || x.EndCode == linkParter.Code) && x.Code != code).ToList();
                        if (linkList == null || linkList.Count < 1)
                        {
                            return;
                        }
                        blinkCodes.AddRange(linkList.Select(x => x.Code));
                    }
                    else
                    {
                        blinkCodes.Add(linkCode);
                    }
                //_propertyCtrl.InitialData(() => _hydroInfo, () => GetCalcuResultList());
                //_propertyCtrl.BlinkLinkNodeEvent += async (code, linkCode) =>
                //{ //强调连接组件
                //    if (string.IsNullOrEmpty(code))
                //    {
                //        return;
                //    }
                //    if (string.IsNullOrEmpty(linkCode))
                //    {
                //        return;
                //    }
                //    if (_hydroInfo == null)
                //    {
                //        return;
                //    }
                //    var allVisualList = _hydroInfo.GetAllVisuals();
                //    if (allVisualList == null || allVisualList.Count < 1)
                //    {
                //        return;
                //    }
                //    var linkParter = allVisualList.Find(x => x.Code == linkCode);
                //    if (linkParter == null)
                //    {
                //        return;
                //    }
                //    var blinkCodes = new List<string>();
                //    if (linkParter.GetType() == typeof(Yw.Model.HydroJunctionInfo))
                //    {
                //        var allLinkList = _hydroInfo.GetAllLinks();
                //        if (allLinkList == null || allLinkList.Count < 1)
                //        {
                //            return;
                //        }
                //        var linkList = allLinkList.Where(x => (x.StartCode == linkParter.Code || x.EndCode == linkParter.Code) && x.Code != code).ToList();
                //        if (linkList == null || linkList.Count < 1)
                //        {
                //            return;
                //        }
                //        blinkCodes.AddRange(linkList.Select(x => x.Code));
                //    }
                //    else
                //    {
                //        blinkCodes.Add(linkCode);
                //    }
                    await _bimfaceCtrl?.SetBlinkComponents(blinkCodes);
                    await Task.Delay(5000);
                    await _bimfaceCtrl?.ClearBlinkComponents();
                };
                //    await _bimfaceCtrl?.SetBlinkComponents(blinkCodes);
                //    await Task.Delay(5000);
                //    await _bimfaceCtrl?.ClearBlinkComponents();
                //};
                _propertyCtrl.ViewParterEvent += (parter) =>
                _propertyCtrl.HydroViewEvent += (parter) =>
                {
                    if (parter == null)
                    {
@@ -256,11 +251,11 @@
                    //分级属性发生改变
                    //判断当前是否有分级展示,若有则更新分级,最好是更新单个分级
                };
                _propertyCtrl.FlowDirectionPropertyValueChangedEvent += async (parter) =>
                _propertyCtrl.FlowEffectPropertyValueChangedEvent += async (parter) =>
                {
                    //流向属性发生改变
                    //判断流向是否加载,如果加载则更新流向,最好是更新单个流向
                    UpdateFlowEffect(parter);
                    //UpdateFlowEffect(parter);
                    //await _bimfaceCtrl?.UnloadFlowEffectById(parter.Code);
                };
@@ -1060,52 +1055,52 @@
                }
                ShowSelectedProperty();
            };
            dlg.HydroCalcuEvent += async (hydroInfo, workingInfo) =>
            {
                if (_hydroInfo == null)
                {
                    return;
                }
                _hydroInfo.UpdateWorkingInfo(workingInfo);
                //校验
                _checkResult = _hydroInfo.Check();
                if (!_checkResult.Succeed)
                {
                    ShowCheckCtrl();
                    TipFormHelper.ShowWarn("校验失败,请检查后重试");
                    return;
                }
            //dlg.HydroCalcuEvent += async (hydroInfo, workingInfo) =>
            //{
            //    if (_hydroInfo == null)
            //    {
            //        return;
            //    }
            //    _hydroInfo.UpdateWorkingInfo(workingInfo);
            //    //校验
            //    _checkResult = _hydroInfo.Check();
            //    if (!_checkResult.Succeed)
            //    {
            //        ShowCheckCtrl();
            //        TipFormHelper.ShowWarn("校验失败,请检查后重试");
            //        return;
            //    }
                WaitFormHelper.ShowWaitForm(this, "正在计算分析中,请稍候...");
            //    WaitFormHelper.ShowWaitForm(this, "正在计算分析中,请稍候...");
                await Task.Delay(5000);
            //    await Task.Delay(5000);
                var netWork = Yw.Hydro.ParseHelper.ToNetwork(_hydroInfo);
                _calcuResult = netWork.CalcuMinorLoss();
            //    var netWork = Yw.Hydro.ParseHelper.ToNetwork(_hydroInfo);
            //    _calcuResult = netWork.CalcuMinorLoss();
                WaitFormHelper.HideWaitForm();
                if (_calcuResult.Succeed)
                {
                    GetCalcuResultList(false);
                    UpdateVisualViewModelCalcuProperty();
                    UpdateVisualListCtrl();
                    UpdateSelectedProperty();
                    await _bimfaceCtrl?.SetLogicCalcuCustomLabels(_calcuResult);
                    TipFormHelper.ShowSucceed("计算成功!");
                    var codes = _hydroInfo.Pumps.Select(x => x.Code).ToList();
                    await _bimfaceCtrl?.ZoomAndSelectComponents(codes);
                }
                else
                {
                    ShowCalcuFailedCtrl();
                    TipFormHelper.ShowError("计算失败!");
                }
                AutoApplyGrading();
                UpdateVisualListCtrl();
                ShowSelectedProperty();
            };
            dlg.SetBindingData(_hydroInfo);
            //    WaitFormHelper.HideWaitForm();
            //    if (_calcuResult.Succeed)
            //    {
            //        GetCalcuResultList(false);
            //        UpdateVisualViewModelCalcuProperty();
            //        UpdateVisualListCtrl();
            //        UpdateSelectedProperty();
            //        await _bimfaceCtrl?.SetLogicCalcuCustomLabels(_calcuResult);
            //        TipFormHelper.ShowSucceed("计算成功!");
            //        var codes = _hydroInfo.Pumps.Select(x => x.Code).ToList();
            //        await _bimfaceCtrl?.ZoomAndSelectComponents(codes);
            //    }
            //    else
            //    {
            //        ShowCalcuFailedCtrl();
            //        TipFormHelper.ShowError("计算失败!");
            //    }
            //    AutoApplyGrading();
            //    UpdateVisualListCtrl();
            //    ShowSelectedProperty();
            //};
            //dlg.SetBindingData(_hydroInfo);
            dlg.ShowDialog();
        }