lixiaojun
2024-12-05 fc818ac66ff6b30f40252fcc28b92970d62a765a
WinFrmUI/HStation.WinFrmUI.Xhs.Core/02-project/01-import/00-core/ImportXhsProjectHelper.cs
@@ -2,6 +2,7 @@
using DevExpress.XtraEditors;
using HStation.Model;
using HStation.Vmo;
using Microsoft.Extensions.DependencyInjection;
using static DevExpress.XtraEditors.XtraInputBox;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Window;
@@ -46,35 +47,40 @@
            #region 第二步 创建项目(进度 10%)
            feedBackMsg?.Invoke("正在创建项目...", Color.Black);
            var project = new Vmo.XhsProjectExtensionsVmo();
            project.NO = vm.NO;
            project.Name = vm.Name;
            project.Address = vm.Address;
            project.Customer = vm.Customer;
            project.Flags = vm.Flags;
            project.TagName = vm.TagName;
            project.Description = vm.Description;
            project.SiteList = new List<XhsProjectSiteVmo>()
             {
                    new XhsProjectSiteVmo()
                     {
                            Name=vm.Name,
                            Description=vm.Description
                     }
             };
            var projectId = await BLLFactory<HStation.BLL.XhsProjectExtensions>.Instance.Insert(project);
            if (projectId < 1)
            //尚未创建项目
            if (vm.Project == null)
            {
                feedBackMsg?.Invoke("项目创建失败!!!", Color.Red);
                return false;
                feedBackMsg?.Invoke("正在创建项目...", Color.Black);
                var project = new Vmo.XhsProjectExtensionsVmo();
                project.NO = vm.NO;
                project.Name = vm.Name;
                project.Address = vm.Address;
                project.Customer = vm.Customer;
                project.Flags = vm.Flags;
                project.TagName = vm.TagName;
                project.Description = vm.Description;
                project.SiteList = new List<XhsProjectSiteVmo>()
                {
                        new XhsProjectSiteVmo()
                         {
                                Name=vm.Name,
                                Description=vm.Description
                         }
                };
                var projectId = await BLLFactory<HStation.BLL.XhsProjectExtensions>.Instance.Insert(project);
                if (projectId < 1)
                {
                    feedBackMsg?.Invoke("项目创建失败!!!", Color.Red);
                    return false;
                }
                vm.ProjectID = projectId;
                vm.Project = await BLLFactory<HStation.BLL.XhsProjectExtensions>.Instance.GetByID(projectId);
                vm.ProjectSiteID = vm.Project.SiteList.FirstOrDefault().ID;
                feedBackMsg?.Invoke("项目创建成功。。。", Color.Green);
            }
            feedBackMsg?.Invoke("项目创建成功。。。", Color.Green);
            vm.ProjectID = projectId;
            feedBackProgress?.Invoke(100, 10);
@@ -82,33 +88,37 @@
            #region 第三步 设置地图位置(进度 20%)
            feedBackMsg?.Invoke("正在设置地图位置...", Color.Black);
            if (vm.Location != null)
            if (vm.MapInfo != null)
            {
                var mapInfo = new Yw.Vmo.MapInfoVmo();
                mapInfo.ObjectType = HStation.Xhs.DataType.XhsProject;
                mapInfo.ObjectID = projectId;
                mapInfo.ObjectName = project.Name;
                mapInfo.Purpose = Yw.Map.Purpose.Location;
                mapInfo.Kind = Yw.Map.Kind.Gaodei;
                mapInfo.Shape = Yw.Map.Shape.Marker;
                mapInfo.Position = vm.Location.ToJson();
                feedBackMsg?.Invoke("正在设置地图位置...", Color.Black);
                var mapInfoId = await BLLFactory<Yw.BLL.MapInfo>.Instance.Insert(mapInfo);
                if (mapInfoId < 1)
                if (vm.Location != null)
                {
                    feedBackMsg?.Invoke("设置地图位置失败!!!", Color.Red);
                    var mapInfo = new Yw.Vmo.MapInfoVmo();
                    mapInfo.ObjectType = HStation.Xhs.DataType.XhsProject;
                    mapInfo.ObjectID = vm.ProjectID.Value;
                    mapInfo.ObjectName = vm.Project.Name;
                    mapInfo.Purpose = Yw.Map.Purpose.Location;
                    mapInfo.Kind = Yw.Map.Kind.Gaodei;
                    mapInfo.Shape = Yw.Map.Shape.Marker;
                    mapInfo.Position = vm.Location.ToJson();
                    var mapInfoId = await BLLFactory<Yw.BLL.MapInfo>.Instance.Insert(mapInfo);
                    if (mapInfoId < 1)
                    {
                        feedBackMsg?.Invoke("设置地图位置失败!!!", Color.Red);
                    }
                    else
                    {
                        vm.MapInfoID = mapInfoId;
                        vm.MapInfo = await BLLFactory<Yw.BLL.MapInfo>.Instance.GetByID(mapInfoId);
                        feedBackMsg?.Invoke("设置地图位置成功。。。", Color.Green);
                    }
                }
                else
                {
                    vm.MapInfoID = mapInfoId;
                    feedBackMsg?.Invoke("设置地图位置成功。。。", Color.Green);
                    feedBackMsg?.Invoke("未设置地图位置信息!!!", Color.Red);
                }
            }
            else
            {
                feedBackMsg?.Invoke("未设置地图位置信息!!!", Color.Red);
            }
            feedBackProgress?.Invoke(100, 20);
@@ -196,19 +206,6 @@
                                        feedBackMsg?.Invoke($"构件类型:{revitParter.Catalog},构件编码:{revitParter.Id},构件属性:{revitParterPropStatus.PropName},错误:{revitParterPropStatus.StatusInfo} ", Color.Red);
                                    }
                                    break;
                                case Revit.ePropStatus.Lack:
                                    {
                                        //feedBackMsg?.Invoke($"构件编码:{revitParter.Id},构件属性:{revitParterPropStatus.PropName},缺省:{revitParterPropStatus.StatusInfo} ", Color.Gray);
                                    }
                                    break;
                                case Revit.ePropStatus.Abnormal:
                                    {
                                        //feedBackMsg?.Invoke($"构件编码:{revitParter.Id},构件属性:{revitParterPropStatus.PropName},异常:{revitParterPropStatus.StatusInfo} ", Color.Orange);
                                    }
                                    break;
                                default: break;
                            }
                        }
@@ -235,10 +232,10 @@
            }
            feedBackMsg?.Invoke("正在进行产品匹配...", Color.Black);
            var matchingParas = AssetsMatchingParasHelper.Create(hydroInfo, null);
            var matchingParas = Yw.WinFrmUI.HydroMatchingHelper.Create(hydroInfo);
            if (AssetsMatchingHelper.Matching(matchingParas, out string error))
            {
                if (AssetsMatchingParasHelper.Apply(hydroInfo, matchingParas))
                if (Yw.WinFrmUI.HydroMatchingHelper.Apply(hydroInfo, matchingParas))
                {
                    feedBackMsg?.Invoke("产品匹配完成。。。", Color.Green);
                }
@@ -251,6 +248,28 @@
            {
                feedBackMsg?.Invoke("产品匹配失败!!!", Color.Red);
            }
            feedBackMsg?.Invoke("正在进行管网修复...", Color.Black);
            if (hydroInfo.RepairLinksDirection(out msg))
            {
                feedBackMsg?.Invoke(msg, Color.Green);
            }
            else
            {
                feedBackMsg?.Invoke(msg, Color.Red);
            }
            feedBackMsg?.Invoke("正在进行管网参数修复...", Color.Black);
            hydroInfo.RepairParas(out msg);
            if (string.IsNullOrEmpty(msg))
            {
                feedBackMsg?.Invoke("管网参数修复完成。。。", Color.Green);
            }
            else
            {
                feedBackMsg?.Invoke(msg, Color.Red);
            }
            feedBackMsg?.Invoke("正在保存水力结构信息...", Color.Black);
            var hydroId = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.Save(hydroInfo);
            if (hydroId < 1)
@@ -270,24 +289,12 @@
            #region 第六步 关联水力结构模型(进度 50%)
            var projectSite = await BLLFactory<HStation.BLL.XhsProjectSite>.Instance.GetDefaultByProjectID(projectId);
            if (projectSite == null)
            {
                feedBackMsg?.Invoke("项目站信息错误...", Color.Red);
                feedBackMsg?.Invoke("项目导入结束。。。", Color.Blue);
                feedBackProgress?.Invoke(100, 100);
                return true;
            }
            var projectSiteId = projectSite.ID;
            vm.ProjectSiteID = projectSite.ID;
            feedBackMsg?.Invoke("正在关联水力结构模型...", Color.Black);
            var hydroRelation = new Yw.Vmo.HydroModelRelationVmo();
            hydroRelation.ObjectType = HStation.Xhs.DataType.XhsProjectSite;
            hydroRelation.ObjectID = projectSiteId;
            hydroRelation.ModelID = hydroId;
            hydroRelation.ObjectID = vm.ProjectSiteID.Value;
            hydroRelation.ModelID = vm.HydroID.Value;
            hydroRelation.Purpose = HStation.Xhs.Purpose.Simulation;
            hydroRelation.Content = null;
            hydroRelation.Description = null;
@@ -369,7 +376,7 @@
            var bimfaceRelation = new Yw.Vmo.BimfaceFileRelationVmo();
            bimfaceRelation.ObjectType = HStation.Xhs.DataType.XhsProjectSite;
            bimfaceRelation.ObjectID = projectSiteId;
            bimfaceRelation.ObjectID = vm.ProjectSiteID.Value;
            bimfaceRelation.BimfaceFileID = bimfaceFileId;
            bimfaceRelation.Purpose = HStation.Xhs.Purpose.Simulation;
            bimfaceRelation.Description = vm.Description;
@@ -442,5 +449,7 @@
            #endregion
        }
    }
}