/// <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; }
/// <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) : "")); }
/// <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>())); }
/// <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(); }
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)); }
/// <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>())); }
/// <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); }
/// <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); }
/// <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); }
/// <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())); }
/// <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()); } }
/// <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); }
/// <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>()); }
public IDSpec(string ids) : base("ID", ALConvert.ToList <long>(ids)) { }
/// <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); }
/// <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()); }
public DataTable GetTagByTagClassID(string TagClassID) { return(this.GetTagByTagClassID(ALConvert.ToInt0(TagClassID), (long?)null)); }