MatchFMConvert.cs 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. /* ==============================================================================
  2. * 功能描述:MatchFMRequest
  3. * 创 建 者:Garrett
  4. * 创建日期:2018/4/13 11:50:30
  5. * ==============================================================================*/
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. using Autodesk.Revit.DB;
  10. using Newtonsoft.Json.Linq;
  11. using SAGA.DotNetUtils;
  12. using SAGA.DotNetUtils.Extend;
  13. using SAGA.DotNetUtils.Http;
  14. using SAGA.DotNetUtils.Logger;
  15. using SAGA.MBI.Common;
  16. using SAGA.MBI.DataArrange;
  17. using SAGA.MBI.Model;
  18. using SAGA.MBI.RequestData;
  19. using SAGA.MBI.Tools;
  20. using SAGA.RevitUtils;
  21. using SAGA.RevitUtils.MEP;
  22. using SAGA.RevitUtils.Extends;
  23. namespace SAGA.MBI.JsonConvert
  24. {
  25. /// <summary>
  26. /// MatchFMRequest
  27. /// </summary>
  28. public class MatchFMConvert
  29. {
  30. /// <summary>
  31. /// 根据设备id创建一个设备所关联的资产
  32. /// </summary>
  33. /// <returns></returns>
  34. public static string CreateFMById(MRevitEquipBase equipment)
  35. {
  36. string fmid = "";
  37. string json = MatchFMRequest.CreateFMById(equipment);
  38. if (json.IsSuccessRequest())
  39. {
  40. JObject jObject = JObject.Parse(json);
  41. fmid = (string)jObject["FmId"];
  42. }
  43. return fmid;
  44. }
  45. /// <summary>
  46. /// 从扫楼数据库获取所有资产,目前定范围为建筑
  47. /// </summary>
  48. /// <returns></returns>
  49. public static List<MEquipFM> GetAllEquipFmFromScanBuilding(string buildId)
  50. {
  51. List<MEquipFM> list = new List<MEquipFM>();
  52. Log4Net.Debug("开始读取扫楼数据");
  53. string json = MatchFMRequest.GetAllEquipFmFromScanBuilding(buildId);
  54. if (!json.IsRequestHasItem()) return list;
  55. Log4Net.Debug("开始扫楼数据解析");
  56. JObject jObject = JObject.Parse(json);
  57. foreach (JObject fmItem in jObject["FmList"])
  58. {
  59. try
  60. {
  61. MEquipFM mEquipFm = GetMEquipFm(fmItem);
  62. //贴码类型3 撕码和-5 已撕码 的过滤掉
  63. if (mEquipFm != null && mEquipFm.CodeType != 3 && mEquipFm.CodeType != -5)
  64. list.Add(mEquipFm);
  65. }
  66. catch (Exception e)
  67. {
  68. Console.WriteLine(e);
  69. }
  70. }
  71. Log4Net.Debug("扫楼数据排序");
  72. //排序
  73. list.Sort(new CommonComparer<MEquipFM>((a, b) =>
  74. {
  75. return CommonTool.GetFloorSequenceByFloorId(b.FloorId)
  76. .CompareTo(CommonTool.GetFloorSequenceByFloorId(a.FloorId));
  77. }));
  78. Log4Net.Debug("扫楼数据整理完毕");
  79. return list;
  80. }
  81. /// <summary>
  82. /// 由FMID获取资产的信息
  83. /// </summary>
  84. /// <param name="fmId"></param>
  85. /// <returns></returns>
  86. public static MEquipFM GetFMInfoByFMId(string fmId)
  87. {
  88. if (fmId.IsNullOrEmpty()) return null;
  89. string json = MatchFMRequest.GetFMInfoFromScanBuilding(fmId);
  90. if (!json.IsRequestHasItem()) return null;
  91. JObject jObject = JObject.Parse(json);
  92. foreach (JObject fmItem in jObject["FmList"])
  93. {
  94. try
  95. {
  96. MEquipFM mEquipFm = GetMEquipFm(fmItem);
  97. return mEquipFm;
  98. }
  99. catch (Exception e)
  100. {
  101. Console.WriteLine(e);
  102. }
  103. }
  104. return null;
  105. }
  106. /// <summary>
  107. /// 由资产返回值转为实体类
  108. /// </summary>
  109. /// <param name="fmItem"></param>
  110. /// <returns></returns>
  111. private static MEquipFM GetMEquipFm(JObject fmItem)
  112. {
  113. string distantImageStr = "带二维码的设备远景照片";
  114. try
  115. {
  116. MEquipFM mEquipFm = new MEquipFM();
  117. mEquipFm.FamilyCode = fmItem.GetValueEx("Family");
  118. mEquipFm.FamilyName = fmItem.GetValueEx("FamilyName");
  119. mEquipFm.Id = fmItem.GetValueEx("FmId");
  120. mEquipFm.Name = fmItem.GetValueEx("FmName");
  121. mEquipFm.EquipmentId = fmItem.GetValueEx("EquipmentId");
  122. mEquipFm.FloorId = fmItem.GetValueEx("FloorId");
  123. mEquipFm.FloorName = fmItem.GetValueEx("FloorName").IsNotNullEmpty() ? fmItem.GetValueEx("FloorName") : DalProjectTree.GetFloorNameByFloorId(mEquipFm.FloorId);
  124. mEquipFm.PointId = fmItem.GetValueEx("PointId");
  125. mEquipFm.PointName = fmItem.GetValueEx("PointName");
  126. mEquipFm.PointFloorId = fmItem.GetValueEx("PointFloorId");
  127. mEquipFm.CodeType = fmItem.GetValueEx("CodeType").ToInt();
  128. mEquipFm.Note = fmItem.GetValueEx("Note");
  129. mEquipFm.SpaceId = fmItem.GetValueEx("SpaceId");
  130. mEquipFm.X = fmItem.GetValueEx("X").ToDouble();
  131. mEquipFm.Y = fmItem.GetValueEx("Y").ToDouble();
  132. if (fmItem.IsContainKeyEx("Infos"))
  133. {
  134. var fmInfos = (JObject)fmItem["Infos"];
  135. if (fmInfos.IsContainKeyEx("Pic"))
  136. {
  137. foreach (JObject imageObj in fmInfos["Pic"])
  138. {
  139. mEquipFm.ImageList.Add(new MServiceAttachment(imageObj.GetValueEx("key"), imageObj.GetValueEx("name"), imageObj.GetValueEx("type").ConvertToServiceImageType()));
  140. }
  141. mEquipFm.DistantImage = mEquipFm.ImageList.FirstOrDefault(t => t.ImageName == distantImageStr)?? mEquipFm.ImageList.FirstOrDefault();
  142. }
  143. mEquipFm.FMJson = fmInfos.ToString();
  144. mEquipFm.SetPropertyValue(mEquipFm.FMJson);
  145. }
  146. return mEquipFm;
  147. }
  148. catch (Exception e)
  149. {
  150. Console.WriteLine(e);
  151. }
  152. return null;
  153. }
  154. /// <summary>
  155. /// 有资产id,设备id创建关联关系
  156. /// </summary>
  157. /// <returns></returns>
  158. public static bool CreateRelationFMWithId(MRevitEquipBase equip, MEquipFM equipFm)
  159. {
  160. if (equip == null || equipFm == null) return false;
  161. string json = MatchFMRequest.CreateRelationFMWithId(equip, equipFm);
  162. return json.IsSuccessRequest();
  163. }
  164. /// <summary>
  165. /// 删除设备资产
  166. /// </summary>
  167. /// <returns></returns>
  168. public static bool DeleteEquipFM(string fmId)
  169. {
  170. string json = MatchFMRequest.DeleteEquipFM(fmId);
  171. return json.IsSuccessRequest();
  172. }
  173. /// <summary>
  174. /// 断开资产与设备的关联
  175. /// </summary>
  176. /// <param name="fmid"></param>
  177. /// <returns></returns>
  178. public static bool DisConEquipFm(string fmid)
  179. {
  180. string json = MatchFMRequest.UpdateEquipFm(fmid);
  181. return json.IsSuccessRequest();
  182. }
  183. }
  184. }