MBIItemBuilder.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using Newtonsoft.Json;
  8. using Newtonsoft.Json.Linq;
  9. using SAGA.DotNetUtils.Extend;
  10. namespace SAGA.Models
  11. {
  12. /// <summary>
  13. /// 构建方式
  14. /// </summary>
  15. public class MBIItemBuilder<T>:IMBIItemBuilder where T : MBIItem
  16. {
  17. /// <summary>
  18. /// 解析生成类
  19. /// </summary>
  20. /// <param name="jobject"></param>
  21. /// <returns></returns>
  22. public virtual T Create(JObject jobject)
  23. {
  24. T item = JsonConvert.DeserializeObject<T>(jobject.ToString());
  25. Create(item, jobject);
  26. return item;
  27. }
  28. /// <summary>
  29. /// 已知类信息获取
  30. /// </summary>
  31. /// <param name="item"></param>
  32. /// <param name="jobject"></param>
  33. /// <returns></returns>
  34. public virtual T Create(T item, JObject jobject)
  35. {
  36. item.Id = jobject.GetValueEx("id");
  37. item.Infos = JObject.Parse(jobject.GetValueEx("infos"));
  38. var infos = item.Infos;
  39. if (infos != null)
  40. {
  41. item.BimId = infos.GetValueEx(MBIBuiltInParameter.BIMID);
  42. if (!string.IsNullOrWhiteSpace(item.BimId))
  43. {
  44. try
  45. {
  46. var bimId = item.BimId;
  47. item.FloorId = bimId.Substring(0, bimId.IndexOf(":"));
  48. }
  49. catch (Exception ex)
  50. {
  51. Debug.WriteLine(ex.StackTrace.ToString());
  52. }
  53. }
  54. }
  55. return item;
  56. }
  57. public virtual MBIItem CreateMBIItem(JObject jobject)
  58. {
  59. return Create(jobject);
  60. }
  61. }
  62. }