Browse Source

mxg:《岗位与资产关联》推荐时,查询与岗位在同一空间中的资产进行推荐

mengxiangge 6 years ago
parent
commit
e012aa0df1

+ 3 - 4
MBI/SAGA.MBI/JsonConvert/MatchFMConvert.cs

@@ -119,11 +119,9 @@ namespace SAGA.MBI.JsonConvert
             string distantImageStr = "带二维码的设备远景照片";
             try
             {
-                string familyCode = (string)fmItem["Family"];
-                string familyName = (string)fmItem["FamilyName"];
                 MEquipFM mEquipFm = new MEquipFM();
-                mEquipFm.FamilyCode = familyCode;
-                mEquipFm.FamilyName = familyName;
+                mEquipFm.FamilyCode = fmItem.GetValueEx("Family");
+                mEquipFm.FamilyName = fmItem.GetValueEx("FamilyName");
                 mEquipFm.Id = fmItem.GetValueEx("FmId");
                 mEquipFm.Name = fmItem.GetValueEx("FmName");
                 mEquipFm.EquipmentId = fmItem.GetValueEx("EquipmentId");
@@ -134,6 +132,7 @@ namespace SAGA.MBI.JsonConvert
                 mEquipFm.PointFloorId = fmItem.GetValueEx("PointFloorId");
                 mEquipFm.CodeType = fmItem.GetValueEx("CodeType").ToInt();
                 mEquipFm.Note = fmItem.GetValueEx("Note");
+                mEquipFm.SpaceId = fmItem.GetValueEx("SpaceId");
 
                 mEquipFm.X = fmItem.GetValueEx("X").ToDouble();
                 mEquipFm.Y = fmItem.GetValueEx("Y").ToDouble();

+ 96 - 77
MBI/SAGA.MBI/Model/MEquipFM.cs

@@ -28,7 +28,7 @@ namespace SAGA.MBI.Model
     {
         public MEquipFM()
         {
-            ImageList=new List<MServiceAttachment>();
+            ImageList = new List<MServiceAttachment>();
         }
 
 
@@ -43,7 +43,43 @@ namespace SAGA.MBI.Model
                 NotifyPropertyChanged("IsSelected");
             }
         }
+        /// <summary>
+        /// 图片列表
+        /// </summary>
+        public List<MServiceAttachment> ImageList { get; set; }
+
+        /// <summary>
+        /// 从扫楼数据库读取到的资产信息
+        /// </summary>
+        public string FMJson { get; set; }
+        private MServiceAttachment m_DistantImage;
+        /// <summary>
+        /// 远景照片
+        /// </summary>
+        public MServiceAttachment DistantImage
+        {
+            get { return m_DistantImage; }
+            set
+            {
+                m_DistantImage = value;
+            }
+        }
+        private string m_Note;
+        /// <summary>
+        /// 备注
+        /// </summary>
+        public string Note
+        {
+            get { return m_Note; }
+            set
+            {
+                m_Note = value;
+            }
+        }
 
+        #endregion
+
+        #region FMProperty
         private int m_CodeType;
         /// <summary>
         /// 贴码类型(-1:未贴码,-2:太远,-3:隐藏工程,-4:未找到设备, 0:正常贴码,1:贴码, 2:换码)
@@ -79,8 +115,12 @@ namespace SAGA.MBI.Model
                 m_EquipmentId = value;
             }
         }
+        /// <summary>
+        /// 楼层名称
+        /// </summary>
+        public string FloorName { get; set; }
+
         private string m_FloorId;
-        //[Description("FloorId")]
         /// <summary>
         /// 楼层Id
         /// </summary>
@@ -92,37 +132,20 @@ namespace SAGA.MBI.Model
                 m_FloorId = value;
             }
         }
-        /// <summary>
-        /// 楼层名称
-        /// </summary>
-        public string FloorName { get; set; }
 
-        private string m_LocalId;
-        [Description("EquipLocalID")]
+        private string m_SpaceId;
         /// <summary>
-        /// 本地编码
+        /// 空间Id
         /// </summary>
-        public string LocalId
+        public string SpaceId
         {
-            get { return m_LocalId; }
+            get { return m_SpaceId; }
             set
             {
-                m_LocalId = value;
-            }
-        }
-        private string m_LocalName;
-        [Description("EquipLocalName")]
-        /// <summary>
-        /// 本地名称
-        /// </summary>
-        public string LocalName
-        {
-            get { return m_LocalName; }
-            set
-            {
-                m_LocalName = value;
+                m_SpaceId = value;
             }
         }
+
         private string m_PointId;
         //[Description("PointId")]
         /// <summary>
@@ -154,41 +177,6 @@ namespace SAGA.MBI.Model
             set { m_PointFloorId = value; }
         }
 
-        private string m_InstallLocation;
-        [Description("InstallLocation")]
-        /// <summary>
-        /// 安装位置-信息点字段
-        /// </summary>
-        public string InstallLocation
-        {
-            get { return m_InstallLocation; }
-            set { m_InstallLocation = value; }
-        }
-
-
-        private string m_BimID;
-        [Description("BIMID")]
-        public string BimID
-        {
-            get { return m_BimID; }
-            set
-            {
-                m_BimID = value;
-                NotifyPropertyChanged("BimID");
-            }
-        }
-
-        private string m_Location;
-        [Description("BIMLocation")]
-        public string Location
-        {
-            get { return m_Location; }
-            set
-            {
-                m_Location = value;
-            }
-        }
-
         public double X { get; set; }
         public double Y { get; set; }
 
@@ -216,42 +204,73 @@ namespace SAGA.MBI.Model
                 m_FamilyName = value;
             }
         }
-        private MServiceAttachment m_DistantImage;
+        #endregion
+
+        #region 信息点中的字段
+
+        private string m_LocalId;
+        [Description("EquipLocalID")]
         /// <summary>
-        /// 远景照片
+        /// 本地编码
         /// </summary>
-        public MServiceAttachment DistantImage
+        public string LocalId
         {
-            get { return m_DistantImage; }
+            get { return m_LocalId; }
             set
             {
-                m_DistantImage = value;
+                m_LocalId = value;
             }
         }
-        private string m_Note;
+        private string m_LocalName;
+        [Description("EquipLocalName")]
         /// <summary>
-        /// 备注
+        /// 本地名称
         /// </summary>
-        public string Note
+        public string LocalName
         {
-            get { return m_Note; }
+            get { return m_LocalName; }
             set
             {
-                m_Note = value;
+                m_LocalName = value;
             }
         }
+        private string m_InstallLocation;
+        [Description("InstallLocation")]
         /// <summary>
-        /// 图片列表
+        /// 安装位置-信息点字段
         /// </summary>
-        public List<MServiceAttachment> ImageList { get; set; }
+        public string InstallLocation
+        {
+            get { return m_InstallLocation; }
+            set { m_InstallLocation = value; }
+        }
 
-        /// <summary>
-        /// 从扫楼数据库读取到的资产信息
-        /// </summary>
-        public string FMJson { get; set; }
 
-        #endregion Model
+        private string m_BimID;
+        [Description("BIMID")]
+        public string BimID
+        {
+            get { return m_BimID; }
+            set
+            {
+                m_BimID = value;
+                NotifyPropertyChanged("BimID");
+            }
+        }
 
+        private string m_Location;
+        [Description("BIMLocation")]
+        public string Location
+        {
+            get { return m_Location; }
+            set
+            {
+                m_Location = value;
+            }
+        }
+        #endregion
+       
+        
 
         /// <summary>
         /// 查看详细信息

+ 0 - 1
MBI/SAGA.MBI/Model/MEquipment.cs

@@ -169,7 +169,6 @@ namespace SAGA.MBI.Model
                 propertyi2.Value = this.FMID.IsNullOrEmpty() ? null : "点击查看二维码图片";
                 item.Items.Add(propertyi2);
             }
-            MSpace = DalSpace.GetMSpace(this.Id);
             Property propertySpace = new Property(this);
             //属性窗格用到的信息
             propertySpace.Category = "编码及关系";

+ 1 - 2
MBI/SAGA.MBI/Model/MEquipmentPart.cs

@@ -182,8 +182,7 @@ namespace SAGA.MBI.Model
                 propertyi2.Value = this.FMID.IsNullOrEmpty() ? null : "点击查看二维码图片";
                 item.Items.Add(propertyi2);
             }
-
-            MSpace = DalSpace.GetMSpace(this.Id);
+            
             Property propertySpace = new Property(this);
             //属性窗格用到的信息
             propertySpace.Category = "编码及关系";

+ 11 - 2
MBI/SAGA.MBI/Model/MRevitEquipBase.cs

@@ -66,10 +66,19 @@ namespace SAGA.MBI.Model
 
         #region AttachProperty
 
+        private MISpace m_MSpace;
         /// <summary>
         /// 设备所在元空间
         /// </summary>
-        public MISpace MSpace { get; set; }
+        public MISpace MSpace
+        {
+            get
+            {
+                if (m_MSpace == null)
+                    m_MSpace = DalSpace.GetMSpace(this.Id);
+                return m_MSpace;
+            }
+        }
         //是否上传
         public bool HasUpload { get; set; }
         //设备族名称
@@ -259,7 +268,7 @@ namespace SAGA.MBI.Model
             var attributes = info?.GetCustomAttributes(typeof(DescriptionAttribute));
             var att = attributes?.FirstOrDefault();
             if (att == null) return;
-           
+
             if (att is DescriptionAttribute descriptionAttribute)
             {
                 var description = descriptionAttribute.Description;

+ 38 - 0
MBI/SAGA.MBI/TestCommand.cs

@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.IO;
 using System.Linq;
 using System.Text;
+using System.Threading;
 using System.Threading.Tasks;
 using System.Windows.Media;
 using Autodesk.Revit.Attributes;
@@ -11,6 +12,7 @@ using Autodesk.Revit.DB.Plumbing;
 using Autodesk.Revit.UI;
 using Autodesk.Revit.UI.Selection;
 using SAGA.DotNetUtils.Extend;
+using SAGA.DotNetUtils.Logger;
 using SAGA.MBI.Calc;
 using SAGA.MBI.DataArrange;
 using SAGA.MBI.Interaction;
@@ -294,4 +296,40 @@ namespace SAGA.MBI
             }
         }
     }
+    /// <summary>
+    /// 测试多项目读取
+    /// </summary>
+    [Transaction(TransactionMode.Manual)]
+    [Regeneration(RegenerationOption.Manual)]
+    public class TestMultipleReadDocCommand : ExternalCommand
+    {
+        public override Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
+        {
+            try
+            {
+                var floors = DalProjectTree.GetAllFloors(false);
+                var floor = floors.FirstOrDefault();
+                var doc = ExternalDataWrapper.Current.App.OpenDocumentFile(floor.FullPath);
+                var eles = doc.GetAllElements();
+
+                string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory),$"{floor}_{System.DateTime.Now.Millisecond}.txt");
+                //File.Create(path);
+                foreach (Element element in eles)
+                {
+                    File.AppendAllText(path,$"{element.Id}:{element.Name}\r\n");
+                }
+            }
+            catch (Exception e)
+            {
+                MessageShow.Show(e);
+                return Result.Cancelled;
+            }
+            return Result.Succeeded;
+        }
+
+        public override bool IsCommandAvailable(UIApplication applicationData, CategorySet selectedCategories)
+        {
+            return true;
+        }
+    }
 }

+ 5 - 1
MBI/SAGA.MBI/ToolCommand.cs

@@ -248,6 +248,7 @@ namespace SAGA.MBI
     }
     #endregion
 
+    #region 数据修正
 
     /// <summary>
     /// 修正云平台族类型和本地族类型不一致
@@ -390,7 +391,7 @@ namespace SAGA.MBI
             return true;
         }
     }
-   
+
 
 
     /// <summary>
@@ -512,4 +513,7 @@ namespace SAGA.MBI
             return true;
         }
     }
+
+    #endregion
+
 }

+ 23 - 5
MBI/SAGA.MBI/WinView/ModeInfoMaintenance/VMMatchFM.cs

@@ -463,7 +463,7 @@ namespace SAGA.MBI.WinView.ModeInfoMaintenance
         }
         /// <summary>
         /// 推荐方案1,
-        /// 同一楼层
+        /// 同一空间
         /// 同设备族and距离近
         /// </summary>
         /// <param name="equipFm"></param>
@@ -472,8 +472,8 @@ namespace SAGA.MBI.WinView.ModeInfoMaintenance
         private bool IsMathPlan1(MEquipFM equipFm, MRevitEquipBase equip)
         {
             List<Func<MEquipFM, MRevitEquipBase, bool>> funcs = new List<Func<MEquipFM, MRevitEquipBase, bool>>();
+            funcs.Add(IsSameSpace);
             funcs.Add(IsSameFamilyCode);
-            funcs.Add(IsSameFloor);
             funcs.Add(IsLocationNear);
             bool result = funcs.All(t => t(equipFm, equip));
             return result;
@@ -508,6 +508,23 @@ namespace SAGA.MBI.WinView.ModeInfoMaintenance
 
         #region 推荐方法
         /// <summary>
+        /// 同一空间中
+        /// </summary>
+        /// <param name="equipFm"></param>
+        /// <param name="equip"></param>
+        /// <returns></returns>
+        private bool IsSameSpace(MEquipFM equipFm, MRevitEquipBase equip)
+        {
+            bool result = false;
+            string fmSpaceId = equipFm.SpaceId;
+            string equipSpaceId = equip.MSpace?.Id;
+            if (fmSpaceId.IsNotNullEmpty() && equipSpaceId.IsNotNullEmpty())
+            {
+                result = fmSpaceId == equipSpaceId;
+            }
+            return result;
+        }
+        /// <summary>
         /// 同一种设备族
         /// </summary>
         /// <param name="equipFm"></param>
@@ -613,9 +630,10 @@ namespace SAGA.MBI.WinView.ModeInfoMaintenance
         private bool IsLocationNear(MEquipFM equipFm, MRevitEquipBase equip)
         {
             //推荐坐标的冗余值
-            double redundancy = 20000d;
-            XYZ fmXyz = equipFm.Location.ToXyz();
-            XYZ dutyXyz = equip.Location.ToXyz();
+            double redundancy = 2000d;
+            //Z设置为0,平面范围内
+            XYZ fmXyz = equipFm.Location.ToXyz().NewZ();
+            XYZ dutyXyz = equip.Location.ToXyz().NewZ();
             bool result = false;
 
             if (fmXyz != null && dutyXyz != null)