From 62f18f31a10fd5597b45151f688e5189eba888fd Mon Sep 17 00:00:00 2001 From: lixiaojun <1287241240@qq.com> Date: 星期二, 06 八月 2024 09:57:50 +0800 Subject: [PATCH] 报错处理 --- WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/04-GeneralProject/ImportXhsProjectHelper.cs | 287 +++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 225 insertions(+), 62 deletions(-) diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/04-GeneralProject/ImportXhsProjectHelper.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/04-GeneralProject/ImportXhsProjectHelper.cs index 2fd887d..86c8112 100644 --- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/04-GeneralProject/ImportXhsProjectHelper.cs +++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/04-GeneralProject/ImportXhsProjectHelper.cs @@ -1,11 +1,15 @@ -锘縩amespace HStation.WinFrmUI +锘縰sing DevExpress.XtraEditors; +using static DevExpress.XtraEditors.XtraInputBox; +using static System.Windows.Forms.VisualStyles.VisualStyleElement.Window; + +namespace HStation.WinFrmUI { /// <summary> /// /// </summary> public class ImportXhsProjectHelper { - private const string _tempFolder = "project-import-temp"; + private const string _tempFolder = "ImportProjectTemp";//瀵煎叆椤圭洰涓存椂鏂囦欢澶� /// <summary> @@ -17,50 +21,95 @@ /// <returns></returns> public static async Task<bool> Import(ImportXhsProjectViewModel vm, Action<string> feedBackMsg, Action<int, int> feedBackProgress) { - #region 鏂囦欢瑙f瀽 - var tempFolderPath = Path.Combine(Yw.Service.ConfigHelper.DataPath, HStation.Settings.XhsParasHelper.Xhs.DataFolder, _tempFolder); - var bol = Yw.FileFolderZipHelper.UnZip(vm.ZipFile, tempFolderPath, null); - if (!bol) - { - feedBackMsg?.Invoke("妯″瀷鏂囦欢瑙f瀽澶辫触"); - return bol; - } + #region 绗竴姝� 涓存椂鏂囦欢澶勭悊锛堣繘搴�5%锛� - var tempDirectoryInfo = new DirectoryInfo(tempFolderPath); - var allFileInfoList = tempDirectoryInfo.GetFiles(); - if (allFileInfoList == null || allFileInfoList.Count() < 1) + feedBackMsg?.Invoke("寮�濮嬪鍏ラ」鐩�..."); + + //涓存椂鏂囦欢澶硅矾寰� + var tempFolder = Path.Combine(Yw.Service.ConfigHelper.DataPath, HStation.Settings.XhsParasHelper.Xhs.DataFolder, _tempFolder); + //濡傛灉瀛樺湪涓存椂鏂囦欢澶癸紝鍒欏垹闄や复鏃舵枃浠跺す鍙婂瓙鐩綍涓庢枃浠� + if (Directory.Exists(tempFolder)) { - feedBackMsg?.Invoke("妯″瀷鏂囦欢瑙f瀽澶辫触"); - return bol; + Directory.Delete(tempFolder, true); } + //鍒涘缓涓存椂鏂囦欢澶� + Directory.CreateDirectory(tempFolder); + + feedBackProgress?.Invoke(100, 5); #endregion - #region 姘村姏妯″瀷 + #region 绗簩姝� 鍘嬬缉鏂囦欢瑙f瀽 锛堣繘搴�10%锛� + feedBackMsg?.Invoke("姝e湪瑙f瀽妯″瀷鏂囦欢..."); + var bol = Yw.FileFolderZipHelper.UnZip(vm.ZipFile, tempFolder, null); + if (!bol) + { + feedBackMsg?.Invoke("妯″瀷鏂囦欢瑙f瀽澶辫触锛侊紒锛�"); + return false; + } + + var tempFolderInfo = new DirectoryInfo(tempFolder); + var allFileInfoList = tempFolderInfo.GetFiles(); + if (allFileInfoList == null || allFileInfoList.Count() < 1) + { + feedBackMsg?.Invoke("妯″瀷鏂囦欢鏍煎紡閿欒锛侊紒锛�"); + return false; + } + + feedBackMsg?.Invoke("妯″瀷鏂囦欢瑙f瀽鎴愬姛銆傘�傘��"); + + feedBackProgress?.Invoke(100, 10); + + #endregion + + #region 绗笁姝� 瑙f瀽姘村姏缁撴瀯鏂囦欢 锛堣繘搴�15%锛� + + feedBackMsg?.Invoke("姝e湪瑙f瀽姘村姏缁撴瀯鏂囦欢..."); var jsonFileInfo = allFileInfoList.Where(x => x.Extension == ".json").FirstOrDefault(); if (jsonFileInfo == null) { - feedBackMsg?.Invoke("姘村姏缁撴瀯鏂囦欢瑙f瀽澶辫触"); + feedBackMsg?.Invoke("姘村姏缁撴瀯鏂囦欢鏍煎紡閿欒锛侊紒锛�"); return false; } var jsonText = File.ReadAllText(jsonFileInfo.FullName); var revitModel = JsonHelper.Json2Object<HStation.Model.RevitModel>(jsonText); - var hydroId = HStation.Hydro.ParseHelper.FromRevit(revitModel); - if (hydroId < 1) + if (revitModel == null) { - feedBackMsg?.Invoke("姘村姏缁撴瀯鏂囦欢瑙f瀽澶辫触"); + feedBackMsg?.Invoke("姘村姏缁撴瀯鏂囦欢鏍煎紡閿欒锛侊紒锛�"); return false; } + var hydroInfo = HStation.Hydro.ParseHelper.FromRevit(revitModel, out string msg); + if (hydroInfo == null) + { + feedBackMsg?.Invoke($"姘村姏缁撴瀯鏂囦欢瑙f瀽澶辫触锛寋msg}锛侊紒锛�"); + return false; + } + + var bllHydroInfo = new Yw.BLL.HydroModelInfo(); + var hydroId = await bllHydroInfo.Save(hydroInfo); + if (hydroId < 1) + { + feedBackMsg?.Invoke("姘村姏缁撴瀯淇℃伅淇濆瓨澶辫触锛侊紒锛�"); + return false; + } + + feedBackMsg?.Invoke("姘村姏缁撴瀯鏂囦欢瑙f瀽鎴愬姛銆傘�傘��"); + + feedBackProgress?.Invoke(100, 15); + + vm.HydroID = hydroId; #endregion - #region 鍒涘缓椤圭洰 + #region 绗洓姝� 鍒涘缓椤圭洰锛堣繘搴� 20%锛� - var bllXhsProject = new BLL.XhsProjectExtensions(); + feedBackMsg?.Invoke("姝e湪鍒涘缓椤圭洰..."); + + var bllXhsProjectExtensions = new Lazy<BLL.XhsProjectExtensions>(() => new BLL.XhsProjectExtensions()); var project = new AddXhsProjectExtensionsInput(); project.NO = vm.NO; @@ -78,22 +127,63 @@ } }; - var projectId = await bllXhsProject.Insert(project); + var projectId = await bllXhsProjectExtensions.Value.Insert(project); if (projectId < 1) { - feedBackMsg?.Invoke("椤圭洰鍒涘缓澶辫触"); + feedBackMsg?.Invoke("椤圭洰鍒涘缓澶辫触锛侊紒锛�"); return false; } - #endregion + feedBackMsg?.Invoke("椤圭洰鍒涘缓鎴愬姛銆傘�傘��"); - #region 鍏宠仈妯″瀷 + vm.ProjectID = projectId; - + feedBackProgress?.Invoke(100, 20); #endregion - #region 鍦板浘浣嶇疆 + #region 绗簲姝� 鍏宠仈姘村姏缁撴瀯妯″瀷锛堣繘搴� 25%锛� + + var bllXhsProjectSite = new BLL.XhsProjectSiteStd(); + var projectSite = await bllXhsProjectSite.GetDefaultByProjectID(projectId); + if (projectSite == null) + { + feedBackMsg?.Invoke("椤圭洰绔欎俊鎭敊璇�..."); + return false; + } + + var projectSiteId = projectSite.ID; + vm.ProjectSiteID = projectSite.ID; + + feedBackMsg?.Invoke("姝e湪鍏宠仈姘村姏缁撴瀯妯″瀷..."); + + var hydroRelation = new Yw.Dto.AddHydroModelRelationInput(); + hydroRelation.ObjectType = HStation.Xhs.DataType.XhsProjectSite; + hydroRelation.ObjectID = projectSiteId; + hydroRelation.ModelID = hydroId; + hydroRelation.Purpose = Yw.Hydro.Purpose.Simulation; + hydroRelation.Content = null; + hydroRelation.Description = null; + + var bllHydroRelation = new Yw.BLL.HydroModelRelation(); + var hydroRelationId = await bllHydroRelation.Insert(hydroRelation); + if (hydroRelationId < 1) + { + feedBackMsg?.Invoke("鍏宠仈姘村姏缁撴瀯妯″瀷澶辫触锛侊紒锛�"); + return false; + } + + vm.HydroRelationID = hydroRelationId; + + feedBackMsg?.Invoke("鍏宠仈姘村姏缁撴瀯妯″瀷鎴愬姛銆傘�傘��"); + + feedBackProgress?.Invoke(100, 25); + + #endregion + + #region 绗叚姝� 璁剧疆鍦板浘浣嶇疆锛堣繘搴� 30%锛� + + feedBackMsg?.Invoke("姝e湪璁剧疆鍦板浘浣嶇疆..."); if (vm.Location != null) { @@ -109,39 +199,55 @@ var mapInfoId = await new Yw.BLL.MapInfo().Insert(mapInfo); if (mapInfoId < 1) { - feedBackMsg?.Invoke("鍦板浘瀹氫綅淇℃伅淇濆瓨澶辫触"); + feedBackMsg?.Invoke("璁剧疆鍦板浘浣嶇疆澶辫触锛侊紒锛�"); } else { - feedBackMsg?.Invoke("淇濆瓨鍦板浘瀹氫綅淇℃伅鎴愬姛"); + vm.MapInfoID = mapInfoId; + feedBackMsg?.Invoke("璁剧疆鍦板浘浣嶇疆鎴愬姛銆傘�傘��"); } } + else + { + feedBackMsg?.Invoke("鏈缃湴鍥句綅缃俊鎭紒锛侊紒"); + } + + + feedBackProgress?.Invoke(100, 30); #endregion - #region 涓婁紶妯″瀷 + #region 绗竷姝� 涓婁紶Revit妯″瀷鏂囦欢锛堣繘搴� 45%锛� + feedBackMsg?.Invoke("姝e湪瑙f瀽Revit妯″瀷鏂囦欢..."); var rvtFileInfo = allFileInfoList.Where(x => x.Extension == ".rvt").FirstOrDefault(); if (rvtFileInfo == null) { - feedBackMsg?.Invoke("Revit妯″瀷鏂囦欢瑙f瀽澶辫触"); - return false; + feedBackMsg?.Invoke("Revit妯″瀷鏂囦欢瑙f瀽澶辫触锛侊紒锛�"); + feedBackMsg?.Invoke("椤圭洰瀵煎叆缁撴潫銆傘�傘��"); + return true; } - var bimfaceId = await Yw.WinFrmUI.BimfaceHelper.UploadFile(rvtFileInfo.FullName); + //var bimfaceId = await Yw.WinFrmUI.BimfaceHelper.UploadFile(rvtFileInfo.FullName);//涓婁紶 + var bimfaceId = 10000870453147; //娴嬭瘯鐢ㄤ緥 if (bimfaceId < 1) { - feedBackMsg?.Invoke("Revit妯″瀷鏂囦欢涓婁紶澶辫触"); - return false; + feedBackMsg?.Invoke("Revit妯″瀷鏂囦欢涓婁紶澶辫触锛侊紒锛�"); + feedBackMsg?.Invoke("椤圭洰瀵煎叆缁撴潫銆傘�傘��"); + return true; } + vm.BimfaceId = bimfaceId; + feedBackMsg?.Invoke("瑙f瀽Revit妯″瀷鏂囦欢鎴愬姛銆傘�傘��"); + + feedBackProgress?.Invoke(100, 45); #endregion - #region 淇濆瓨Bimface + #region 绗叓姝� 淇濆瓨Bimface鏂囦欢 锛堣繘搴� 50%锛� - var bllBimfaceFile = new Yw.BLL.BimfaceFile(); + feedBackMsg?.Invoke("姝e湪淇濆瓨Bimface鏂囦欢..."); var bimfaceFile = new Yw.Dto.AddBimfaceFileInput(); bimfaceFile.BimfaceId = bimfaceId.ToString(); @@ -152,60 +258,117 @@ bimfaceFile.FileSuffix = rvtFileInfo.Extension; bimfaceFile.FileSize = string.Format("{0}MB", System.Math.Ceiling(rvtFileInfo.Length / 1024.0 / 1024.0)); + var bllBimfaceFile = new Yw.BLL.BimfaceFile(); var bimfaceFileId = await bllBimfaceFile.Insert(bimfaceFile); if (bimfaceFileId < 1) { - feedBackMsg?.Invoke("BIMFACE鏂囦欢淇℃伅淇濆瓨澶辫触"); + feedBackMsg?.Invoke("Bimface鏂囦欢淇濆瓨澶辫触锛侊紒锛�"); + feedBackMsg?.Invoke("椤圭洰瀵煎叆缁撴潫銆傘�傘��"); + return true; } - else - { - feedBackMsg?.Invoke("BIMFACE鏂囦欢淇℃伅淇濆瓨鎴愬姛"); - } + vm.BimfaceFileID = bimfaceFileId; + + feedBackMsg?.Invoke("Bimface鏂囦欢淇濆瓨鎴愬姛銆傘�傘��"); + + feedBackProgress?.Invoke(100, 50); #endregion - #region 鍏宠仈Bimface + #region 绗節姝� 鍏宠仈Bimface鏂囦欢锛堣繘搴� 55%锛� - var bllBimfaceRelation = new Yw.BLL.BimfaceFileRelation(); + feedBackMsg?.Invoke("姝e湪鍏宠仈Bimface鏂囦欢..."); var bimfaceRelation = new Yw.Dto.AddBimfaceFileRelationInput(); - bimfaceRelation.ObjectType = HStation.Xhs.DataType.XhsProject; - bimfaceRelation.ObjectID = projectId; + bimfaceRelation.ObjectType = HStation.Xhs.DataType.XhsProjectSite; + bimfaceRelation.ObjectID = projectSiteId; bimfaceRelation.BimfaceFileID = bimfaceFileId; - bimfaceRelation.Purpose = HStation.Xhs.Purpose.Simulation; + bimfaceRelation.Purpose = Yw.Bimface.Purpose.Simulation; bimfaceRelation.Description = vm.Description; + var bllBimfaceRelation = new Yw.BLL.BimfaceFileRelation(); var bimfaceRelationId = await bllBimfaceRelation.Insert(bimfaceRelation); if (bimfaceRelationId < 1) { - feedBackMsg?.Invoke("BIMFACE鍏宠仈澶辫触"); + feedBackMsg?.Invoke("Bimface鏂囦欢鍏宠仈澶辫触锛侊紒锛�"); + feedBackMsg?.Invoke("椤圭洰瀵煎叆缁撴潫銆傘�傘��"); + return true; + } + vm.BimfaceFileRelationID = bimfaceRelationId; + feedBackMsg?.Invoke("Bimface鏂囦欢鍏宠仈鎴愬姛銆傘�傘��"); + feedBackProgress?.Invoke(100, 55); + + #endregion + + #region 绗節姝� 鍙戣捣bimface杞崲锛堣繘搴� 80%锛� + + feedBackMsg?.Invoke("姝e湪杩涜Bimface妯″瀷杞婚噺鍖�..."); + // var bimfaceTranslateStatus = await Yw.WinFrmUI.BimfaceHelper.TranslateRvtFile(bimfaceId);//鍙戣捣杞崲 + var bimfaceTranslateStatus = Yw.BIMFace.eTranslateStatus.Processing;//娴嬭瘯浠g爜 + feedBackProgress?.Invoke(100, 60); + if (bimfaceTranslateStatus != Yw.BIMFace.eTranslateStatus.Success) + { + var dlgResult = XtraMessageBox.Show("Bimface妯″瀷杞婚噺鍖栭渶瑕佷竴瀹氱殑鏃堕棿锛屾槸鍚︾户缁瓑寰咃紵", "璇㈤棶", MessageBoxButtons.YesNo, MessageBoxIcon.Question); + if (dlgResult == DialogResult.Yes) + { + await Yw.WinFrmUI.BimfaceHelper.WaitFileTranslateStatusUntilSuccess(bimfaceId, 3000); + vm.BimfaceConverted = true; + feedBackMsg?.Invoke("Bimface妯″瀷杞婚噺鍖栧畬鎴愩�傘�傘��"); + } + else + { + feedBackMsg?.Invoke("璺宠繃Bimface妯″瀷杞婚噺鍖栫瓑寰呫�傘�傘��"); + } } else { - feedBackMsg?.Invoke("BIMFACE鍏宠仈鎴愬姛"); + vm.BimfaceConverted = true; + feedBackMsg?.Invoke("Bimface妯″瀷杞婚噺鍖栧畬鎴愩�傘�傘��"); } + + feedBackProgress?.Invoke(100, 80); #endregion - #region 鍙戣捣bimface杞崲 + #region 绗崄姝� 鏇存柊Bimface鏂囦欢鐘舵�侊紙杩涘害 90%锛� - var bimfaceTranslateStatus = await Yw.WinFrmUI.BimfaceHelper.TranslateRvtFile(bimfaceId); - if (bimfaceTranslateStatus != Yw.BIMFace.eTranslateStatus.Success) - { - await Yw.WinFrmUI.BimfaceHelper.WaitFileTranslateStatusUntilSuccess(bimfaceId, 3000); - } - - #endregion - - #region 鏇存柊鐘舵�� - + feedBackMsg?.Invoke("姝e湪鏇存柊Bimface鏂囦欢鐘舵��..."); bol = await bllBimfaceFile.UpdateFileStatus(bimfaceFileId, (int)Yw.Bimface.eFileStatus.ConvertSucceed); + if (bol) + { + feedBackMsg?.Invoke("Bimface鏂囦欢鐘舵�佹洿鏂版垚鍔熴�傘�傘��"); + } + else + { + feedBackMsg?.Invoke("Bimface鏂囦欢鐘舵�佹洿鏂板け璐ワ紒锛侊紒"); + feedBackMsg?.Invoke("椤圭洰瀵煎叆缁撴潫銆傘�傘��"); + return true; + } - feedBackMsg?.Invoke("鏂囦欢鐘舵�佹洿鏂�"); + feedBackProgress?.Invoke(100, 90); #endregion + #region 绗崄涓�姝� 椤圭洰鍙戝竷锛堣繘搴� 100%锛� + + feedBackMsg?.Invoke("姝e湪鍙戝竷椤圭洰..."); + var bllXhsProject = new BLL.XhsProject(); + bol = await bllXhsProject.Publish(projectId); + if (!bol) + { + feedBackMsg?.Invoke("椤圭洰鍙戝竷澶辫触..."); + } + else + { + vm.IsPublished = true; + feedBackMsg?.Invoke("椤圭洰鍙戝竷鎴愬姛..."); + } + + feedBackProgress?.Invoke(100, 100); + feedBackMsg?.Invoke("椤圭洰瀵煎叆缁撴潫銆傘�傘��"); return true; + #endregion + + } -- Gitblit v1.9.3