duheng
2024-08-23 b6f84233ce512c9f0f65d550b3892f4ba6c8afa5
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/03-mgr/XhsProjectMgrPage.cs
@@ -2,7 +2,9 @@
using DevExpress.Utils;
using DevExpress.XtraTreeList;
using HStation.WinFrmUI.Xhs;
using System.Data;
using NetTaste;
using System;
using Timer = System.Threading.Timer;
namespace HStation.WinFrmUI
{
@@ -15,6 +17,16 @@
            this.PageTitle.Caption = "项目管理";
            this.PageTitle.HeaderSvgImage = this.svgImg32[0];
            this.PageTitle.SvgImageSize = new Size(24, 24);
            repositoryItemImageComboBox1.Items.AddEnum(typeof(Yw.WinFrmUI.Bimface.eFileStatus));
            var a = typeof(Yw.WinFrmUI.Bimface.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;
        }
        private List<XhsProjectMgrViewModel> _allProjectList = null;
@@ -39,9 +51,18 @@
            {
                foreach (var project in allProjectList)
                {
                    if (await IsHaveBimFace(project.ID))
                    var bimFile = await BimfaceFileStateHelper.IsHaveBimFace(project.ID);
                    if (bimFile != null)
                    {
                        var vm = new XhsProjectMgrViewModel(project, true);
                        //如果文件状态为上传中则进行定时请求刷新状态
                        if (bimFile.FileStatus == 0)
                        {
                            Task.Factory.StartNew(() =>
                            {
                                StartTimer(300, bimFile.ID);
                            });
                        }
                        var vm = new XhsProjectMgrViewModel(project, true, bimFile.FileStatus);
                        _allProjectList.Add(vm);
                    }
                    else
@@ -54,49 +75,34 @@
            this.xhsProjectMgrViewModelBindingSource.DataSource = _allProjectList;
        }
        //查找项目是否存在模型
        private async Task<bool> IsHaveBimFace(long ProjectID)
        //计时器(刷新上传状态)
        public void StartTimer(int intervalMilliseconds, long ID)
        {
            var projectSite = await new BLL.XhsProjectSiteStd().GetDefaultByProjectID(ProjectID);
            if (projectSite == null)
            {
                return false;
            }
            var relation = await new Yw.BLL.BimfaceFileRelationStd()
               .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, projectSite.ID, Yw.Bimface.Purpose.Simulation);
            if (relation == null)
            {
                return false;
            }
            var bimfaceFile = await new Yw.BLL.BimfaceFileStd().GetByID(relation.BimfaceFileID);
            if (bimfaceFile == null)
            {
                return false;
            }
            return true;
            // 创建一个 Timer,它将在给定的时间间隔后触发回调方法
            var timer = new System.Threading.Timer(TimerCallback, ID, Timeout.Infinite, intervalMilliseconds);
            // 启动 Timer
            timer.Change(intervalMilliseconds, intervalMilliseconds);
        }
        //查看bimface模型
        private async void barBtnViewBimface_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        private async void TimerCallback(object state)
        {
            var vm = GetCurrentViewModel();
            if (vm == null)
            var tupleState = (Tuple<long, Timer>)state;
            long iD = tupleState.Item1;
            Timer timer = tupleState.Item2;
            try
            {
                return;
                var stateResult = await BimfaceHelper.GetFileTranslateStatus(iD);
                if (stateResult == 0)
                {
                    this.SetBindingData();
                }
                else
                {
                    timer.Dispose();
                }
            }
            var guid = new PageGuid()
            catch (Exception ex)
            {
                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);
            }
        }
@@ -277,6 +283,35 @@
            {
                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 XhsSchemeMultiMgrPage();
                await page.SetBindingData(vm.ID);
                CreatePage(page, guid);
            }
        }
        //查看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}"
            };
@@ -288,5 +323,34 @@
                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);
            }
        }
    }
}