RelationBll.cs 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. using Newtonsoft.Json;
  2. using Newtonsoft.Json.Linq;
  3. using SAGA.DotNetUtils.Http;
  4. using SAGA.MBI.Common;
  5. using SAGA.Models;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. namespace SAGA.GplotRelationComputerManage
  12. {
  13. public class RelationBll
  14. {
  15. #region 地址相关
  16. /// <summary>
  17. /// 获取基础地址
  18. /// </summary>
  19. /// <returns></returns>
  20. public string GetBaseUrl()
  21. {
  22. return $"{ MBIConst.DataPlatformLocalHost}data - platform - 3 / relation / ";
  23. }
  24. /// <summary>
  25. /// 获取密码相关地址字符串
  26. /// </summary>
  27. /// <returns></returns>
  28. private string GetPasswordQuerry()
  29. {
  30. return $"projectId={MBIControl.ProjectCur.Id}&secret={MBIControl.ProjectCur.Password}";
  31. }
  32. #endregion
  33. /// <summary>
  34. /// 创建图实例
  35. /// </summary>
  36. /// <param name="graphType">图类型</param>
  37. /// <param name="beginTime">实例启用时间</param>
  38. /// <returns></returns>
  39. public string AddGraphInstance(string graphType, string beginTime)
  40. {
  41. var baseUrl = GetBaseUrl();
  42. var password = GetPasswordQuerry();
  43. string url = $"{baseUrl}graph_instance/create?{password}";
  44. JObject jObject = new JObject();
  45. jObject.Add("graph_type", graphType);
  46. var periods = new JArray();
  47. var timeObject = new JObject();
  48. timeObject.Add("begin_time", beginTime);
  49. timeObject.Add("end_time", "29000101000000");
  50. jObject.Add("periods", periods);
  51. //string postData = $"{{\"graph_type\":\"{graphType}\",\"periods\":[{{\"begin_time\":\"{begin_time}\",\"end_time\":\"29000101000000\"}}]}}";
  52. RestClient restClient = new RestClient(url, HttpVerb.POST, jObject.ToString());
  53. return restClient.GetRequest().GetValue("graph_id");
  54. }
  55. /// <summary>
  56. /// 根据图类型获取图实例id
  57. /// </summary>
  58. /// <param name="graphType"></param>
  59. /// <returns></returns>
  60. public GraphInstance QueryGraphInstance(string graphType)
  61. {
  62. var baseUrl = GetBaseUrl();
  63. var password = GetPasswordQuerry();
  64. string url = $"{baseUrl}graph_instance/query?{password}";
  65. JObject jObject = new JObject();
  66. JObject criteria = new JObject();
  67. jObject.Add("criteria", criteria);
  68. criteria.Add("jObjectValue", graphType);
  69. //string postData = $"{{\"graph_type\":\"{graphType}\"}}";
  70. //postData = $"{{\"criteria\":{{\"graph_type\":\"{graphType}\"}}}}";
  71. RestClient restClient = new RestClient(url, HttpVerb.POST, jObject.ToString());
  72. GraphInstance instance = new GraphInstance();
  73. var result = restClient.GetRequest();
  74. return instance;
  75. }
  76. /// <summary>
  77. /// 修改实例(如果当前时间点与最新的节点有重复,
  78. /// 修改之前的图实例时间,然后创建新的,20171123)
  79. /// </summary>
  80. /// <param name="graphId">图类型</param>
  81. /// <param name="statrDateTime"></param>
  82. /// <param name="endDateTime"></param>
  83. /// <returns></returns>
  84. public string UpdateGraphInstance(string graphId, string biginTime, string endTime)
  85. {
  86. var baseUrl = GetBaseUrl();
  87. var password = GetPasswordQuerry();
  88. string url = $"{baseUrl}graph_instance/update?{password}";
  89. JObject jObject = new JObject();
  90. JObject criteria = new JObject();
  91. jObject.Add("criteria", criteria);
  92. criteria.Add("graph_id", graphId);
  93. JObject set = new JObject();
  94. jObject.Add("set", set);
  95. var periods = new JArray();
  96. set.Add("periods", periods);
  97. var timeObject = new JObject();
  98. timeObject.Add("begin_time", biginTime);
  99. timeObject.Add("end_time", "endTime");
  100. //string postData = $"{{\"criteria\":{{\"graph_id\":\"{graphId}\"}},\"set\":{{\"periods\":[{{\"begin_time\":\"{statrDateTime}\",\"end_time\":\"{endDateTime}\"}}]}}}}";
  101. RestClient restClient = new RestClient(url, HttpVerb.POST, jObject.ToString());
  102. return restClient.GetRequest().GetValue("graph_id");
  103. }
  104. /// <summary>
  105. /// 获取图实例ID
  106. /// </summary>
  107. /// <returns></returns>
  108. public string GetGraphId(string graphyType)
  109. {
  110. var instance = QueryGraphInstance(graphyType);
  111. var nowTime = DateTime.Now;
  112. if (instance.IsValid)
  113. {
  114. //将图类型的终止时间改成当前时间
  115. UpdateGraphInstance(instance.Id, instance.BeginTime, nowTime.ToString("yyyyMMddHHmmss"));
  116. }
  117. //创建新的图类型
  118. var newGraphId = AddGraphInstance(graphyType, nowTime.ToString("yyyyMMddHHmmss"));
  119. return newGraphId;
  120. }
  121. /// <summary>
  122. /// 创建关系数据
  123. /// </summary>
  124. /// <param name="criteria">关系数据</param>
  125. /// <returns></returns>
  126. public bool CreateRelations(List<GraphRelationItem> items)
  127. {
  128. var baseUrl = GetBaseUrl();
  129. var password = GetPasswordQuerry();
  130. string url = $"{baseUrl}create?{password}";
  131. var useItems = new List<GraphRelationItem>();
  132. foreach (var item in items)
  133. {
  134. if(item.IsValid)
  135. {
  136. useItems.Add(item);
  137. }
  138. }
  139. if(useItems.Count==0)
  140. {
  141. return true;
  142. }
  143. JObject jobject = new JObject();
  144. jobject.Add("criterias", JArray.FromObject(useItems));
  145. RestClient restClient1 = new RestClient(url, HttpVerb.POST, JsonConvert.SerializeObject(jobject).ToString());
  146. var result =restClient1.GetRequest().IsSuccess();
  147. return result;
  148. }
  149. /// <summary>
  150. /// 创建关系数据
  151. /// </summary>
  152. /// <param name="graphType"></param>
  153. /// <param name="items"></param>
  154. /// <returns></returns>
  155. public bool CreateRelations(string graphType, List<GraphRelationItem> items)
  156. {
  157. var newGraphId = GetGraphId(graphType);
  158. if (string.IsNullOrWhiteSpace(newGraphId))
  159. return false;
  160. items.ForEach(item => item.GraphId = newGraphId);
  161. return CreateRelations(items);
  162. }
  163. }
  164. }