12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- using Newtonsoft.Json;
- using Newtonsoft.Json.Linq;
- using SAGA.GplotRelationComputerManage;
- using SAGA.MBI.RequestData;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using SAGA.DotNetUtils.Extend;
- namespace SAGA.GplotManage
- {
- public abstract class RelationUploader:IRelationUploader
- {
- public RelationUploader(string relationType,string relationDisplay)
- {
- RelationType = relationType;
- RelationDisplay = relationDisplay;
- }
- /*
- *可以将计算写在upload中,就像把计算卸载Show中
- */
- /// <summary>
- /// 图关系类型
- /// </summary>
- public string RelationType { get;private set; }
- /// <summary>
- /// 图关系显示名称
- /// </summary>
- public string RelationDisplay { get; private set; }
- /// <summary>
- /// 上传图关系
- /// </summary>
- public virtual void Upload()
- {
- var data = GetDefaultUploadData();
- Upload(data);
- }
- protected abstract object GetDefaultUploadData();
- /// <summary>
- /// 上传图关系
- /// </summary>
- /// <param name="loadData"></param>
- public virtual void Upload(object loadData)
- {
- var items = CreateGraph(loadData);
- UploadGraph(items);
- }
- /// <summary>
- /// 创建图关系集合
- /// </summary>
- /// <param name="loadData"></param>
- /// <returns></returns>
- protected abstract List<GraphRelationItem> CreateGraph(object loadData);
- public virtual void UploadGraph(List<GraphRelationItem> realtionItems)
- {
- string graphId = RelationRequest.GetCurrentGraphId(RelationType);
- if (graphId == null) return;
- if (realtionItems != null)
- {
- realtionItems.ForEach(r => r.GraphId = graphId);
- }
- #region 删除拓扑关系
- var deleteObject = new JObject();
- var deleteArray = new JArray();
- var deleteCondition = new JObject();
- deleteCondition.Add("graph_id", graphId);
- deleteArray.Add(deleteCondition);
- deleteObject.Add("criterias", deleteArray);
-
- RelationRequest.DeleteRelation(deleteObject);
- #endregion
- if (realtionItems!=null&&realtionItems.Any())
- {
- var blocks = realtionItems.SplitBlock(10000);
- foreach (var block in blocks)
- {
- //var jarry = JArray.FromObject(realtionItems);
- var jarry = JArray.FromObject(block);
- JObject jobject = new JObject();
- jobject.Add("criterias", jarry);
- var result = RelationRequest.AddRelation(jobject);
- if (!result)
- {
- throw new Exception("创建关系失败");
- }
- }
-
- }
- }
- }
- }
|