using Mapster; namespace HStation.WinFrmUI { public partial class AddXhsSchemeDlg : DevExpress.XtraBars.Ribbon.RibbonForm { public AddXhsSchemeDlg() { InitializeComponent(); this.IconOptions.Icon = Yw.WinFrmUI.GlobalParas.AppIcon; this.ribbon.SetFormStyle(); this.gridView1.SetNormalView(); 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) { ctrl.ShowFindPanel = false; ctrl.HydroClickEvent += async (parter) => { _selected_parter = parter; await _bimfaceCtrl?.ZoomAndSelectComponent(_selected_parter.Code); }; ctrl.HydroRecordChangedEvent += (record) => { _set_record_list.Add(record); this.setSchemeParterRecordBindingSource.ResetBindings(false); }; ctrl.HydroChangedEvent += (parterList) => { }; } } } /// /// /// public event Action ReloadDataEvent; private HStation.Vmo.XhsProjectVmo _project = 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 _selected_parter = null; //选择构件 private List _set_record_list = null; #region Initial //初始化文件格式 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.Instance.GetBySysType(HStation.Xhs.DataType.XhsScheme); var allFlagNameList = allFlagList?.Select(x => x.Name).ToList(); this.setFlagsEditCtrl1.SetBindingData(allFlagNameList, null); } #endregion #region SetBindingData /// /// 绑定数据 /// public async Task SetBindingData ( HStation.Vmo.XhsProjectVmo project, HStation.Vmo.XhsProjectSiteVmo project_site, Yw.Model.HydroModelInfo hydro_info ) { if (project == null) { return; } _project = project; _project_site = project_site; _hydro_info_init = hydro_info; _set_record_list = new List(); if (_project_site == null) { _project_site = await BLLFactory.Instance.GetDefaultByProjectID(_project.ID); } if (_hydro_info_init == null) { var hydroRelation = await BLLFactory.Instance .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, _project_site.ID, HStation.Xhs.Purpose.Simulation); _hydro_info_init = await BLLFactory.Instance.GetByID(hydroRelation.ModelID); } this.setSchemeParterRecordBindingSource.DataSource = _set_record_list; this.setSchemeParterRecordBindingSource.ResetBindings(false); SetBindingData(); ShowBimfaceCtrl(); FastShowHidden(false); InitialSchemeType(); await InitialFlags(); } private void SetBindingData(List set_record_list = null) { _hydro_info = _hydro_info_init.Adapt(); 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); } #endregion #region Bimface //bimface控件 private SimulationBimfaceCtrl _bimfaceCtrl = null; //获取 bimface 控件 private async Task GetBimfaceCtrl() { if (_bimfaceCtrl == null) { _bimfaceCtrl = new SimulationBimfaceCtrl(); _bimfaceCtrl.Dock = DockStyle.Fill; await _bimfaceCtrl.InitialData(_project, _project_site); _bimfaceCtrl.LoadCompletedEvent += () => { //view加载完成事件 if (_hydro_info == null) { return; } }; _bimfaceCtrl.HydroMouseLeftClickEvent += (obj) => {//鼠标左键点击事件 if (_hydro_info == null) { return; } }; } return _bimfaceCtrl; } //显示 bimface 控件 private async void ShowBimfaceCtrl() { var bimfaceCtrl = await GetBimfaceCtrl(); this.sidePanel3dModel.Controls.Clear(); this.sidePanel3dModel.Controls.Add(bimfaceCtrl); } private void SelectBimfaceParter() { } #endregion #region Menu #region FastShowHidden //一键显隐 private void barBtnFastShowHidden_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { _show_hidden = !_show_hidden; FastShowHidden(_show_hidden); } 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 #endregion #region Save 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.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; } var scheme = await BLLFactory.Instance.GetByID(xhs_scheme_id); this.ReloadDataEvent?.Invoke(scheme); } TipFormHelper.Show(eTipStatus.Succeed, "创建成功!"); this.Close(); } #endregion #region GridView private void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e) { var row = this.gridView1.GetRow(e.FocusedRowHandle) as SetSchemeParterRecord; this.setSchemeParterRecordItemBindingSource.DataSource = row?.Items; this.setSchemeParterRecordItemBindingSource.ResetBindings(false); } private void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e) { if (e.Column == this.colDelete) { var row = this.gridView1.GetRow(e.RowHandle) as SetSchemeParterRecord; _set_record_list.Remove(row); this.setSchemeParterRecordBindingSource.ResetBindings(false); SetBindingData(_set_record_list); } } #endregion } }