public TableReportContext AddTableReportCondition(TableReportContext context, Guid leftSourceId, Guid leftAttrId, ReportConditionDefType type = ReportConditionDefType.Param) { var conditionDef = context.Def.AddCondition(leftSourceId, leftAttrId, CompareOperation.Equal, type); if (type == ReportConditionDefType.Param) { var attr = context.Def.GetAttribute(conditionDef.LeftAttribute); var attrDef = attr as AttrDef; var sysAttrDef = attr as ReportSourceSystemAttributeDef; if (attrDef != null && attrDef.Type.Id == (short)CissaDataType.Enum && attrDef.EnumDefType != null) { var rightPart = conditionDef.RightPart as ReportConditionRightParamDef; if (rightPart != null) { var provider = Provider.Get <IEnumRepository>(); rightPart.Values = new List <EnumValue>(provider.GetEnumItems(attrDef.EnumDefType.Id)); } } else if (sysAttrDef != null && sysAttrDef.Ident == SystemIdent.State) { var sourceDef = context.Def.GetSourceDef(leftSourceId); var rightPart = conditionDef.RightPart as ReportConditionRightParamDef; if (rightPart != null) { var provider = Provider.Get <IDocDefStateListProvider>(); rightPart.Values = provider.Get(sourceDef.DocDef.Id).Select(dst => new EnumValue { Id = dst.Id, Value = dst.Name }).ToList(); } } } return(context); }
public byte[] ExecuteTableReport(TableReportContext context) { try { using (var stream = new MemoryStream()) { // DONE: Реализовать генерацию отчета var xlsDefBuilder = Provider.Get <IBuilder <ReportDef, XlsDef> >(); using (var xlsDef = xlsDefBuilder.Build(context.Def)) { var builder = new XlsBuilder(xlsDef); using (var workbook = builder.Build()) { workbook.Write(stream); return(stream.ToArray()); } } } } catch (Exception e) { try { var fn = Logger.GetLogFileName("ReportManagerError"); Logger.OutputLog(fn, e, "ExecuteTableReport Error"); } catch { } throw; } }
public TableReportContext DeserializeTableReport(byte[] data) { try { ReportDef def; var s = Encoding.UTF8.GetString(data).TrimEnd('\0'); var pos = s.IndexOf("<", StringComparison.Ordinal); if (pos > 0) { s = s.Substring(pos); } //using (var stream = new StringStream(data)) { using (var streamReader = new StringReader(s /*, Encoding.UTF8*/)) { var settings = new XmlReaderSettings { CheckCharacters = false }; using (var reader = XmlTextReader.Create(streamReader, settings)) { var serializer = new XmlSerializer(typeof(ReportDef)); def = (ReportDef)serializer.Deserialize(reader); } } } var relations = def.Sources.Select(sourceDef => new ReportSourceRelations { SourceId = sourceDef.Id, Relations = new List <DocDefRelation>(DocDefRepo.GetDocDefRelations(sourceDef.DocDef.Id)) }).ToList(); var context = new TableReportContext { Def = def, SourceRelations = relations }; return(context); } catch (Exception e) { try { var fn = Logger.GetLogFileName("ReportManagerError"); Logger.OutputLog(fn, e, "DeserializeReportDef Error"); } catch { ; } throw; } }
public TableReportContext AddTableReportColumns(TableReportContext context, Guid sourceId, Guid[] attrDefIds) { foreach (var attrDefId in attrDefIds) { context.Def.AddColumn(sourceId, attrDefId); } return(context); }
public byte[] SerializeTableReport(TableReportContext context) { try { //string s; var serializer = new XmlSerializer(typeof(ReportDef)); using (var stream = new MemoryStream()) { context.Def.Check(); var settings = new XmlWriterSettings() { Encoding = Encoding.UTF8, Indent = true, NewLineOnAttributes = true, }; using (var writer = XmlTextWriter.Create(stream, settings) /*new StreamWriter(stream, Encoding.UTF8)*/) { serializer.Serialize(writer, context.Def); //(stream, context.Def); stream.Position = 0; return(stream.GetBuffer()); /* * using (var reader = new StreamReader(stream, Encoding.UTF8)) * { * s = reader.ReadToEnd(); * }*/ } } //return s; } catch (Exception e) { try { var fn = Logger.GetLogFileName("ReportManagerError"); Logger.OutputLog(fn, e, "SerializeReportDef Error"); } catch { ; } throw; } }
public TableReportContext CreateTableReport(Guid docDefId) { var docDef = DocDefRepo.DocDefById(docDefId); var docDefRelations = DocDefRepo.GetDocDefRelations(docDefId); // var sourceItemId = Guid.NewGuid(); var def = ReportDefHelper.Create(docDef); var context = new TableReportContext { Def = def, SourceRelations = new List <ReportSourceRelations>(new[] { new ReportSourceRelations { SourceId = def.SourceId, Relations = new List <DocDefRelation>(docDefRelations) } }) }; return(context); }
public TableReportContext JoinTableReportSource(TableReportContext context, Guid masterSourceId, Guid docDefId, Guid attrDefId) { var joinDef = context.Def.JoinDocDefSource(masterSourceId, DocDefRepo.DocDefById(docDefId), attrDefId); var docDefNames = DocDefRepo.GetDocDefNames(); var relations = DocDefRepo.GetDocDefRelations(docDefId) .Where( r => docDefNames.Any(dd => dd.Id == r.DocDefId) && docDefNames.Any(dd => dd.Id == r.RefDocDefId)) .ToList(); if (context.SourceRelations == null) { context.SourceRelations = new List <ReportSourceRelations>(); } context.SourceRelations.Add( new ReportSourceRelations { SourceId = joinDef.SourceId, Relations = relations }); return(context); }
public TableReportContext RemoveTableReportCondition(TableReportContext context, Guid conditionId) { context.Def.RemoveCondition(conditionId); return(context); }
public TableReportContext AddTableReportExpCondition(TableReportContext context) { context.Def.AddExpConditionDef(); return(context); }
public TableReportContext AddTableReportAttributeCondition(TableReportContext context, Guid leftSourceId, Guid leftAttrId, CompareOperation operation, Guid rightSourceId, Guid rightAttrId) { context.Def.AddAttributeCondition(leftSourceId, leftAttrId, operation, rightSourceId, rightAttrId); return(context); }
public TableReportContext AddTableReportParamCondition(TableReportContext context, Guid sourceId, Guid attrDefId, CompareOperation operation, object value, string paramCaption) { context.Def.AddParamCondition(sourceId, attrDefId, operation, value, paramCaption); return(context); }
public TableReportContext AddTableReportColumn(TableReportContext context, Guid sourceId, Guid attrDefId) { context.Def.AddColumn(sourceId, attrDefId); return(context); }
public TableReportContext RemoveTableReportSource(TableReportContext context, Guid sourceId) { context.Def.RemoveSource(sourceId); return(context); }