private List <SemanticsModel> JsonToSemantics(string json) { var semantics = new List <SemanticsModel>(); var userName = CurrentUser.Name; var words = Server.UrlDecode(json); var tokens = JArray.Parse(words); if (tokens.HasValues) { var i = 0; foreach (var token in tokens) { var fTermClassId = token["FTermClassId"].ToString(); var sr = token["SR"].ToString(); var lTermClassId = token["LTermClassId"].ToString(); var fTerm = token["FTerm"].ToString(); var lTerm = token["LTerm"].ToString(); var model = new SemanticsModel() { FTermClassId = fTermClassId.ToInt32(), LTermClassId = lTermClassId.ToInt32(), FTerm = fTerm, LTerm = lTerm, SR = sr, CreatedBy = userName, CreatedDate = DateTime.Now, LastUpdatedBy = userName, LastUpdatedDate = DateTime.Now, OrderIndex = i++ }; semantics.Add(model); } } return(semantics); }
// 添加子节点 public JsonResult AddChildNode(string termGuid, string model, string textterm) { var newmodel = model.JsonTo <CcTermModel>(); newmodel.CreatedBy = newmodel.LastUpdatedBy = CurrentUser.Name;//正式测试的时候使用 newmodel.CreatedDate = newmodel.LastUpdatedDate = DateTime.Now; var ccTermInfo = _semanticsManageService.GetSRByCC(textterm); newmodel.CCCode = ccTermInfo.CCCode; newmodel.TermClassID = _semanticsManageService.UpdateCcTerm(newmodel, Operate.Create); var ccTerm = _semanticsManageService.GetCcTermById(termGuid.ToInt32()); string sr = _semanticsManageService.GetSRByCC(textterm).SR; if (ccTerm != null && !string.IsNullOrEmpty(sr)) { var newSemantics = new SemanticsModel() { SR = sr, //概念类之间的关系 OrderIndex = newmodel.OrderIndex, //排序号 CreatedDate = newmodel.CreatedDate, //创建日期 CreatedBy = newmodel.CreatedBy, //创建人 FTermClassId = ccTerm.TermClassID, FTerm = ccTerm.Term, LTerm = newmodel.Term, LTermClassId = newmodel.TermClassID, LastUpdatedBy = newmodel.LastUpdatedBy, //最后更新人 LastUpdatedDate = newmodel.LastUpdatedDate, //最后更新时间 Remark = newmodel.Remark, }; _semanticsManageService.UpdateSemantics(newSemantics, Operate.Create); } _list = _semanticsManageService.GetCcTermTree(textterm); return(Json(_list, JsonRequestBehavior.AllowGet)); }
/// <summary> /// 添加别名 /// </summary> /// <param name="semantics">语义关系模型</param> public void AddAlias(SemanticsModel semantics) { var cc = GetCcTermById(semantics.FTermClassId).CCCode; //先查看添加的别名在数据库中是否存在 var newTermClassId = _ccTermRepository.GetQuery() .Where(t => t.Term.Equals(semantics.LTerm) && t.CCCode.Equals(cc)) .Select(t => t.TermClassID) .FirstOrDefault(); //若存在只需添加代的关系 if (newTermClassId != 0) { semantics.LTermClassId = newTermClassId; } //若不存在,需将新词添加到叙词表中 再添加代的关系 else { var newTerm = new CcTermModel() { CCCode = cc, Term = semantics.LTerm, TermClassID = semantics.LTermClassId, CreatedBy = semantics.CreatedBy, CreatedDate = semantics.CreatedDate, LastUpdatedBy = semantics.LastUpdatedBy, OrderIndex = semantics.OrderIndex }; //添加的别名 添加到分类叙词表中 别名的概念类与原词相同 newTerm.OrderIndex = _ccTermRepository.GetQuery().Where(t => t.CCCode == cc).Max(t => t.OrderIndex) + 1; semantics.LTermClassId = UpdateCcTerm(newTerm, Operate.Create); } //添加‘D’的关系到语义关系表中 UpdateSemantics(semantics, Operate.Create); }
public void UpdateSemantics(SemanticsModel item, Operate operate) { var entity = new SD_Semantics { FTermClassId = item.FTermClassId, SR = item.SR, LTermClassId = item.LTermClassId, FTerm = item.FTerm, LTerm = item.LTerm, OrderIndex = item.OrderIndex, CreatedDate = item.CreatedDate, CreatedBy = item.CreatedBy, LastUpdatedDate = item.LastUpdatedDate, LastUpdatedBy = item.LastUpdatedBy, Remark = item.Remark }; switch (operate) { case Operate.Create: _semanticsRepository.Add(entity); break; case Operate.Delete: var semanticsItem = _semanticsRepository.GetQuery() .Where(t => t.FTermClassId == entity.FTermClassId && t.LTermClassId == entity.LTermClassId && t.SR == entity.SR) .FirstOrDefault(); if (semanticsItem != null) { _semanticsRepository.Delete(semanticsItem); } break; default: _semanticsRepository.Update(entity); break; } }
/// <summary> /// 拖拽节点 /// 1、删除和以前和父节点的关系 /// 2、建立和新的父节点的关系 /// 3、更新叙词的关系 /// </summary> /// <param name="sdModel">语义关系实体</param> /// <param name="dragmodel">拖拽节点实体</param> /// <param name="strSr">概念类名称</param> public void DragNodeEf(SemanticsModel sdModel, CcTermModel dragmodel, string cc) { var sr = GetSRByCC(cc).SR; if (string.IsNullOrEmpty(sr)) { return; } //判断拖拽的节点是不是根节点 //countSemantics == 0,是根节点 var countSemantics = _semanticsRepository.Count(o => o.LTermClassId == dragmodel.TermClassID && o.SR == sr); //当拖拽的是根节点是 if (countSemantics == 0 && sdModel.FTerm != null) { sdModel.SR = sr; //修改关系 UpdateSemantics(sdModel, Operate.Create); } //拖拽的不是根节点 else { var oldsdmodel = _semanticsRepository.GetQuery().FirstOrDefault(o => o.LTermClassId == dragmodel.TermClassID && o.SR == sr); //投放的位置是根节点 if (sdModel.FTerm == null) { _semanticsRepository.Delete(oldsdmodel); } //投放的位置不是根节点 else { _semanticsRepository.Delete(oldsdmodel); sdModel.SR = sr; } } _semanticsRepository.Submit(); }
/// <summary> /// 删除别名 /// </summary> /// <param name="semantics">语义关系模型</param> public void DeleteAlias(SemanticsModel semantics) { //只需要删除该“D”的关系,不删除叙词分类表中信息 UpdateSemantics(semantics, Operate.Delete); }