DalEquip.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. /* ==============================================================================
  2. * 功能描述:设备数据整理
  3. * 创 建 者:Garrett
  4. * 创建日期:2018/5/17 14:09:00
  5. * ==============================================================================*/
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. using Autodesk.Revit.DB;
  12. using DevExpress.Xpf.Bars;
  13. using Newtonsoft.Json.Linq;
  14. using SAGA.DotNetUtils;
  15. using SAGA.DotNetUtils.Extend;
  16. using SAGA.DotNetUtils.Logger;
  17. using SAGA.MBI.Common;
  18. using SAGA.MBI.JsonConvert;
  19. using SAGA.MBI.Model;
  20. using SAGA.MBI.RequestData;
  21. using SAGA.MBI.Tools;
  22. using SAGA.RevitUtils.Extends;
  23. namespace SAGA.MBI.DataArrange
  24. {
  25. /// <summary>
  26. /// DalEquipment
  27. /// </summary>
  28. public class DalEquip
  29. {
  30. /// <summary>
  31. /// 获取设备的信息,同时根据bimid,请求云平台id
  32. /// </summary>
  33. /// <param name="elem"></param>
  34. /// <returns></returns>
  35. public static MEquipment GetEquipmentnQueryId(FamilyInstance elem)
  36. {
  37. MEquipment mode = GetEquipment(elem);
  38. if (mode == null) return null;
  39. EquipmentConvert.QueryEquipInfo(mode);
  40. //mode.FMID = MatchFMConvert.QueryEquipFM(mode.Id);
  41. return mode;
  42. }
  43. /// <summary>
  44. /// 获取设备的信息
  45. /// </summary>
  46. /// <param name="elem"></param>
  47. /// <returns></returns>
  48. public static MEquipment GetEquipment(FamilyInstance elem)
  49. {
  50. if (!elem.IsEquipment()) return null;
  51. string familyCode = elem.GetFamilyCode();
  52. MEquipmentFamily family = CommonTool.GetEquipFamily(familyCode);
  53. if (family == null) return null;
  54. string floorId = elem.Document.PathName.GetFileName();
  55. string bimid = elem.GetCloudBIMId();
  56. MEquipment mode = new MEquipment(floorId, bimid);
  57. mode.EquipClassCode = familyCode;
  58. mode.Family = family;
  59. mode.PreviewImage = elem.GetFamily().GetPreviewImage(new System.Drawing.Size(200, 200));
  60. //从模型中读取的信息点
  61. mode.ReadRevitParamter(elem);
  62. //model.BIMType = familyName + ";" + typeName;
  63. //Revit族名称
  64. //mode.RevitFamilyName = elem.GetFamily().Name;
  65. //dic.Add("Length", (instance.GetBoxLength() / 1000).Round(3));
  66. //dic.Add("Width", (instance.GetBoxWidth() / 1000).Round(3));
  67. //dic.Add("Height", (instance.GetBoxHeight() / 1000).Round(3));
  68. return mode;
  69. }
  70. /// <summary>
  71. /// 批量更新Infos
  72. /// </summary>
  73. /// <param name="datas"></param>
  74. public static void BatchUpdate(IEnumerable<MRevitEquipBase> datas)
  75. {
  76. var addJArray = new JArray();
  77. var delJArray = new JArray();
  78. var updateJArray = new JArray();
  79. foreach (MRevitEquipBase mode in datas)
  80. {
  81. switch (mode.Operator)
  82. {
  83. case DocumentChangedOperator.Add:
  84. JObject addJObject = new JObject();
  85. addJObject.Add("floor_id", mode.FloorId);
  86. addJObject.Add("building_id", DalProjectTree.GetBuildingIdByFloor(mode.FloorId));
  87. addJObject.Add("equipment_category", mode.EquipClassCode);
  88. addJObject.Add("infos", mode.GetInfosJObject());
  89. addJArray.Add(addJObject);
  90. break;
  91. case DocumentChangedOperator.Delete:
  92. JObject delJObject = new JObject();
  93. delJObject.Add("id", mode.Id);
  94. delJArray.Add(delJObject);
  95. break;
  96. case DocumentChangedOperator.Modified:
  97. JObject criteria = CommonConvert.GetUpdateInfosJObject(mode.Id, mode.GetInfosJObject());
  98. updateJArray.Add(criteria);
  99. break;
  100. case DocumentChangedOperator.None:
  101. break;
  102. default:
  103. mode.AddorUpdateObject();
  104. break;
  105. }
  106. }
  107. if (addJArray.Count > 0)
  108. EquipmentRequest.BatchAdd(addJArray);
  109. if (delJArray.Count > 0)
  110. EquipmentRequest.BatchDel(delJArray);
  111. if (updateJArray.Count > 0)
  112. CommonRequest.BatchUpdate(updateJArray);
  113. }
  114. }
  115. }