/// <summary> /// 报表,删除defautcode /// </summary> /// <param name="Setting"></param> protected void RemoveDefautcodeFromSC(ReportWidget Setting) { List <ReportWidgetColumn> columns = new List <ReportWidgetColumn>(); if (Setting.Series != null && Setting.Series.Length > 0) { foreach (ReportWidgetColumn q in Setting.Series) { if (q.ColumnCode == ReportWidgetColumn.DefaultCountCode) { continue; } columns.Add(q); } Setting.Series = columns.ToArray(); } columns = new List <ReportWidgetColumn>(); if (Setting.Categories != null && Setting.Categories.Length > 0) { foreach (ReportWidgetColumn q in Setting.Categories) { if (q.ColumnCode == ReportWidgetColumn.DefaultCountCode) { continue; } columns.Add(q); } Setting.Categories = columns.ToArray(); } }
/// <summary> /// 获取报表数据源的列集合 /// </summary> /// <param name="Filters"></param> /// <param name="reportWidget"></param> /// <param name="ReportSource"></param> /// <param name="ChildCodes"></param> /// <returns></returns> protected List <ReportWidgetColumn> GetSourceColumns(ReportFilter[] Filters, ReportWidget reportWidget, ReportSource ReportSource, out Dictionary <string, ColumnSummary> ChildCodes) { ChildCodes = new Dictionary <string, ColumnSummary>(); List <ReportWidgetColumn> SourceColumns = this.Engine.ReportQuery.GetSourceColumns(this.Engine, reportWidget, ReportSource); List <ReportWidgetColumn> results = new List <ReportWidgetColumn>(); foreach (ReportWidgetColumn c in SourceColumns) { if (reportWidget.ContainColumn(Filters, c.ColumnCode, ReportSource, this.Engine.BizObjectManager, this.Engine.Organization, this.Engine.EngineConfig.DBType, c.DisplayName)) { results.Add(c); } } //设置主表id为,I_ccc.objectid string MainObjectId = this.GetMainObjectId(ReportSource.SchemaCode); string MainObjectId_Name = this.GetMainObjectId_Name(ReportSource.SchemaCode); //当有主表和子表字段时,加column 主表objectid,用于明细表关联 this.DetailNeedMainObjectId(reportWidget, ReportSource, out ChildCodes); ReportWidgetColumn MainObjectIdColumn = new ReportWidgetColumn(); MainObjectIdColumn.ColumnCode = MainObjectId_Name; MainObjectIdColumn.ColumnName = MainObjectId; MainObjectIdColumn.DisplayName = MainObjectId; if (!ReportSource.IsUseSql) { results.Add(MainObjectIdColumn); } return(results); }
/// <inheritdoc /> /// <summary> /// Create new report widget /// </summary> /// <param name="reportId"></param> /// <returns></returns> public virtual async Task <ResultModel> CreateNewReportWidgetAsync(Guid?reportId) { var result = new ResultModel(); var report = await _reportContext.DynamicReports.FirstOrDefaultAsync(x => x.Id.Equals(reportId)); if (report == null) { result.Errors.Add(new ErrorModel(string.Empty, nameof(NullReferenceException))); return(result); } var widget = new ReportWidget { WidgetGroupId = WidgetType.REPORT, ReportId = report.Id, Name = report.Name, WidgetTemplateType = WidgetTemplateType.Razor, Template = "" }; await _context.ReportWidgets.AddAsync(widget); return(await _context.PushAsync()); }
/// <summary> /// 是否是明细数据所需要的主键ObjectID /// </summary> /// <param name="reportWidget"></param> /// <param name="ReportSource"></param> /// <param name="ChildCodes"></param> /// <returns></returns> private bool DetailNeedMainObjectId(ReportWidget reportWidget, ReportSource ReportSource, out Dictionary <string, ColumnSummary> ChildCodes) { ChildCodes = new Dictionary <string, ColumnSummary>(); Dictionary <string, ColumnSummary> Codes = new Dictionary <string, ColumnSummary>(); if (ReportSource.ReportSourceAssociations == null || ReportSource.ReportSourceAssociations.Length == 0) { return(false); } List <string> schemaCodes = new List <string>(); List <string> propertyCodes = new List <string>(); Dictionary <string, string> propertyNames = new Dictionary <string, string>(); Dictionary <string, string> displayNameTable = new Dictionary <string, string>(); //数据模型是否存在,子对象显示名称 { List <string> tempSchemaCodes = new List <string>(); List <string> childSchemaCodes = new List <string>(); foreach (ReportSourceAssociation q in ReportSource.ReportSourceAssociations) { if (q.IsSubSheet && q.MasterField.ToLowerInvariant() == ("I" + q.RootSchemaCode + "_ObjectID").ToLowerInvariant() && q.SubField.ToLowerInvariant() == ("I" + q.SchemaCode + "_ParentObjectID").ToLowerInvariant()) { tempSchemaCodes.Add(q.SchemaCode); tempSchemaCodes.Add(q.RootSchemaCode); childSchemaCodes.Add(q.SchemaCode); } } // if (tempSchemaCodes.Count == 0 || (tempSchemaCodes.Count > 0 && !this.Engine.BizObjectManager.ExistSchemas(tempSchemaCodes.ToArray()))) if (tempSchemaCodes.Count == 0) { return(false); } if (childSchemaCodes.Count > 0) { displayNameTable = this.GetSchemasDisplayName(OThinker.Data.Utility.RemoveRedundant <string>(childSchemaCodes.ToArray())); } } foreach (ReportSourceAssociation q in ReportSource.ReportSourceAssociations) { if (q.IsSubSheet && q.MasterField.ToLowerInvariant() == ("I" + q.RootSchemaCode + "_ObjectID").ToLowerInvariant() && q.SubField.ToLowerInvariant() == ("I" + q.SchemaCode + "_ParentObjectID").ToLowerInvariant()) { schemaCodes.Add(q.RootSchemaCode); propertyCodes.Add(q.SchemaCode); //前面有schema的存在性判断,这里不需要再判断 string displayname = displayNameTable[q.SchemaCode]; Codes.Add(q.SchemaCode, new ColumnSummary() { DisplayName = displayname }); } } if (schemaCodes.Count > 0) { propertyNames = this.GetPropertiesName(schemaCodes.ToArray(), propertyCodes.ToArray()); } foreach (ReportSourceAssociation q in ReportSource.ReportSourceAssociations) { if (q.IsSubSheet && q.MasterField.ToLowerInvariant() == ("I" + q.RootSchemaCode + "_ObjectID").ToLowerInvariant() && q.SubField.ToLowerInvariant() == ("I" + q.SchemaCode + "_ParentObjectID").ToLowerInvariant()) { if (propertyNames.ContainsKey(q.RootSchemaCode + q.SchemaCode)) { Codes.Add(q.SchemaCode, new ColumnSummary() { DisplayName = propertyNames[q.RootSchemaCode + q.SchemaCode] }); } } else { return(false); } } //树; foreach (ReportWidgetColumn q in reportWidget.Columns) { string originalcode = this.GetOriginalCode(q.ColumnCode); ColumnSummary t = new ColumnSummary(); t.DisplayName = q.DisplayName; t.Code = q.ColumnCode; if (Codes.ContainsKey(originalcode)) { if (ChildCodes.ContainsKey(originalcode)) { ChildCodes[originalcode].ChildeColumnSummary.Add(q.ColumnCode, t); } else { ChildCodes.Add(originalcode, Codes[originalcode]); ChildCodes[originalcode].ChildeColumnSummary.Add(q.ColumnCode, t); } } else { ChildCodes.Add(q.ColumnCode, new ColumnSummary() { DisplayName = q.DisplayName, Code = q.ColumnCode }); } } return(true); }