Shuxia Ning
2025-01-14 0f99d4d12f2eae29bbe343f4b3131f2faeccda5d
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/03-mgr/XhsProjectMgrPage.cs
@@ -1,7 +1,5 @@
using DevExpress.Utils;
using DevExpress.XtraTreeList;
using HStation.WinFrmUI.Xhs;
using Timer = System.Threading.Timer;
namespace HStation.WinFrmUI
{
@@ -13,7 +11,7 @@
            this.treeList1.InitialMultiColSettings();
            this.treeList1.Appearance.Row.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Default;
            this.PageTitle.Caption = "项目管理";
            this.PageTitle.HeaderSvgImage = this.svgImg32[0];
            this.PageTitle.HeaderSvgImage = XhsMainSvgImageHelper.Project;
            this.PageTitle.SvgImageSize = new Size(24, 24);
            this.Load += XhsProjectMgrPage_Load;
        }
@@ -34,16 +32,15 @@
        private List<XhsProjectMgrViewModel> _allBindingList = null;
        private BLL.XhsProjectExtensions _bll = null;
        private event Action ImportProjectCompletedEvent = null;
        /// <summary>
        /// 初始化数据源
        /// </summary>
        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();
        }
@@ -80,101 +77,126 @@
            overlay.Close();
        }
        /// <summary>
        /// 刷新数据
        /// </summary>
        public override void RefreshData()
        {
            base.RefreshData();
            InitialData();
        }
        #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;
            return default;
            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 当前
        #endregion
        #region 基础操作
        //添加
        private void barBtnAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        //导入项目
        private void barBtnImport_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            //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);
            //    }
            //}
            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 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();
            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();
        }
        //删除
@@ -204,7 +226,7 @@
                                .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsScheme, scheme.ID, HStation.Xhs.Purpose.Simulation);
                            if (schemeRelation != null)
                            {
                                if (!await BLLFactory<Yw.BLL.HydroModelRelation>.Instance.DeleteAllByID(schemeRelation.ID))
                                if (!await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.DeleteByID(schemeRelation.ModelID))
                                {
                                    TipFormHelper.ShowError("项目方案模型删除失败,请重试!");
                                    return;
@@ -231,7 +253,7 @@
                        .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, projectSite.ID, HStation.Xhs.Purpose.Simulation);
                    if (hydroRelation != null)
                    {
                        if (!await BLLFactory<Yw.BLL.HydroModelRelation>.Instance.DeleteAllByID(hydroRelation.ID))
                        if (!await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.DeleteByID(hydroRelation.ModelID))
                        {
                            TipFormHelper.ShowError("项目模型删除失败,请重试!");
                            return;
@@ -266,49 +288,122 @@
            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 基础操作
        #endregion
        private void treeList1_CustomDrawRow(object sender, DevExpress.XtraTreeList.CustomDrawRowEventArgs e)
        #region 模型
        //查看bimface模型
        private void barBtnViewBimface_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            var a = repositoryItemButtonEdit1.ReadOnly = true;
            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 async void treeList1_RowCellClick(object sender, RowCellClickEventArgs e)
        //查看水力模型
        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 (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}"
            //};
            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;
            }
            //if (!IsExistPage(guid, true))
            //{
            //    var page = new XhsProjectSimulationMgrPage();
            //    await page.SetBindingData(vm.ID);
            //    CreatePage(page, guid);
            //}
            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 XhsProjectQ3dViewPage();
                page.SetBindingData(vm.Project);
                CreatePage(page, guid);
            }
        }
        #endregion
        #region 更多操作
@@ -341,99 +436,60 @@
        //刷新
        private void barBtnRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            // this.SetBindingData();
            this.RefreshData();
        }
        #endregion 更多操作
        #endregion
        //查看bimface模型
        private async void barBtnViewBimface_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        #region 树事件
        //模拟
        private void treeList1_RowCellClick(object sender, RowCellClickEventArgs 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 (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 ViewXhsProjectBimfacePage();
            //    await page.SetBindingData(vm.ID);
            //    CreatePage(page, guid);
            //}
            if (!IsExistPage(guid, true))
            {
                var page = new XhsProjectSimulationMgrPage();
                page.SetBindingData(vm.Project);
                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);
            // }
        }
        #endregion
        //导入文件
        private 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);
            //    }
            //}
        }
    }