PlatformBll.cs 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. using Com.FirmLib.Entity;
  2. using FirmHttpDao;
  3. using Newtonsoft.Json;
  4. using Newtonsoft.Json.Linq;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. namespace Com.FirmLib.Bll
  11. {
  12. #region 关联类
  13. public class SearchResultList<T> : List<T>
  14. {
  15. public SearchResultList()
  16. {
  17. }
  18. public int TotalCount { get; set; }
  19. }
  20. #endregion
  21. /// <summary>
  22. /// 数据平台管理
  23. /// </summary>
  24. public class PlatformBll : BaseHttpBll
  25. {
  26. private PlatformBll() : base(@"")
  27. {
  28. }
  29. #region 资产相关
  30. #region 查询资产
  31. /// <summary>
  32. /// 获取资产信息
  33. /// </summary>
  34. /// <param name="projectSetting"></param>
  35. /// <param name="limit"></param>
  36. /// <param name="filter"></param>
  37. /// <param name="criteria"></param>
  38. /// <returns>如果返回值为null;则查询发生错误</returns>
  39. public SearchResultList<TdAssetItem> GetAssetItems(ProjectSetting projectSetting, SearchLimit limit, SearchFilter filter, SearchCriteria criteria)
  40. {
  41. //返回null,表示查询失败
  42. string tempUrlExtension = BllHttpSetting.Instance.EquipmentUri + string.Format(@"/property/relation_query?projectId={0}&secret={1}", projectSetting.ProjectId, projectSetting.Secret);
  43. JObject jObject = new JObject();
  44. jObject.Add("limit", limit.ToJObject());
  45. jObject.Add("filter", filter.ToJObject());
  46. jObject.Add("criteria", criteria.ToJObject());
  47. var result = PostJsonAsync(new Uri(tempUrlExtension, UriKind.RelativeOrAbsolute), jObject);
  48. SearchResultList<TdAssetItem> items = new SearchResultList<TdAssetItem>();
  49. int total = 0;
  50. HandlerResult(result, (jo) =>
  51. {
  52. total = Convert.ToInt32(jo["TotalCount"]?.ToString() ?? "0");
  53. var listStr = jo["Content"].ToString();
  54. JArray array = JArray.Parse(listStr);
  55. items = JsonConvert.DeserializeObject<SearchResultList<TdAssetItem>>(listStr);
  56. }, (jo) => { this.ErrorMessage = jo["ResultMsg"].ToString(); });
  57. items.TotalCount = total;
  58. return items;
  59. }
  60. #endregion
  61. #region 创建资产
  62. /// <summary>
  63. /// 在制定项目下创建资产
  64. /// </summary>
  65. /// <param name="projectSetting"></param>
  66. /// <param name="items"></param>
  67. public BatchResult<List<string>> CreateAssetItems(ProjectSetting projectSetting, List<TdAssetItem> items)
  68. {
  69. BatchResultType resultFlag = BatchResultType.Failed;
  70. //projectSetting.Secret = "123";
  71. string tempUrlExtension = BllHttpSetting.Instance.EquipmentUri + string.Format(@"/property/create?projectId={0}&secret={1}", projectSetting.ProjectId, projectSetting.Secret);
  72. List<JObject> jobjects = new List<JObject>();
  73. items.ForEach(ci => jobjects.Add(ci.ToJObject()));
  74. var jarray = JArray.FromObject(jobjects);
  75. JObject jObject = new JObject();
  76. jObject.Add("criterias", jarray);
  77. var result = PostJsonAsync(new Uri(tempUrlExtension, UriKind.RelativeOrAbsolute), jObject);
  78. HandlerResult(result, (jo) =>
  79. {
  80. if (jo.TryGetValue("Error", out JToken error))
  81. {
  82. resultFlag = BatchResultType.PartSuccessed;;
  83. return;
  84. }
  85. if (jo.TryGetValue("Content", out JToken jToken))
  86. {
  87. resultFlag= BatchResultType.Successed;
  88. items = JsonConvert.DeserializeObject<SearchResultList<TdAssetItem>>(jToken?.ToString());
  89. return;
  90. }
  91. }, (jo) => { this.ErrorMessage = jo["ResultMsg"].ToString(); });
  92. BatchResult<List<string>> batchResult = new BatchResult<List<string>>();
  93. batchResult.Result = resultFlag;
  94. if (resultFlag == BatchResultType.Successed)
  95. {
  96. batchResult.AttachInfo = new List<string>(items.Select(a=>a.Id));
  97. }
  98. return batchResult;
  99. }
  100. #endregion
  101. #region 更改
  102. /// <summary>
  103. /// 在制定项目下创建资产
  104. /// </summary>
  105. /// <param name="projectSetting"></param>
  106. /// <param name="items"></param>
  107. public bool UpdateAssetItems(ProjectSetting projectSetting, List<TdAssetItem> items)
  108. {
  109. //此时TdAssetItem Infos中的信息和,查询创建不一样,更改的是value的数组形式存值
  110. bool resultFlag = false;
  111. string tempUrlExtension = BllHttpSetting.Instance.EquipmentUri + string.Format(@"/property/update?projectId={0}&secret={1}", projectSetting.ProjectId, projectSetting.Secret);
  112. List<JObject> jobjects = new List<JObject>();
  113. items.ForEach(ci => jobjects.Add(ci.ToJObject()));
  114. var jarray = JArray.FromObject(jobjects);
  115. JObject jObject = new JObject();
  116. jObject.Add("criterias", jarray);
  117. var result = PostJsonAsync(new Uri(tempUrlExtension, UriKind.RelativeOrAbsolute), jObject);
  118. HandlerResult(result, (jo) =>
  119. {
  120. resultFlag = true;
  121. }, (jo) => { this.ErrorMessage = jo["ResultMsg"].ToString(); });
  122. return resultFlag;
  123. }
  124. #endregion
  125. #region 查询推荐资产
  126. /// <summary>
  127. /// 获取资产信息
  128. /// </summary>
  129. /// <param name="projectId"></param>
  130. /// <param name="limit"></param>
  131. /// <param name="filter"></param>
  132. /// <param name="criteria"></param>
  133. /// <returns>如果返回值为null;则查询发生错误</returns>
  134. public SearchResultList<TdAssetItem> GetRecomendAssetItems(ProjectSetting projectSetting, SearchLimit limit, SearchFilter filter, SearchCriteria criteria)
  135. {
  136. //返回null,表示查询失败
  137. string tempUrlExtension = BllHttpSetting.Instance.DpUri + string.Format(@"/recommend?projectId={0}&secret={1}", projectSetting.ProjectId, projectSetting.Secret);
  138. JObject jObject = new JObject();
  139. jObject.Add("limit", limit.ToJObject());
  140. jObject.Add("filter", filter.ToJObject());
  141. jObject.Add("criteria", criteria.ToJObject());
  142. var result = PostJsonAsync(new Uri(tempUrlExtension, UriKind.RelativeOrAbsolute), jObject);
  143. SearchResultList<TdAssetItem> items = new SearchResultList<TdAssetItem>();
  144. int total = 0;
  145. HandlerResult(result, (jo) =>
  146. {
  147. if(jo.TryGetValue("content",out JToken token))
  148. {
  149. var listStr = token.ToString();
  150. items = JsonConvert.DeserializeObject<SearchResultList<TdAssetItem>>(listStr);
  151. }
  152. }, (jo) => { this.ErrorMessage = jo["resultMsg"].ToString(); });
  153. items.TotalCount = total;
  154. return items;
  155. }
  156. #endregion
  157. #endregion
  158. #region 设备相关
  159. /// <summary>
  160. /// 获取资产信息
  161. /// </summary>
  162. /// <param name="projectSetting"></param>
  163. /// <param name="limit"></param>
  164. /// <param name="filter"></param>
  165. /// <param name="criteria"></param>
  166. /// <returns>如果返回值为null;则查询发生错误</returns>
  167. public SearchResultList<TdAssetItem> GetEquipmentItems(ProjectSetting projectSetting, SearchLimit limit, SearchFilter filter, SearchCriteria criteria)
  168. {
  169. //返回null,表示查询失败
  170. //projectSetting.Secret = "saga123456";
  171. string tempUrlExtension = BllHttpSetting.Instance.EquipmentUri + string.Format(@"/equipment/complex_query?projectId={0}&secret={1}", projectSetting.ProjectId, projectSetting.Secret);
  172. JObject jObject = new JObject();
  173. jObject.Add("limit", limit.ToJObject());
  174. // jObject.Add("filter", filter.ToJObject());
  175. jObject.Add("criteria", criteria.ToJObject());
  176. var result = PostJsonAsync(new Uri(tempUrlExtension, UriKind.RelativeOrAbsolute), jObject);
  177. SearchResultList<TdAssetItem> items = new SearchResultList<TdAssetItem>();
  178. int total = 0;
  179. HandlerResult(result, (jo) =>
  180. {
  181. total = Convert.ToInt32(jo["TotalCount"]?.ToString() ?? "0");
  182. var listStr = jo["Content"].ToString();
  183. items = JsonConvert.DeserializeObject<SearchResultList<TdAssetItem>>(listStr);
  184. }, (jo) => { this.ErrorMessage = jo["ResultMsg"].ToString(); });
  185. items.TotalCount = total;
  186. return items;
  187. }
  188. /// <summary>
  189. /// 更新制定项目的设备信息
  190. /// </summary>
  191. /// <param name="projectSetting"></param>
  192. /// <param name="items"></param>
  193. public bool UpdateEquipmentItems(ProjectSetting projectSetting, List<TdAssetItem> items)
  194. {
  195. //此时TdAssetItem Infos中的信息和,查询创建不一样,更改的是value的数组形式存值
  196. bool resultFlag = false;
  197. string tempUrlExtension = BllHttpSetting.Instance.EquipmentUri + string.Format(@"/object/batch_update?projectId={0}&secret={1}", projectSetting.ProjectId, projectSetting.Secret);
  198. List<JObject> jobjects = new List<JObject>();
  199. items.ForEach(ci => jobjects.Add(ci.ToJObject()));
  200. var jarray = JArray.FromObject(jobjects);
  201. JObject jObject = new JObject();
  202. jObject.Add("criterias", jarray);
  203. var result = PostJsonAsync(new Uri(tempUrlExtension, UriKind.RelativeOrAbsolute), jObject);
  204. HandlerResult(result, (jo) =>
  205. {
  206. resultFlag = true;
  207. }, (jo) => { this.ErrorMessage = jo["ResultMsg"].ToString(); });
  208. return resultFlag;
  209. }
  210. #endregion
  211. }
  212. }