Beispiel #1
0
        public IActionResult Setting(Guid belongToId)
        {
            var selectedFields = _InterfaceConditionRepository.GetInterfaceConditionByBelongToId(belongToId);

            ViewData["MetaFields"] = _metaFieldRepository.GetListUnDeletedByMetaObjectId(CurrentMetaObjectId);

            ViewData["Id"] = belongToId;

            return(View(selectedFields));
        }
        public Result AddNode(Guid brotherNodeId, InterfaceCondition entity)
        {
            return(TransactionHelper.Transaction(() =>
            {
                Guid parentId = brotherNodeId;

                //如果兄弟节点!=空,说明当前树有值。反之,则构建新树
                if (parentId != Guid.Empty)
                {
                    //判断是否有树存在
                    List <InterfaceCondition> conditionListExist = _InterfaceConditionRepository.GetInterfaceConditionByBelongToId(entity.BelongToCondition);

                    //查看当前兄弟节点的父节点id
                    InterfaceCondition brotherCondition = conditionListExist.FirstOrDefault(t => t.Id == brotherNodeId);

                    parentId = brotherCondition.ParentId;

                    //拿到父节点的信息
                    InterfaceCondition parentCondition = conditionListExist.FirstOrDefault(t => t.Id == parentId);

                    //如果父节点的连接条件和当前新建的条件一致,则不需要新建条件节点,直接附加在已有的条件下面
                    if (parentCondition == null || parentCondition.ConditionJointType != entity.ConditionJointType)
                    {
                        //先添加一个父节点,然后把兄弟节点的父节点指向新建的父节点
                        InterfaceCondition newParentCondition = new InterfaceCondition
                        {
                            Id = Guid.NewGuid(),
                            Code = Guid.NewGuid().ToString(),
                            BelongToCondition = entity.BelongToCondition,
                            ParentId = conditionListExist.Count > 0 ? parentId : Guid.Empty, //如果有树,则插入节点的父节点为刚才的兄弟节点的父节点,否则,插入根节点
                            MetaFieldId = Guid.Empty,                                        //连接节点没有field
                            MetaFieldShortCode = "-1",
                            ConditionType = entity.ConditionType,
                            ConditionJointType = entity.ConditionJointType,
                            Name = ((ConditionJointTypeEnum)entity.ConditionJointType).GetDescription(),
                            ConditionValue = "-1",
                            ConditionValueType = -1,
                            ConditionNodeType = (int)NodeTypeEnum.Joint,
                            CloudApplicationtId = entity.CloudApplicationtId,
                            MetaObjectId = entity.MetaObjectId
                        };

                        _InterfaceConditionRepository.Add(newParentCondition);

                        //将兄弟节点的父节点指向新插入的节点
                        brotherCondition.ParentId = newParentCondition.Id;

                        _InterfaceConditionRepository.Update(brotherCondition);

                        //重新赋值parentId
                        parentId = newParentCondition.Id;
                    }
                }

                //检验是否没有条件节点
                //if (parentId == Guid.Empty)
                //{
                //    if (_InterfaceConditionRepository.GetById(parentId) != null)
                //    {
                //        return Result.Error("已经存在条件节点,请查证后操作!");
                //    }
                //}

                //新增节点
                MetaField metaField = _metaFieldRepository.GetById(entity.MetaFieldId);

                InterfaceCondition newCondition = new InterfaceCondition
                {
                    Id = Guid.NewGuid(),
                    Code = Guid.NewGuid().ToString(),
                    BelongToCondition = entity.BelongToCondition,
                    ParentId = parentId,
                    MetaFieldId = entity.MetaFieldId,
                    MetaFieldShortCode = metaField.ShortCode,
                    ConditionType = entity.ConditionType,
                    Name = $"{metaField.ShortCode} {((ConditionTypeEnum)entity.ConditionType).GetDescription()} {entity.ConditionValue}",
                    ConditionValue = entity.ConditionValue,
                    ConditionValueType = entity.ConditionValueType,
                    ConditionNodeType = (int)NodeTypeEnum.Condition,
                    CloudApplicationtId = entity.CloudApplicationtId,
                    MetaObjectId = entity.MetaObjectId
                };

                _InterfaceConditionRepository.Add(newCondition);

                return Result.Success("保存成功!");
            }));
        }