Ejemplo n.º 1
0
        /// <summary>
        /// 保存附件信息
        /// </summary>
        /// <param name="delIDs">需要删除的附件ids</param>
        /// <param name="infos">附件信息</param>
        /// <returns>是否保存成功</returns>
        public virtual bool Save(string delIDs, params SYSAttach[] infos)
        {
            var result = false;

            delIDs = (delIDs ?? string.Empty).Trim(',');

            if (infos == null || !infos.Any()) goto End;

            using (var dbContext = BoundedContext.Create())
            {
                var bo = dbContext.Resolve<STDAttachBO>();//dbContext.Repository<STDAttachInfo>();

                result = true;

                var arr = ALConvert.ToList<long>(delIDs);
                if (arr.Any()) result = bo.Remove(item => arr.Contains(item.ID.Value));

                if (result)
                {
                    foreach (var info in infos)
                    {
                        if (info == null || !(info.ID > 0 ? bo.Modify(info) : bo.Add(info))) { result = false; break; }

                        SaveFile(dbContext, info);
                    }
                }

                if (result) dbContext.Commit();
            }

        End: return result;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 根据贴入对象和标签值查找标签贴入数据和匹配程度
        /// </summary>
        /// <param name="targetID"></param>
        /// <param name="tagIDs"></param>
        /// <returns>查询语句</returns>
        internal string GetTargetObjectIDWithGroupByTargetIDAndTagIDs(long targetID, long[] tagIDs, out int tagClassCount)
        {
            if (tagIDs == null || tagIDs.Length == 0)
            {
                tagIDs = new long[] { 0 }
            }
            ;
            //对输入标签按"标签组"分组
            StringBuilder sb  = new StringBuilder();
            var           kvs = this.UnitOfWork.ToDataTable(DBBuilder.Define("select TagClassID,ID from SYSTag where id in(" + ALConvert.ToString(tagIDs) + ")"))
                                .AsEnumerable()
                                .GroupBy(d => d.Field <int>("TagClassID"));

            tagClassCount = kvs.Count();

            foreach (var kv in kvs)
            {
                //获取当前"标签组"的标签
                var ids = ALConvert.ToString(kv.Select(d => d.Field <int>("ID")));
                sb.AppendFormat(@"max(case when TagID in ({0}) then 1 else 0 end)+", ids);
            }

            return(string.Format(SYSTagApplySql.GetTargetObjectIDWithGroupSql,
                                 targetID,
                                 sb.ToString(),
                                 this.systemID.HasValue ? ("and SystemID=" + this.systemID) : ""));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 返回指定实体已贴入的标签项
        /// </summary>
        /// <typeparam name="T">实体类型</typeparam>
        /// <param name="entity">贴入标签的实体,必须指定ID</param>
        /// <returns>已贴入实体的标签项</returns>
        public List <SYSTag> GetTagApplyInfos <T>(T entity) where T : Entity, new()
        {
            long targetID       = this.tagTargetBO[entity.Property.TableAttribute.TableName].ID.Value;
            long targetObjectID = ALConvert.ToLong0(entity.ID);

            return(this.FindBySpecification(tagApplyBO.GetTagsByTargetIDAndTargetObjectID(targetID, targetObjectID, null, null, null)
                                            .ToList <SYSTag>()));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        public virtual List<SYSAttach> GetInfos(string ids)
        {
            ids = (ids ?? string.Empty).Trim(',');

            var arr = ALConvert.ToList<long>(ids);
            if (arr.Count==0) return null;

            return this.GetAll(item => arr.Contains(item.ID.Value)).ToList();
        }
Ejemplo n.º 5
0
        public virtual bool Remove(string ids)
        {
            ids = (ids ?? string.Empty).Trim();

            var arr = ALConvert.ToList<long>(ids);
            if (arr.Count==0) return false;

            return base.Remove(item => arr.Contains(item.ID.Value));
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 返回指定实体已贴入的标签项
        /// </summary>
        /// <typeparam name="T">实体类型</typeparam>
        /// <param name="entity">贴入标签的实体,需要指定ID属性</param>
        /// <param name="tagGroupInfo">查询条件,需要指定ID或GroupCode或GroupName属性</param>
        /// <param name="displayLevel">标签类型</param>
        /// <returns>已贴入实体的标签项</returns>
        public List <SYSTag> GetTagApplyInfos <T>(T entity, SYSTagGroup tagGroupInfo, int?displayLevel) where T : Entity, new()
        {
            long targetID       = this.tagTargetBO[entity.Property.TableAttribute.TableName].ID.Value;
            long targetObjectID = ALConvert.ToLong0(entity.Property.GetValue(entity.Property.TableAttribute.PrimaryKey));
            long?tagGroupID     = tagGroupBO.GetIDByTagGroup(tagGroupInfo);

            return(this.FindBySpecification(tagApplyBO.GetTagsByTargetIDAndTargetObjectID(targetID, targetObjectID, null, tagGroupID, displayLevel)
                                            .ToList <SYSTag>()));
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 删除已贴入实体的标签
        /// </summary>
        /// <typeparam name="T">实体类型</typeparam>
        /// <param name="entity">要取消贴入标签的实体,需要指定ID属性</param>
        /// <param name="tagGroupInfo">查询条件,需要指定ID或GroupCode或GroupName属性</param>
        /// <returns></returns>
        public ITag UnApply <T>(T entity, SYSTagGroup tagGroupInfo) where T : Entity, new()
        {
            long?tagGroupID = tagGroupBO.GetIDByTagGroup(tagGroupInfo);

            tagApplyBO.DeleteByCompanyIDAndTagGroupID(
                tagTargetBO[entity.Property.TableAttribute.TableName].ID.Value,
                ALConvert.ToLong0(entity.Property.GetValue("ID")),
                tagGroupID.Value);
            return(this);
        }
Ejemplo n.º 8
0
 /// <summary>
 /// 将指定的标签项贴入实体
 /// </summary>
 /// <typeparam name="T">实体类型</typeparam>
 /// <param name="tagInfo">标签,需要指定ID属性</param>
 /// <param name="entity">要贴入标签的实体,需要指定ID属性</param>
 /// <returns></returns>
 public ITag Apply <T>(SYSTag tagInfo, T entity) where T : Entity, new()
 {
     tagApplyBO.Save(new SYSTagApply
     {
         TagID          = tagInfo.ID,
         TargetID       = tagTargetBO[entity.Property.TableAttribute.TableName].ID,
         TargetObjectID = ALConvert.ToLong(entity.Property.GetValue(entity.Property.TableAttribute.PrimaryKey))
     });
     return(this);
 }
Ejemplo n.º 9
0
 /// <summary>
 /// 删除已贴入实体的标签
 /// </summary>
 /// <typeparam name="T">实体类型</typeparam>
 /// <param name="entity">要取消贴入标签的实体,需要指定ID属性</param>
 /// <param name="tagClassIDs">标签ID</param>
 /// <returns></returns>
 public ITag UnApply <T>(T entity, IEnumerable <long> tagClassIDs) where T : Entity, new()
 {
     foreach (long tagClassID in tagClassIDs)
     {
         tagApplyBO.DeleteByCompanyIDAndTagClassID(
             tagTargetBO[entity.Property.TableAttribute.TableName].ID.Value,
             ALConvert.ToLong0(entity.Property.GetValue("ID")),
             tagClassID);
     }
     return(this);
 }
Ejemplo n.º 10
0
        /// <summary>
        /// 返回指定实体已贴入的标签组日志
        /// </summary>
        /// <typeparam name="T">实体类型</typeparam>
        /// <param name="tagClassInfo">查询条件,需要指定ID或ClassCode或ClassName属性</param>
        /// <param name="entity">贴入标签的实体,需要指定ID属性</param>
        /// <returns></returns>
        public List <SYSTagLogs> GetTagLogs <T>(SYSTagClass tagClassInfo, T entity) where T : Entity, new()
        {
            //int targetID = this.tagTargetBO[entity.TableAttribute.TableName].ID.Value;
            long targetObjectID = ALConvert.ToLong0(entity.Property.GetValue(entity.Property.TableAttribute.PrimaryKey));
            long?tagClassID     = tagClassBO.GetIDByTagClass(tagClassInfo);

            return(this.FindBySpecification(tagLogsBO.GetAll(new SYSTagLogs
            {
                TagClassID = tagClassID.Value,
                //标签日志暂时不区分数据表 TargetObject = targetID.ToString(),
                TargetObjectID = targetObjectID
            }.AsSpec()).ToList()));
        }
Ejemplo n.º 11
0
        /// <summary>
        /// 返回指定实体已贴入的标签项编号
        /// </summary>
        /// <typeparam name="T">实体类型</typeparam>
        /// <param name="entity">贴入标签的实体,必须指定ID</param>
        /// <returns>已贴入实体的标签项编号</returns>
        public List <long> GetTagApplies <T>(T entity) where T : Entity, new()
        {
            long targetID       = this.tagTargetBO[entity.Property.TableAttribute.TableName].ID.Value;
            long targetObjectID = ALConvert.ToLong0(entity.Property.GetValue(entity.Property.TableAttribute.PrimaryKey));

            if (this.specification == null)
            {
                return(tagApplyBO.GetTagIDValuesByTargetIDAndTargetObjectID(targetID, targetObjectID));
            }
            else
            {
                return(this.FindBySpecification(tagApplyBO.GetTagsByTargetIDAndTargetObjectID(targetID, targetObjectID, null, null, null)
                                                .ToList <SYSTag>()).Select(d => d.ID.Value).ToList());
            }
        }
Ejemplo n.º 12
0
        /// <summary>
        /// 将指定的标签项贴入多个实体
        /// </summary>
        /// <typeparam name="T">实体类型</typeparam>
        /// <param name="tagInfo">标签,需要指定ID属性</param>
        /// <param name="entity">要贴入标签的实体,需要指定ID属性</param>
        public ITag Apply <T>(SYSTag tagInfo, List <T> entity) where T : Entity, new()
        {
            List <SYSTagApply> tagApplyInfo = new List <SYSTagApply>();

            entity.ForEach(d =>
            {
                tagApplyInfo.Add(new SYSTagApply
                {
                    TagID          = tagInfo.ID,
                    TargetID       = tagTargetBO[d.Property.TableAttribute.TableName].ID,
                    TargetObjectID = ALConvert.ToLong(d.Property.GetValue(d.Property.TableAttribute.PrimaryKey))
                });
            });
            tagApplyBO.Save(tagApplyInfo);
            return(this);
        }
Ejemplo n.º 13
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        public static List <SysAttachInfo> GetSysAttach(List <int> ids)
        {
            string sql = string.Format("SELECT * FROM SysAttach WHERE id in ({0})", ALConvert.ListToString <int>(ids, ','));

            return(DBHelperProxy.GetDataTable(sql).ToList <SysAttachInfo>());
        }
Ejemplo n.º 14
0
 public IDSpec(string ids)
     : base("ID", ALConvert.ToList <long>(ids))
 {
 }
Ejemplo n.º 15
0
 /// <summary>
 /// 删除已贴入实体的全部标签项
 /// </summary>
 /// <typeparam name="T">实体类型</typeparam>
 /// <param name="entity">要取消贴入标签的实体,需要指定ID属性</param>
 public ITag UnApply <T>(T entity) where T : Entity, new()
 {
     tagApplyBO.DeleteByCompanyID(tagTargetBO[entity.Property.TableAttribute.TableName].ID.Value, ALConvert.ToLong0(entity.Property.GetValue("ID")));
     return(this);
 }
Ejemplo n.º 16
0
        /// <summary>
        /// 解析被授权的标签
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        private SYSTagNodeDTO[] getNodes(SYSTagConferAuthorityDTO dto)
        {
            ITag tag = TagService.GetInstance();

            tag.DependOn(this.Context);

            List <SYSTagNodeDTO> dtos = new List <SYSTagNodeDTO>();

            if (dto.TagNode.NodeType == EnumSYSTagNodeType.Tag)
            {
                //新增标签项权限
                if ((dto.AuthorityRange | EnumSYSTagRange.Parents) == dto.AuthorityRange)
                {
                    var tagInfo      = tag.GetTag(dto.TagNode.ID.Value);
                    var tagclassInfo = tag.GetTagClass(tagInfo.TagClassID.Value);
                    var taggroupInfo = tag.GetTagGroup(tagclassInfo.AppID.Value);

                    dtos.Add(SYSTagNodeDTO.Parse(taggroupInfo));
                    dtos.Add(SYSTagNodeDTO.Parse(tagclassInfo));
                    //返回当前标签项的父级节点
                    ALConvert.ToList <int>(tagInfo.Path)
                    .FindAll(d => d != 0 && d != tagInfo.ID)
                    .ForEach(d => dtos.Add(SYSTagNodeDTO.Parse(tag.GetTag(d))));
                }
                if ((dto.AuthorityRange | EnumSYSTagRange.Current) == dto.AuthorityRange)
                {
                    dtos.Add(SYSTagNodeDTO.Parse(tag.GetTag(dto.TagNode.ID.Value)));
                }
                if ((dto.AuthorityRange | EnumSYSTagRange.Children) == dto.AuthorityRange)
                {
                    tag.GetTagsByParentID(dto.TagNode.ID.Value)
                    .ForEach(d => dtos.Add(SYSTagNodeDTO.Parse(d)));
                }
            }
            else if (dto.TagNode.NodeType == EnumSYSTagNodeType.TagClass)
            {
                //新增标签权限
                if ((dto.AuthorityRange | EnumSYSTagRange.Parents) == dto.AuthorityRange)
                {
                    dtos.Add(SYSTagNodeDTO.Parse(tag.GetTagGroup(dto.TagNode.ParentID.Value)));
                }
                if ((dto.AuthorityRange | EnumSYSTagRange.Current) == dto.AuthorityRange)
                {
                    dtos.Add(SYSTagNodeDTO.Parse(tag.GetTagClass(dto.TagNode.ID.Value)));
                }
                if ((dto.AuthorityRange | EnumSYSTagRange.Children) == dto.AuthorityRange)
                {
                    tag.GetTagsByClassID(dto.TagNode.ID.Value)
                    .ForEach(d => dtos.Add(SYSTagNodeDTO.Parse(d)));
                }
            }
            else if (dto.TagNode.NodeType == EnumSYSTagNodeType.TagGroup)
            {
                //新增标签组权限
                if ((dto.AuthorityRange | EnumSYSTagRange.Current) == dto.AuthorityRange)
                {
                    dtos.Add(SYSTagNodeDTO.Parse(tag.GetTagGroup(dto.TagNode.ID.Value)));
                }
                if ((dto.AuthorityRange | EnumSYSTagRange.Children) == dto.AuthorityRange)
                {
                    tag.GetTagClassesByGroupCode(dto.TagNode.Code, (int?)dto.TagDisplayLevel)
                    .ForEach(d => dtos.Add(SYSTagNodeDTO.Parse(d)));
                    tag.GetTagsByGroupCode(dto.TagNode.Code, (int?)dto.TagDisplayLevel)
                    .ForEach(d => dtos.Add(SYSTagNodeDTO.Parse(d)));
                }
            }
            return(dtos.ToArray());
        }
Ejemplo n.º 17
0
 public DataTable GetTagByTagClassID(string TagClassID)
 {
     return(this.GetTagByTagClassID(ALConvert.ToInt0(TagClassID), (long?)null));
 }