using DevExpress.Utils; using DevExpress.XtraTreeList; namespace HStation.WinFrmUI { public partial class XhsProjectMgrPage : DocumentPage { public XhsProjectMgrPage() { InitializeComponent(); this.treeList1.InitialMultiColSettings(); this.treeList1.Appearance.Row.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Default; this.PageTitle.Caption = "项目管理"; this.PageTitle.HeaderSvgImage = XhsMainSvgImageHelper.Project; this.PageTitle.SvgImageSize = new Size(24, 24); this.Load += XhsProjectMgrPage_Load; } private void XhsProjectMgrPage_Load(object sender, EventArgs e) { repositoryItemImageComboBox1.Items.AddEnum(typeof(eXhsProjectStatus)); repositoryItemImageComboBox1.Items[0].ImageIndex = 0; repositoryItemImageComboBox1.Items[1].ImageIndex = 1; repositoryItemImageComboBox1.Items[2].ImageIndex = 2; repositoryItemImageComboBox1.Items[3].ImageIndex = 3; repositoryItemImageComboBox1.Items[4].ImageIndex = 4; repositoryItemImageComboBox1.Items[5].ImageIndex = 5; repositoryItemImageComboBox1.Items[6].ImageIndex = 6; repositoryItemImageComboBox1.Items[7].ImageIndex = 7; repositoryItemImageComboBox1.Items[8].ImageIndex = 8; } private List _allBindingList = null; /// /// 初始化数据源 /// public override void InitialDataSource() { base.InitialDataSource(); this.barBtnViewBimface.ImageOptions.SvgImage = Yw.WinFrmUI.BimfaceMainSvgImageHelper.Bimface; this.barBtnViewHydro.ImageOptions.SvgImage = Yw.WinFrmUI.HydroMainSvgImageHelper.Hydro; this.barBtnSetMap.ImageOptions.SvgImage = XhsMainSvgImageHelper.Map; InitialData(); } //初始化数据 private async void InitialData() { var overlay = this.ShowOverlay(); _allBindingList = new List(); var allProjectList = await BLLFactory.Instance.GetAll(); if (allProjectList != null && allProjectList.Count > 0) { foreach (var project in allProjectList) { var mapInfo = await BLLFactory.Instance .Get(HStation.Xhs.DataType.XhsProject, project.ID, Yw.Map.Kind.Gaodei, Yw.Map.Purpose.Location); Yw.Vmo.BimfaceFileVmo bimfaceFile = null; var projectSite = project.SiteList?.FirstOrDefault(); if (projectSite != null) { var bimfaceFileRelation = await BLLFactory.Instance .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, projectSite.ID, HStation.Xhs.Purpose.Simulation); ; if (bimfaceFileRelation != null) { bimfaceFile = await BLLFactory.Instance .GetByID(bimfaceFileRelation.BimfaceFileID); } } var vm = new XhsProjectMgrViewModel(project, mapInfo, bimfaceFile); _allBindingList.Add(vm); } } this.xhsProjectMgrViewModelBindingSource.DataSource = _allBindingList; this.xhsProjectMgrViewModelBindingSource.ResetBindings(false); overlay.Close(); } /// /// 刷新数据 /// public override void RefreshData() { base.RefreshData(); InitialData(); } #region 当前 //获取当前 private XhsProjectMgrViewModel GetCurrentViewModel() { if (_allBindingList == null) { TipFormHelper.ShowError("数据初始化错误!"); return null; } if (_allBindingList.Count < 1) { TipFormHelper.ShowWarn("无数据!"); return null; } var vm = this.treeList1.GetCurrentViewModel(_allBindingList); if (vm == null) { TipFormHelper.ShowWarn("请选择数据行!"); return null; } return vm; } #endregion #region 基础操作 //导入项目 private void barBtnImport_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (_allBindingList == null) { TipFormHelper.ShowError("数据初始化失败!"); return; } var dlg = new ImportXhsProjectDlg(); dlg.SetBindingData(); if (dlg.ShowDialog() == DialogResult.OK) { var viewModel = dlg.ViewModel; var vm = new XhsProjectMgrViewModel(viewModel.Project, viewModel.MapInfo, viewModel.BimfaceFile); _allBindingList.Add(vm); this.treeList1.RefreshDataSource(); } } //上传模型 private void barBtnUploadBimface_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var vm = GetCurrentViewModel(); if (vm == null) { return; } if (vm.BimfaceFile != null) { TipFormHelper.ShowWarn("模型已上传,不能重复上传!"); return; } var dlg = new ImportXhsProjectDlg(); dlg.SetBindingData(vm.Project, vm.MapInfo); if (dlg.ShowDialog() == DialogResult.OK) { var viewModel = dlg.ViewModel; var project = viewModel.Project; if (project == null) { return; } if (project.ID < 1) { return; } var mapInfo = viewModel.MapInfo; if (mapInfo != null) { if (mapInfo.ID < 1) { mapInfo = null; } } var bimfaceFile = viewModel.BimfaceFile; if (bimfaceFile != null) { if (bimfaceFile.ID < 1) { bimfaceFile = null; } } vm.Reset(project, mapInfo, bimfaceFile); this.treeList1.RefreshDataSource(); } } //编辑 private void barBtnEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var vm = GetCurrentViewModel(); if (vm == null) { return; } var dlg = new EditXhsProjectDlg(); dlg.ReloadDataEvent += (project) => { vm.Reset(project, vm.MapInfo, vm.BimfaceFile); this.treeList1.RefreshNode(this.treeList1.FocusedNode); }; dlg.SetBindingData(vm.Project); dlg.ShowDialog(); } //删除 private async void barBtnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var vm = this.treeList1.GetCurrentViewModel(_allBindingList); if (vm == null) { TipFormHelper.ShowWarn("请选择项目!"); return; } var result = XtraMessageBox.Show("是否确认删除此项目?", "询问", MessageBoxButtons.YesNo) == DialogResult.Yes; if (!result) { return; } if (vm.Project.SiteList != null && vm.Project.SiteList.Count > 0) { foreach (var projectSite in vm.Project.SiteList) { var allSchemeList = await BLLFactory.Instance.GetBySiteID(projectSite.ID); if (allSchemeList != null && allSchemeList.Count > 0) { foreach (var scheme in allSchemeList) { var schemeRelation = await BLLFactory.Instance .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsScheme, scheme.ID, HStation.Xhs.Purpose.Simulation); if (schemeRelation != null) { if (!await BLLFactory.Instance.DeleteByID(schemeRelation.ModelID)) { TipFormHelper.ShowError("项目方案模型删除失败,请重试!"); return; } } if (!await BLLFactory.Instance.DeleteByID(scheme.ID)) { TipFormHelper.ShowError("项目方案删除失败,请重试!"); return; } } } var bimfaceFileRelation = await BLLFactory.Instance .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, projectSite.ID, HStation.Xhs.Purpose.Simulation); if (bimfaceFileRelation != null) { if (!await BLLFactory.Instance.DeleteAllByID(bimfaceFileRelation.ID)) { TipFormHelper.ShowError("项目三维模型删除失败,请重试!"); return; } } var hydroRelation = await BLLFactory.Instance .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, projectSite.ID, HStation.Xhs.Purpose.Simulation); if (hydroRelation != null) { if (!await BLLFactory.Instance.DeleteByID(hydroRelation.ModelID)) { TipFormHelper.ShowError("项目模型删除失败,请重试!"); return; } } if (!await BLLFactory.Instance.DeleteByID(projectSite.ID)) { TipFormHelper.ShowError("项目站删除失败,请重试!"); return; } } } if (vm.MapInfo != null) { if (!await BLLFactory.Instance.DeleteByObjectTypeAndObjectID(HStation.Xhs.DataType.XhsProject, vm.Project.ID)) { TipFormHelper.ShowError("项目地图位置删除失败,请重试!"); return; } } var bol = await BLLFactory.Instance.DeleteByID(vm.Project.ID); if (!bol) { TipFormHelper.ShowError("项目删除失败,请重试!"); return; } _allBindingList.Remove(vm); this.xhsProjectMgrViewModelBindingSource.ResetBindings(false); TipFormHelper.ShowSucceed("项目删除成功!"); } //地图 private void barBtnSetMap_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var vm = GetCurrentViewModel(); if (vm == null) { return; } var dlg = new SetXhsProjectMapDlg(); dlg.ReloadDataEvent += (project, mapInfo) => { vm.Reset(project, mapInfo, vm.BimfaceFile); this.treeList1.RefreshNode(this.treeList1.FocusedNode); }; dlg.SetBindingData(vm.Project, vm.MapInfo); dlg.ShowDialog(); } //详细信息 private void barBtnInfo_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var vm = GetCurrentViewModel(); if (vm == null) { return; } var dlg = new ViewXhsProjectDlg(); dlg.SetBindingData(vm.Project); dlg.ShowDialog(); } #endregion #region 模型 //查看bimface模型 private void barBtnViewBimface_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var vm = GetCurrentViewModel(); if (vm == null) { return; } if (vm.BimfaceFile == null) { TipFormHelper.ShowWarn("请先上传文件再进行操作!"); return; } if (vm.ModelStatus < eXhsProjectStatus.UploadSucceed) { TipFormHelper.ShowWarn("请先上传文件再进行操作!"); return; } if (vm.ModelStatus < eXhsProjectStatus.ConvertSucceed) { TipFormHelper.ShowWarn("模型正在轻量化,请稍后重试!"); return; } var guid = new PageGuid() { Modular = XhsFunctionHelper.Modular, MoudingType = Yw.WinFrmUI.Page.eMoudingType.Tab, Function = XhsFunctionHelper.ProjectBimfaceView, TagName = $"{vm.ID}" }; if (!IsExistPage(guid, true)) { var page = new XhsProjectBimfaceViewPage(); page.SetBindingData(vm.Project); CreatePage(page, guid); } } //查看水力模型 private void barBtnViewHydro_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var vm = GetCurrentViewModel(); if (vm == null) { return; } if (vm.BimfaceFile == null) { TipFormHelper.ShowWarn("请先上传文件再进行操作!"); return; } if (vm.ModelStatus < eXhsProjectStatus.UploadSucceed) { TipFormHelper.ShowWarn("请先上传文件再进行操作!"); return; } if (vm.ModelStatus < eXhsProjectStatus.ConvertSucceed) { TipFormHelper.ShowWarn("模型正在轻量化,请稍后重试!"); return; } var guid = new PageGuid() { Modular = XhsFunctionHelper.Modular, MoudingType = Yw.WinFrmUI.Page.eMoudingType.Tab, Function = XhsFunctionHelper.ProjectQ3dView, TagName = $"{vm.ID}" }; if (!IsExistPage(guid, true)) { var page = new XhsProjectL3d2ViewPage(); page.SetBindingData(vm.Project); CreatePage(page, guid); } } #endregion #region 更多操作 //全部展开 private void barBtnExpandAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { this.treeList1.ExpandAll(); } //全部折叠 private void barBtnCollpseAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { this.treeList1.CollapseAll(); } /// /// 树线 /// private void barCkTreeLine_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { this.treeList1.OptionsView.ShowTreeLines = this.barCkTreeLine.Checked ? DefaultBoolean.True : DefaultBoolean.False; } //查询 private void barBtnSearch_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { this.treeList1.OptionsFind.AlwaysVisible = !this.treeList1.OptionsFind.AlwaysVisible; } //刷新 private void barBtnRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { this.RefreshData(); } #endregion #region 树事件 //模拟 private void treeList1_RowCellClick(object sender, RowCellClickEventArgs e) { if (e.Column != this.colSimulation) { return; } var vm = GetCurrentViewModel(); if (vm == null) { return; } if (vm.BimfaceFile == null) { TipFormHelper.ShowWarn("请先上传文件再进行操作!"); return; } if (vm.ModelStatus < eXhsProjectStatus.UploadSucceed) { TipFormHelper.ShowWarn("请先上传文件再进行操作!"); return; } if (vm.ModelStatus < eXhsProjectStatus.ConvertSucceed) { TipFormHelper.ShowWarn("模型正在轻量化,请稍后重试!"); return; } var guid = new PageGuid() { Modular = XhsFunctionHelper.Modular, MoudingType = Yw.WinFrmUI.Page.eMoudingType.Tab, Function = XhsFunctionHelper.ProjectSimulation, TagName = $"{vm.ID}" }; if (!IsExistPage(guid, true)) { var page = new XhsProjectSimulationMgrPage(); page.SetBindingData(vm.Project); CreatePage(page, guid); } } #endregion } }