Browse Source

xls:mbi实体解析

xulisong 6 years ago
parent
commit
5c5921ab91

+ 25 - 0
MBI/SAGA.Models/MBIItem/Builder/EquipmentItemBuilder.cs

@@ -0,0 +1,25 @@
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using SAGA.DotNetUtils.Extend;
+
+namespace SAGA.Models
+{
+    public class EquipmentItemBuilder : MBIItemBuilder<EquipmentItem>
+    {
+        public override EquipmentItem Create(EquipmentItem item, JObject jobject)
+        {
+            base.Create(item, jobject);
+            var infos = item.Infos;
+            item.Name = infos.GetValueEx(MBIBuiltInParameter.EquipName);
+            item.LocalName = infos.GetValueEx(MBIBuiltInParameter.EquipLocalName);
+
+            return item;
+        }
+    }
+}

+ 15 - 0
MBI/SAGA.Models/MBIItem/Builder/IMBIItemBuilder.cs

@@ -0,0 +1,15 @@
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Newtonsoft.Json.Linq;
+
+namespace SAGA.Models
+{
+   public  interface IMBIItemBuilder
+   {
+       MBIItem CreateMBIItem(JObject jobject);
+   }
+}

+ 53 - 0
MBI/SAGA.Models/MBIItem/Builder/MBIItemBuilder.cs

@@ -0,0 +1,53 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using SAGA.DotNetUtils.Extend;
+
+namespace SAGA.Models
+{
+    /// <summary>
+    /// 构建方式
+    /// </summary>
+    public  class MBIItemBuilder<T>:IMBIItemBuilder where T : MBIItem
+    {
+        /// <summary>
+        /// 解析生成类
+        /// </summary>
+        /// <param name="jobject"></param>
+        /// <returns></returns>
+        public virtual T Create(JObject jobject)
+        {
+            T item = JsonConvert.DeserializeObject<T>(jobject.ToString());
+            Create(item, jobject);
+            return item;
+        }
+
+        /// <summary>
+        /// 已知类信息获取
+        /// </summary>
+        /// <param name="item"></param>
+        /// <param name="jobject"></param>
+        /// <returns></returns>
+        public virtual T Create(T item, JObject jobject)
+        {
+            item.Id = jobject.GetValueEx("id");
+            item.Infos = JObject.Parse(jobject.GetValueEx("infos"));
+            var infos = item.Infos;
+            if (infos != null)
+            {
+                  item.BimId = infos.GetValueEx(MBIBuiltInParameter.BIMID);
+            }          
+            return item;
+        }
+
+        public virtual MBIItem CreateMBIItem(JObject jobject)
+        {
+            return Create(jobject);
+        }
+    }
+
+}

+ 53 - 0
MBI/SAGA.Models/MBIItem/Builder/MBIItemFactory.cs

@@ -0,0 +1,53 @@
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Newtonsoft.Json.Linq;
+using SAGA.DotNetUtils.Extend;
+
+namespace SAGA.Models
+{
+    /// <summary>
+    /// mbiItem构造工厂
+    /// </summary>
+    public static class MBIItemFactory
+    {
+        private static Dictionary<string, IMBIItemBuilder> m_Builders = new Dictionary<string, IMBIItemBuilder>();
+
+        static MBIItemFactory()
+        {
+            InitBuilders();
+        }
+
+        public static void InitBuilders()
+        {
+            //可以动态加载,暂时先硬编码
+            m_Builders["SI"] = new RoomItemBuilder();
+            m_Builders["EQ"] = new RoomItemBuilder();
+        }
+
+        /// <summary>
+        /// 创建Mbi项目
+        /// </summary>
+        /// <param name="jObject"></param>
+        /// <returns></returns>
+        public static MBIItem Create(JObject jObject)
+        {
+            MBIItem item = null;
+            var id = jObject.GetValueEx("id");
+            if (string.IsNullOrEmpty(id) || id.Length < 2)
+            {
+                return item;
+            }
+            string flag = id.Substring(0, 2).ToUpper();
+            if (!m_Builders.TryGetValue(flag, out IMBIItemBuilder builder))
+            {
+                builder = new MBIItemBuilder<MBIItem>();
+            }
+            item = builder.CreateMBIItem(jObject);
+            return item;
+        }
+    }
+}

+ 24 - 0
MBI/SAGA.Models/MBIItem/Builder/RoomItemBuilder.cs

@@ -0,0 +1,24 @@
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using SAGA.DotNetUtils.Extend;
+
+namespace SAGA.Models
+{
+    public class RoomItemBuilder : MBIItemBuilder<RoomItem>
+    {
+        public override RoomItem Create(RoomItem item, JObject jobject)
+        {
+            base.Create(item, jobject);
+            var infos = item.Infos;
+            item.Name = infos.GetValueEx(MBIBuiltInParameter.RoomName);
+            item.LocalName = infos.GetValueEx(MBIBuiltInParameter.RoomLocalName);
+            return item;
+        }
+    }
+}

+ 34 - 0
MBI/SAGA.Models/MBIItem/Entity/AssetItem.cs

@@ -0,0 +1,34 @@
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+
+namespace SAGA.Models
+{
+    /// <summary>
+    /// 资产信息
+    /// </summary>
+    public class AssetItem : MBIItem
+    {
+        /// <summary>
+        /// 种族编码
+        /// </summary>
+        [JsonProperty("family")]
+        public string FamilyCode { get; set; }
+
+        public override JObject ToJObject()
+        {
+            var jobject = base.ToJObject();
+            if (!string.IsNullOrEmpty(FamilyCode))
+            {
+                jobject.Add("family", this.FamilyCode);
+            }
+
+            return jobject;
+        }
+    }
+}

+ 36 - 0
MBI/SAGA.Models/MBIItem/Entity/EquipmentItem.cs

@@ -0,0 +1,36 @@
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+
+namespace SAGA.Models
+{
+    /// <summary>
+    /// 岗位信息
+    /// </summary>
+    public class EquipmentItem : MBIItem
+    {
+        /// <summary>
+        /// 设备分类
+        /// </summary>
+        [JsonProperty("category")]
+        public string Category { get; set; }
+
+        public override JObject ToJObject()
+        {
+            var jobject = base.ToJObject();
+
+            if (!string.IsNullOrEmpty(Category))
+            {
+                jobject.Add("category", this.Category);
+            }
+
+            return jobject;
+        }
+
+    }
+}

+ 140 - 0
MBI/SAGA.Models/MBIItem/Entity/MBIItem.cs

@@ -0,0 +1,140 @@
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using SAGA.DotNetUtils;
+
+namespace SAGA.Models
+{
+    public class MBIItem
+    {
+        #region 基础设置
+        /// <summary>
+        /// Id信息
+        /// </summary>
+        [JsonProperty("id")]
+        public string Id { get; set; }
+
+        /// <summary>
+        /// 关联信息relation
+        /// </summary>
+        [JsonProperty("relation")]
+        public JObject Relations { get; set; }
+
+        /// <summary>
+        /// 关联信息点
+        /// </summary>
+        [JsonProperty("infos")]
+        public JObject Infos { get; set; }
+
+        /// <summary>
+        /// 转换成json对象
+        /// </summary>
+        /// <returns></returns>
+        public virtual JObject ToJObject()
+        {
+            JObject j = new JObject();
+            if (!string.IsNullOrEmpty(Id))
+            {
+                j.Add("id", this.Id);
+            }
+
+            if (Relations != null)
+            {
+                j.Add("relation", Relations);
+            }
+
+            var attach = Infos;
+            if (attach == null)
+            {
+                attach = new JObject();
+            }
+
+            j.Add("infos", attach);
+
+            return j;
+        }
+        #endregion
+
+        #region 属性信息
+        /// <summary>
+        /// 建筑id
+        /// </summary>
+        public string BuildingId { get; set; }
+        /// <summary>
+        /// 楼层id
+        /// </summary>
+        public string FloorId { get; set; }
+        /// <summary>
+        /// bimid
+        /// </summary>
+        public string BimId { get; set; }
+
+        /// <summary>
+        /// 名称
+        /// </summary>
+        public  string Name { get; set; }
+        /// <summary>
+        /// 本地名称
+        /// </summary>
+        public string LocalName { get; set; }
+        #endregion
+
+        #region 控制相关
+        /// <summary>
+        /// 关联revit模型id
+        /// </summary>
+        public int RevitId
+        {
+            get
+            {
+                int flag = 0;
+                if (!IsRefRevit)
+                {
+                    return flag;
+                }
+
+                int index = BimId.IndexOf(":");
+                if (index > -1)
+                {
+                    var sub = BuildingId.Substring(index + 1);
+                    flag = sub.ToInt();
+                }
+                return flag;
+            }
+        }
+        /// <summary>
+        /// 是否关联revit对象
+        /// </summary>
+        public bool IsRefRevit
+        {
+            get { return !string.IsNullOrEmpty(this.BimId); }
+        }
+
+        #endregion
+
+        #region 公开方法
+        /// <summary>
+        /// 获取显示标记
+        /// </summary>
+        /// <returns></returns>
+        public virtual string GetDisplay()
+        {
+            if (string.IsNullOrEmpty(LocalName))
+            {
+                return Name;
+            }
+            return LocalName;
+        }
+
+        #endregion
+
+    }
+
+   
+
+}

+ 16 - 0
MBI/SAGA.Models/MBIItem/Entity/RoomItem.cs

@@ -0,0 +1,16 @@
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace SAGA.Models
+{
+    /// <summary>
+    /// 空间信息
+    /// </summary>
+    public class RoomItem : MBIItem
+    {
+    }
+}

+ 136 - 0
MBI/SAGA.Models/MBIItem/MBIBuiltInParameter.cs

@@ -0,0 +1,136 @@
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace SAGA.Models
+{
+    /// <summary>
+    /// MBI内置参数
+    /// </summary>
+    public class MBIBuiltInParameter
+    {
+        /// <summary>
+        /// 本地编码
+        /// </summary>
+        public readonly static string EquipName = "EquipName";
+        /// <summary>
+        /// 本地编码
+        /// </summary>
+        public readonly static string EquipLocalID = "EquipLocalID";
+        /// <summary>
+        /// 本地名称
+        /// </summary>
+        public readonly static string EquipLocalName = "EquipLocalName";
+        /// <summary>
+        /// 品牌
+        /// </summary>
+        public readonly static string Brand = "Brand";
+        /// <summary>
+        /// 设备型号
+        /// </summary>
+        public readonly static string Specification = "Specification";
+        /// <summary>
+        /// 生产日期
+        /// </summary>
+        public readonly static string ProductDate = "ProductDate";
+        /// <summary>
+        /// 出厂编号
+        /// </summary>
+        public readonly static string SerialNum = "SerialNum";
+        /// <summary>
+        /// 资产编号
+        /// </summary>
+        public readonly static string AssetID = "AssetID";
+        /// <summary>
+        /// 采购价格
+        /// </summary>
+        public readonly static string PurchasePrice = "PurchasePrice";
+        /// <summary>
+        /// 保修期
+        /// </summary>
+        public readonly static string Warranty = "Warranty";
+        /// <summary>
+        /// 维保合同截止日期
+        /// </summary>
+        public readonly static string MaintainDeadline = "MaintainDeadline";
+        /// <summary>
+        /// 使用寿命
+        /// </summary>
+        public readonly static string ServiceLife = "ServiceLife";
+        /// <summary>
+        /// 保养周期
+        /// </summary>
+        public readonly static string MaintainPeriod = "MaintainPeriod";
+        /// <summary>
+        /// 保险单号
+        /// </summary>
+        public readonly static string InsuranceNum = "InsuranceNum";
+        /// <summary>
+        /// 保险文件
+        /// </summary>
+        public readonly static string InsuranceFile = "InsuranceFile";
+        /// <summary>
+        /// 生产厂家
+        /// </summary>
+        public readonly static string Manufacturer = "Manufacturer";
+        /// <summary>
+        /// 供应商
+        /// </summary>
+        public readonly static string Supplier = "Supplier";
+        /// <summary>
+        /// 维修商
+        /// </summary>
+        public readonly static string Maintainer = "	Maintainer";
+        /// <summary>
+        /// 保险商
+        /// </summary>
+        public readonly static string Insurer = "Insurer";
+
+        /// <summary>
+        /// 型号Id
+        /// </summary>
+        public readonly static string DPSpecificationID = "DPSpecificationID";
+
+        /// <summary>
+        /// 生产商id
+        /// </summary>
+        public readonly static string DPManufacturerID = "DPManufacturerID";
+        /// <summary>
+        /// 供应商id
+        /// </summary>
+        public readonly static string DPSellerID = "DPSupplierID";
+        /// <summary>
+        /// 维修商id
+        /// </summary>
+        public readonly static string DPMaintainerID = "DPMaintainerID";
+        /// <summary>
+        /// 保险商id
+        /// </summary>
+        public readonly static string DPInsuerID = "DPInsurerID";
+
+        /// <summary>
+        /// 供应合同编号
+        /// </summary>
+        public readonly static string SupplierContractID = "SupplierContractID";
+
+        #region 房间通用
+        /// <summary>
+        /// 空间名称
+        /// </summary>
+        public readonly static string RoomName = "RoomName";
+        /// <summary>
+        /// 空间本地名称
+        /// </summary>
+         public readonly static string RoomLocalName = "RoomLocalName";
+
+        /// <summary>
+        /// BimId
+        /// </summary>
+        public readonly static string BIMID = "BIMID";
+
+        #endregion
+    }
+}

+ 2 - 0
MBI/SAGA.Models/SAGA.Models.csproj

@@ -87,6 +87,8 @@
     <Compile Include="Graphs\VElements\VSpace.cs" />
     <Compile Include="Graphs\VElements\VGroupSpace.cs" />
     <Compile Include="MBIItem\Builder\EquipmentItemBuilder.cs" />
+    <Compile Include="MBIItem\Builder\IMBIItemBuilder.cs" />
+    <Compile Include="MBIItem\Builder\MBIItemFactory.cs" />
     <Compile Include="MBIItem\Builder\RoomItemBuilder.cs" />
     <Compile Include="MBIItem\Entity\AssetItem.cs" />
     <Compile Include="MBIItem\Entity\EquipmentItem.cs" />