예제 #1
0
        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);
        }
예제 #2
0
        // 添加子节点
        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));
        }
예제 #3
0
        /// <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);
        }
예제 #4
0
        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;
            }
        }
예제 #5
0
        /// <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();
        }
예제 #6
0
 /// <summary>
 /// 删除别名
 /// </summary>
 /// <param name="semantics">语义关系模型</param>
 public void DeleteAlias(SemanticsModel semantics)
 {
     //只需要删除该“D”的关系,不删除叙词分类表中信息
     UpdateSemantics(semantics, Operate.Delete);
 }