using DevExpress.CodeParser; using DevExpress.Utils; using DevExpress.XtraTreeList; using HStation.WinFrmUI.Xhs; using NetTaste; using System; using Timer = System.Threading.Timer; 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 = this.svgImg32[0]; this.PageTitle.SvgImageSize = new Size(24, 24); this.Load += XhsProjectMgrPage_Load; } private void XhsProjectMgrPage_Load (object sender, EventArgs e) { repositoryItemImageComboBox1.Items.AddEnum(typeof(XhsProjectMgrViewModel.eFileStatus)); var a = typeof(XhsProjectMgrViewModel.eFileStatus); 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 _allProjectList = null; private BLL.XhsProjectExtensions _bll = null; private event Action ImportProjectCompletedEvent = null; /// /// 初始化数据源 /// public override async void InitialDataSource() { base.InitialDataSource(); this.SetBindingData(); } private async void SetBindingData() { _bll = new BLL.XhsProjectExtensions(); var allProjectList = await _bll.GetAll(); _allProjectList = new List(); if (allProjectList != null && allProjectList.Count > 0) { foreach (var project in allProjectList) { var mapinfo = await new Yw.BLL.MapInfo().Get(HStation.Xhs.DataType.XhsProject, project.ID, Yw.Map.Kind.Gaodei, Yw.Map.Purpose.Location); var bimFile = await BimfaceFileStateHelper.IsHaveBimFace(project.ID); if (bimFile != null) { //如果文件状态为上传中则进行定时请求刷新状态 if (bimFile.FileStatus == 0) { Task.Factory.StartNew(() => { StartTimer(300, bimFile.ID); }); } var vm = new XhsProjectMgrViewModel(project, true, bimFile.FileStatus, mapinfo); _allProjectList.Add(vm); } else { var vm = new XhsProjectMgrViewModel(project, false, 8, mapinfo); _allProjectList.Add(vm); } } } this.xhsProjectMgrViewModelBindingSource.DataSource = _allProjectList; } //计时器(刷新上传状态) public void StartTimer(int intervalMilliseconds, long ID) { // 创建一个 Timer,它将在给定的时间间隔后触发回调方法 var timer = new System.Threading.Timer(TimerCallback, ID, Timeout.Infinite, intervalMilliseconds); // 启动 Timer timer.Change(intervalMilliseconds, intervalMilliseconds); } private async void TimerCallback(object state) { var tupleState = (Tuple)state; long iD = tupleState.Item1; Timer timer = tupleState.Item2; try { var stateResult = await BimfaceHelper.GetFileTranslateStatus(iD); if (stateResult == 0) { this.SetBindingData(); } else { timer.Dispose(); } } catch (Exception ex) { } } #region 当前 //获取当前 private XhsProjectMgrViewModel GetCurrentViewModel() { if (_allProjectList == null) { Yw.WinFrmUI.MessageBoxHelper.ShowError("数据初始化错误!"); return null; } if (_allProjectList == null) { Yw.WinFrmUI.MessageBoxHelper.ShowInfo("无数据"); return null; } var vm = this.treeList1.GetCurrentViewModel(_allProjectList); if (vm == null) { Yw.WinFrmUI.MessageBoxHelper.ShowInfo("请选择数据行!"); return null; } return vm; } #endregion 当前 #region 基础操作 //添加 private async void barBtnAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { /* var dlg = new AddProjectDlg(); dlg.ReloadDataEvent += async (rhs, mapinfo) => { var bll = new BLL.XhsProjectExtensions(); var id = await bll.Insert(rhs); if (id > 0) { rhs.ID = id; var vmo = await _bll.GetByID(id); _allProjectList.Add(new XhsProjectMgrViewModel(vmo, false)); this.xhsProjectMgrViewModelBindingSource.ResetBindings(false); if (mapinfo != null) { mapinfo.ObjectID = id; mapinfo.ObjectName = rhs.Name; var mapinfoid = await new Yw.BLL.MapInfo().Insert(mapinfo); if (mapinfoid < 0) { TipFormHelper.ShowError("地图信息添加错误"); } } return true; } return false; }; dlg.ShowDialog(); */ var dlg = new ImportXhsProjectDlg(); dlg.SetBindingData(); if (dlg.ShowDialog() == DialogResult.OK) { var prj = dlg.ViewModel; if (prj.ProjectID == null) return; var vmo = await _bll.GetByID((long)prj.ProjectID); if (vmo == null) { TipFormHelper.ShowError("导入失败!"); return; } else { TipFormHelper.ShowSucceed("导入成功!"); var mapinfo = await new Yw.BLL.MapInfo().Get(HStation.Xhs.DataType.XhsProject, (long)prj.ProjectID, Yw.Map.Kind.Gaodei, Yw.Map.Purpose.Location); var bimFile = await BimfaceFileStateHelper.IsHaveBimFace((long)prj.ProjectID); if (bimFile != null) { _allProjectList.Add(new XhsProjectMgrViewModel(vmo, true, bimFile.FileStatus, mapinfo)); } else { _allProjectList.Add(new XhsProjectMgrViewModel(vmo, false, 8, mapinfo)); } this.xhsProjectMgrViewModelBindingSource.ResetBindings(false); } } } //编辑 private void barBtnEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var currentVm = this.GetCurrentViewModel(); if (currentVm == null) { MessageBoxHelper.ShowWarning("请选择数据行!"); return; } var dlg = new EditProjectDlg(); dlg.SetBindingData(currentVm.ID); dlg.ReloadDataEvent += async (rhs, mapinfo) => { if (await _bll.Update(rhs)) { currentVm.Reset(rhs); this.xhsProjectMgrViewModelBindingSource.ResetBindings(false); if (mapinfo != null) { // mapinfo.ObjectID = id; mapinfo.ObjectName = rhs.Name; var bol = await new Yw.BLL.MapInfo().Update(mapinfo); if (!bol) { TipFormHelper.ShowError("地图信息编辑错误"); } } return true; } return false; }; dlg.ShowDialog(); } //删除 private async void barBtnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var currentVm = GetCurrentViewModel(); if (currentVm == null) { MessageBoxHelper.ShowWarning("请选择数据行!"); return; } if (MessageBoxHelper.IsClickOk($"确认删除数据行?", "提示")) return; var groupresult = await _bll.DeleteByID(currentVm.ID); if (groupresult) { _allProjectList.Remove(currentVm); this.xhsProjectMgrViewModelBindingSource.ResetBindings(false); TipFormHelper.ShowSucceed("删除成功!"); } else { TipFormHelper.ShowSucceed("删除失败!"); return; } } //详细信息 private void barBtnInfo_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { } #endregion 基础操作 private void treeList1_CustomDrawRow(object sender, DevExpress.XtraTreeList.CustomDrawRowEventArgs e) { var a = repositoryItemButtonEdit1.ReadOnly = true; } private async void treeList1_RowCellClick(object sender, RowCellClickEventArgs e) { if (_allProjectList == null || _allProjectList.Count < 1) return; var vm = GetCurrentViewModel(); if (vm == null) { return; } if (e.Column != this.ColViewBimface) return; if (!vm.IsHaveBimface) { TipFormHelper.ShowWarn("请先上传文件再进行操作!"); return; } var guid = new PageGuid() { Modular = Yw.WinFrmUI.PageModular.Bimface, MoudingType = Yw.WinFrmUI.Page.eMoudingType.Tab, Function = Yw.WinFrmUI.PageFunction.ViewSchemeMgr, TagName = $"{vm.ID}" }; if (!IsExistPage(guid, true)) { var page = new XhsProjectSimulationMgrPage(); await page.SetBindingData(vm.ID); CreatePage(page, guid); } } #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.SetBindingData(); } #endregion 更多操作 //查看bimface模型 private async void barBtnViewBimface_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var vm = GetCurrentViewModel(); if (vm == null) { return; } if (!vm.IsHaveBimface) { TipFormHelper.ShowWarn("请先上传文件再进行操作!"); return; } var guid = new PageGuid() { Modular = Yw.WinFrmUI.PageModular.Bimface, MoudingType = Yw.WinFrmUI.Page.eMoudingType.Tab, Function = Yw.WinFrmUI.PageFunction.ViewBimface3d, TagName = $"{vm.ID}" }; if (!IsExistPage(guid, true)) { var page = new ViewXhsProjectBimfacePage(); await page.SetBindingData(vm.ID); CreatePage(page, guid); } } //查看水力模型 private void barBtnViewHydro_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (_allProjectList == null || _allProjectList.Count < 1) return; var vm = GetCurrentViewModel(); if (vm == null) { return; } if (!vm.IsHaveBimface) { TipFormHelper.ShowWarn("请先上传文件再进行操作!"); return; } var guid = new PageGuid() { Modular = "Hydro", MoudingType = Yw.WinFrmUI.Page.eMoudingType.Tab, Function = "ViewModel", }; if (!IsExistPage(guid, true)) { var page = new HydroQ3dViewPage(); page.SetBindingData(vm.ID); CreatePage(page, guid); } } //导入文件 private async void BtnAddBimfaceFile_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var currentVm = this.GetCurrentViewModel(); if (currentVm == null) { MessageBoxHelper.ShowWarning("请选择数据行!"); return; } if (currentVm.ModelState != XhsProjectMgrViewModel.eFileStatus.Noupload) { MessageBoxHelper.ShowWarning("已经存在模型文件!"); return; } var dlg = new ImportXhsProjectFileDlg(); dlg.SetBindingData(currentVm.ID); if (dlg.ShowDialog() == DialogResult.OK) { var prj = dlg.ViewModel; if (prj.ProjectID == null) return; var mapinfo = await new Yw.BLL.MapInfo().Get(HStation.Xhs.DataType.XhsProject, (long)prj.ProjectID, Yw.Map.Kind.Gaodei, Yw.Map.Purpose.Location); var bimFile = await BimfaceFileStateHelper.IsHaveBimFace((long)prj.ProjectID); if (bimFile != null) { currentVm.Reset(currentVm, bimFile.FileStatus); this.xhsProjectMgrViewModelBindingSource.ResetBindings(false); } } } } }