RelationUploader.cs 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. using Newtonsoft.Json;
  2. using Newtonsoft.Json.Linq;
  3. using SAGA.GplotRelationComputerManage;
  4. using SAGA.MBI.RequestData;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. namespace SAGA.GplotManage
  11. {
  12. public abstract class RelationUploader:IRelationUploader
  13. {
  14. public RelationUploader(string relationType,string relationDisplay)
  15. {
  16. RelationType = relationType;
  17. RelationDisplay = relationDisplay;
  18. }
  19. /*
  20. *可以将计算写在upload中,就像把计算卸载Show中
  21. */
  22. /// <summary>
  23. /// 图关系类型
  24. /// </summary>
  25. public string RelationType { get;private set; }
  26. /// <summary>
  27. /// 图关系显示名称
  28. /// </summary>
  29. public string RelationDisplay { get; private set; }
  30. /// <summary>
  31. /// 上传图关系
  32. /// </summary>
  33. public virtual void Upload()
  34. {
  35. var data = GetDefaultUploadData();
  36. Upload(data);
  37. }
  38. protected abstract object GetDefaultUploadData();
  39. /// <summary>
  40. /// 上传图关系
  41. /// </summary>
  42. /// <param name="loadData"></param>
  43. public virtual void Upload(object loadData)
  44. {
  45. var items = CreateGraph(loadData);
  46. UploadGraph(items);
  47. }
  48. /// <summary>
  49. /// 创建图关系集合
  50. /// </summary>
  51. /// <param name="loadData"></param>
  52. /// <returns></returns>
  53. protected abstract List<GraphRelationItem> CreateGraph(object loadData);
  54. public virtual void UploadGraph(List<GraphRelationItem> realtionItems)
  55. {
  56. string graphId = RelationRequest.GetCurrentGraphId(RelationType);
  57. if (graphId == null) return;
  58. if (realtionItems != null)
  59. {
  60. realtionItems.ForEach(r => r.GraphId = graphId);
  61. }
  62. #region 删除拓扑关系
  63. var deleteObject = new JObject();
  64. var deleteArray = new JArray();
  65. var deleteCondition = new JObject();
  66. deleteCondition.Add("graph_id", graphId);
  67. deleteArray.Add(deleteCondition);
  68. deleteObject.Add("criterias", deleteArray);
  69. RelationRequest.DeleteRelation(deleteObject);
  70. #endregion
  71. if (realtionItems!=null&&realtionItems.Any())
  72. {
  73. var jarry = JArray.FromObject(realtionItems);
  74. JObject jobject = new JObject();
  75. jobject.Add("criterias", jarry);
  76. var result=RelationRequest.AddRelation(jobject);
  77. }
  78. }
  79. }
  80. }