Shuxia Ning
2024-11-11 750b85dc4c5562b9c0dc9b8c463e5cc5f0ad2553
WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/04-scheme/01-add/AddXhsSchemeDlg.cs
@@ -13,10 +13,10 @@
            this.gridView2.SetNormalView();
            this.gridView2.OptionsView.EnableAppearanceOddRow = false;   // 使能 // 和和上面绑定 同时使用有效  
            this.gridView2.OptionsView.EnableAppearanceEvenRow = false;
            this.gridView1.OptionsView.ShowIndicator = false;
            this.gridView2.OptionsView.ShowIndicator = false;
            foreach (var page in this.tabPane1.Pages)
            {
                if (page.Controls[0] is ISetSchemeParterList ctrl)
@@ -24,8 +24,8 @@
                    ctrl.ShowFindPanel = false;
                    ctrl.HydroClickEvent += async (parter) =>
                    {
                        _selectedParter = parter;
                        await _bimfaceCtrl?.ZoomAndSelectComponent(_selectedParter.Code);
                        _selected_parter = parter;
                        await _bimfaceCtrl?.ZoomAndSelectComponent(_selected_parter.Code);
                    };
                    ctrl.HydroRecordChangedEvent += (record) =>
                    {
@@ -39,16 +39,15 @@
                }
            }
        }
        private HStation.Vmo.XhsProjectVmo _project = null;//项目
        private HStation.Vmo.XhsProjectSiteVmo _projectSite = null;//项目站
        private Yw.Model.HydroModelInfo _hydroInfo = null;//水力信息
        private Yw.Model.HydroModelInfo _hydroInfo_init = null;//初始 水力信息
        private HStation.Vmo.XhsProjectSiteVmo _project_site = null;//项目站
        private Yw.Model.HydroModelInfo _hydro_info = null;//水力信息
        private Yw.Model.HydroModelInfo _hydro_info_init = null;//初始 水力信息
        private Yw.Model.HydroParterInfo _selectedParter = null; //选择构件
        private Yw.Model.HydroParterInfo _selected_parter = null; //选择构件
        private List<SetSchemeParterRecord> _set_record_list = null;
        /// <summary>
@@ -57,8 +56,8 @@
        public async Task SetBindingData
            (
                HStation.Vmo.XhsProjectVmo project,
                HStation.Vmo.XhsProjectSiteVmo projectSite,
                Yw.Model.HydroModelInfo hydroInfo
                HStation.Vmo.XhsProjectSiteVmo project_site,
                Yw.Model.HydroModelInfo hydro_info
            )
        {
            if (project == null)
@@ -66,25 +65,107 @@
                return;
            }
            _project = project;
            _projectSite = projectSite;
            _hydroInfo_init = hydroInfo;
            _project_site = project_site;
            _hydro_info_init = hydro_info;
            _set_record_list = new List<SetSchemeParterRecord>();
            if (_projectSite == null)
            if (_project_site == null)
            {
                _projectSite = await BLLFactory<HStation.BLL.XhsProjectSite>.Instance.GetDefaultByProjectID(_project.ID);
                _project_site = await BLLFactory<HStation.BLL.XhsProjectSite>.Instance.GetDefaultByProjectID(_project.ID);
            }
            if (_hydroInfo_init == null)
            if (_hydro_info_init == null)
            {
                var hydroRelation = await BLLFactory<Yw.BLL.HydroModelRelation>.Instance
                    .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, _projectSite.ID, HStation.Xhs.Purpose.Simulation);
                _hydroInfo_init = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.GetByID(hydroRelation.ModelID);
            }
                    .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, _project_site.ID, HStation.Xhs.Purpose.Simulation);
                _hydro_info_init = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.GetByID(hydroRelation.ModelID);
            }
            this.setSchemeParterRecordBindingSource.DataSource = _set_record_list;
            this.setSchemeParterRecordBindingSource.ResetBindings(false);
            LoadData();
            ShowBimfaceCtrl();
            SetBindingData();
            ShowBimfaceCtrl();
            FastShowHidden(false);
            InitialSchemeType();
            await InitialFlags();
        }
        //初始化文件格式
        private void InitialSchemeType()
        {
            this.imgCmbSchemeType.Properties.BeginUpdate();
            this.imgCmbSchemeType.Properties.Items.Clear();
            this.imgCmbSchemeType.Properties.Items.AddEnum(typeof(HStation.Xhs.eSchemeType), false);
            this.imgCmbSchemeType.EditValue = eSchemeType.Common;
            this.imgCmbSchemeType.Properties.EndUpdate();
        }
        //初始化标签
        private async Task InitialFlags()
        {
            var allFlagList = await BLLFactory<Yw.BLL.SysFlag>.Instance.GetBySysType(HStation.Xhs.DataType.XhsScheme);
            var allFlagNameList = allFlagList?.Select(x => x.Name).ToList();
            this.setFlagsEditCtrl1.SetBindingData(allFlagNameList, null);
        }
        private void SetBindingData(List<SetSchemeParterRecord> set_record_list = null)
        {
            _hydro_info = _hydro_info_init.Adapt<Yw.Model.HydroModelInfo, Yw.Model.HydroModelInfo>();
            if (set_record_list != null && set_record_list.Any())
            {
                foreach (var item in set_record_list)
                {
                    switch (item.Catalog)
                    {
                        case Yw.Hydro.ParterCatalog.Pump:
                            {
                                var vm = item.MatchingModel as PumpMatchingViewModel;
                                var bol = AssetsMatchingParasHelper.Apply(_hydro_info, vm);
                            }
                            break;
                        case Yw.Hydro.ParterCatalog.Valve:
                            {
                                var vm = item.MatchingModel as ValveMatchingViewModel;
                                var bol = AssetsMatchingParasHelper.Apply(_hydro_info, vm);
                            }
                            break;
                        case Yw.Hydro.ParterCatalog.Pipe:
                            {
                                var vm = item.MatchingModel as PipeMatchingViewModel;
                                var bol = AssetsMatchingParasHelper.Apply(_hydro_info, vm);
                            }
                            break;
                        default:
                            break;
                    }
                }
            }
            this.setSchemePumpListCtrl1.SetBindingData(_hydro_info);
            this.setSchemeValveListCtrl1.SetBindingData(_hydro_info);
            this.setSchemePipeListCtrl1.SetBindingData(_hydro_info);
        }
        //按钮
        private void buttonEdit_ButtonClick(object sender, ButtonPressedEventArgs e)
        {
            if (e.Button.Tag is not string tag)
            {
                return;
            }
            switch (tag)
            {
                case "showhide":
                    {
                        _show_hidden = !_show_hidden;
                        FastShowHidden(_show_hidden);
                    }
                    break;
                default:
                    break;
            }
        }
        #region Bimface
@@ -99,18 +180,18 @@
            {
                _bimfaceCtrl = new XhsProjectSimulationBimfaceCtrl();
                _bimfaceCtrl.Dock = DockStyle.Fill;
                await _bimfaceCtrl.InitialData(_project, _projectSite, () => _hydroInfo);
                await _bimfaceCtrl.InitialData(_project, _project_site, () => _hydro_info);
                _bimfaceCtrl.LoadCompletedEvent += () =>
                {
                    //view加载完成事件
                    if (_hydroInfo == null)
                    if (_hydro_info == null)
                    {
                        return;
                    }
                };
                _bimfaceCtrl.HydroMouseLeftClickEvent += (obj) =>
                {//鼠标左键点击事件
                    if (_hydroInfo == null)
                    if (_hydro_info == null)
                    {
                        return;
                    }
@@ -134,7 +215,30 @@
        #endregion
        #region FastShowHidden
        private bool _show_hidden = false;
        private async void FastShowHidden(bool visible)
        {
            var code_list = _hydro_info.Decorators.Select(x => x.Code).ToList();
            if (code_list == null)
            {
                return;
            }
            if (visible)
            {
                await _bimfaceCtrl?.ShowComponents(code_list);
            }
            else
            {
                await _bimfaceCtrl?.HideComponents(code_list);
            }
        }
        #endregion
        #region GridView
        private void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
@@ -150,51 +254,88 @@
                var row = this.gridView1.GetRow(e.RowHandle) as SetSchemeParterRecord;
                _set_record_list.Remove(row);
                this.setSchemeParterRecordBindingSource.ResetBindings(false);
                LoadData(_set_record_list);
                SetBindingData(_set_record_list);
            }
        }
        private void LoadData( List<SetSchemeParterRecord> set_record_list=null)
        {
            _hydroInfo = _hydroInfo_init.Adapt<Yw.Model.HydroModelInfo, Yw.Model.HydroModelInfo>();
            if (set_record_list != null && set_record_list.Any())
            {
                foreach (var item in set_record_list)
                {
                    switch (item.Catalog)
                    {
                        case Yw.Hydro.ParterCatalog.Pump:
                            {
                                var vm = item.MatchingModel as PumpMatchingViewModel;
                                var bol = AssetsMatchingParasHelper.Apply(_hydroInfo, vm);
                            }
                            break;
                        case Yw.Hydro.ParterCatalog.Valve:
                            {
                                var vm = item.MatchingModel as ValveMatchingViewModel;
                                var bol = AssetsMatchingParasHelper.Apply(_hydroInfo, vm);
                            }
                            break;
                        case Yw.Hydro.ParterCatalog.Pipe:
                            {
                                var vm = item.MatchingModel as PipeMatchingViewModel;
                                var bol = AssetsMatchingParasHelper.Apply(_hydroInfo, vm);
                            }
                            break;
                        default:
                            break;
                    }
        #endregion
        private bool Verify()
        {
            this.dxErrorProvider1.ClearErrors();
            if (string.IsNullOrEmpty(this.txtNo.Text))
            {
                this.dxErrorProvider1.SetError(this.txtNo, "必填项");
                return false;
            }
            if (string.IsNullOrEmpty(this.txtName.Text))
            {
                this.dxErrorProvider1.SetError(this.txtName, "必填项");
                return false;
            }
            return true;
        }
        private async void btnSave_Click(object sender, EventArgs e)
        {
            if (_hydro_info == null)
            {
                return;
            }
            if (!Verify())
            {
                return;
            }
            var bll_hydro_model = new Yw.BLL.HydroModel();
            var bll_xhs_scheme = new BLL.XhsScheme();
            var hydro_model_id = await bll_hydro_model.Copy(_hydro_info.ID);
            if (hydro_model_id > 0)
            {
                var xhs_scheme = new Vmo.XhsSchemeVmo();
                xhs_scheme.SiteID = _project_site.ID;
                xhs_scheme.NO = this.txtNo.Text.Trim();
                xhs_scheme.Name = this.txtName.Text.Trim();
                xhs_scheme.SchemeType = eSchemeType.Common;
                xhs_scheme.Paras = null;
                xhs_scheme.Flags = null;
                xhs_scheme.UseStatus = Yw.Model.eUseStatus.Enable;
                var xhs_scheme_id = await bll_xhs_scheme.Insert(xhs_scheme);
                if (xhs_scheme_id < 0)
                {
                    await bll_hydro_model.DeleteByID(hydro_model_id);
                    XtraMessageBox.Show("方案创建失败!");
                    return;
                }
                var hydro_relation = new Yw.Vmo.HydroModelRelationVmo();
                hydro_relation.ObjectType = HStation.Xhs.DataType.XhsScheme;
                hydro_relation.ObjectID = xhs_scheme_id;
                hydro_relation.ModelID = hydro_model_id;
                hydro_relation.Purpose = HStation.Xhs.Purpose.Simulation;
                hydro_relation.Content = null;
                hydro_relation.Description = this.memoDescription.Text.Trim();
                var hydro_relation_id = await BLLFactory<Yw.BLL.HydroModelRelation>.Instance.Insert(hydro_relation);
                if (hydro_relation_id < 1)
                {
                    await bll_hydro_model.DeleteByID(hydro_model_id);
                    await bll_xhs_scheme.DeleteByID(xhs_scheme_id);
                    XtraMessageBox.Show("模型依赖创建失败!");
                    return;
                }
            }
            this.setSchemePumpListCtrl1.SetBindingData(_hydroInfo);
            this.setSchemeValveListCtrl1.SetBindingData(_hydroInfo);
            this.setSchemePipeListCtrl1.SetBindingData(_hydroInfo);
            TipFormHelper.Show(eTipStatus.Succeed, "创建成功!");
            this.Close();
        }
    }
}