示例#1
0
        private Stream GenerateWithFault(IReportTemplate template, IReportExporter exporter)
        {
            IGenerationContext context = new GenerationContext()
            {
                Engine = this, Template = template
            };

            foreach (IDataSource item in template.DataSources)
            {
                try
                {
                    item.Provider.Initialize();
                    item.Provider.RetrieveData(context);
                }
                catch (Exception ex)
                {
                    throw new DataSourceInitializeException(item.Name, ex);
                }
            }

            foreach (IReportTemplateSection section in template.Sections)
            {
                PrepareElement(context, section.RootElement);
            }

            Stream stream = exporter.Export(context);

            stream.Position = 0L;

            return(stream);
        }
示例#2
0
        Stream IReportTemplateFactory.Save(IReportTemplate template)
        {
            if (template == null)
            {
                throw new ArgumentNullException("template");
            }

            return(_serializer.Serialize(template));
        }
示例#3
0
        public ReportCompanyInfo(IReportTemplate reportTemplate, ReportCompanyInfoCollection reportInfo)
        {
            ManagementCompanyId = reportTemplate.ManagementCompany.Key;
            CompanyName = reportTemplate.ManagementCompany.CompanyName.Trim();
            PdfFolder = reportTemplate.ManagementCompany.PdfReportsFolder.Trim();
            ShowLogoByDefault = reportTemplate.ManagementCompany.ShowLogoByDefault;
            ReportTemplateName = reportTemplate.ReportTemplateName.Trim();

            ReportInfo = reportInfo;
        }
示例#4
0
        public JsonResult Create(CreateReportModel model)
        {
            IReportTemplate template = _templateFactory.Create(new DescriptionMetadata()
            {
                Name = model.Name, Author = model.CreatedBy
            });

            template.DataSources.Set(new DataSource("", new StaticDataProvider().Set("test", 4711).Set("switch", true)));

            // Un-comment this to add a data provider which returns a DataSet with data filled by a custom script written in C#.
            //template.DataSources.Set(new DataSource("scr1", new ScriptDataProvider()
            //{
            //    ScriptTypeKey = "cs",
            //    ScriptText = @"DataSet result = new DataSet(""Created from code""); result.Tables.Add(""Hello world""); return result;"
            //}));

            IReportTemplateSection section = template.Sections.GetSection(SectionType.Detail);

            ICompositionElement rootElement = new VerticalContainerElement();

            rootElement.Set("data-source", "");
            rootElement.AddChild(new StaticLabelElement()
            {
                Value = "Hello, world!"
            });
            rootElement.AddChild(new TableElement()
            {
                DataSource = "ours"
            });
            section.RootElement = rootElement;

            string definition = null;

            using (StreamReader reader = new StreamReader(_templateFactory.Save(template)))
            {
                definition = reader.ReadToEnd();
            }

            ReportData rd = new ReportData()
            {
                Name       = model.Name,
                Guid       = Guid.NewGuid(),
                CreatedAt  = DateTimeOffset.Now,
                CreatedBy  = model.CreatedBy,
                Definition = definition
            };

            using (IDataRepository repository = GetRepository())
            {
                repository.Add(rd);
            }

            return(Json(new { success = true, name = rd.Name, guid = rd.Guid }, JsonRequestBehavior.AllowGet));
        }
示例#5
0
        Stream IReportEngine.Generate(IReportTemplate template, Type exporterType)
        {
            if (exporterType == null)
            {
                throw new ArgumentNullException("exporterType");
            }

            IReportExporter exporter = (IReportExporter)Activator.CreateInstance(exporterType);

            using (IReportExporter exp = exporter)
            {
                return(Generate(template, exporter));
            }
        }
示例#6
0
        Stream IReportEngine.Generate(IReportTemplate template, Type exporterType)
        {
            if (exporterType == null)
            {
                throw new ArgumentNullException("exporterType");
            }

            IReportExporter exporter = (IReportExporter)Activator.CreateInstance(exporterType);

            using (IReportExporter exp = exporter)
            {
                return Generate(template, exporter);
            }
        }
示例#7
0
        private Stream Generate(IReportTemplate template, IReportExporter exporter)
        {
            if (template == null)
            {
                throw new ArgumentNullException("template");
            }

            if (exporter == null)
            {
                throw new ArgumentNullException("exporter");
            }

            try
            {
                return(GenerateWithFault(template, exporter));
            }
            catch (Exception ex)
            {
                throw new ReportGenerationException(ex);
            }
        }
示例#8
0
        private Stream Generate(IReportTemplate template, IReportExporter exporter)
        {
            if (template == null)
            {
                throw new ArgumentNullException("template");
            }

            if (exporter == null)
            {
                throw new ArgumentNullException("exporter");
            }

            try
            {
                return GenerateWithFault(template, exporter);
            }
            catch (Exception ex)
            {
                throw new ReportGenerationException(ex);
            }
        }
示例#9
0
        private Stream GenerateReport(string guid, Type exporterType)
        {
            IReportTemplate template = null;

            using (IDataRepository repository = new DataRepository())
            {
                ReportData report = repository.Get(guid);
                if (report != null)
                {
                    template = _templateFactory.Create(new MemoryStream(Encoding.UTF8.GetBytes(report.Definition)));
                }
            }

            /* Attach our custom data source.
             */
            StaticDataProvider ours = new StaticDataProvider();

            ours.AddTable(new System.Data.DataTable());
            ours.Tables.First().Columns.Add(new System.Data.DataColumn("Id", typeof(int))
            {
                AutoIncrement = true, AutoIncrementSeed = 1, AutoIncrementStep = 1, AllowDBNull = false
            });
            ours.Tables.First().Columns.Add(new System.Data.DataColumn("Text", typeof(string)));

            foreach (string value in new[] { "Hello", "World!", "This", "is", "a", "test!", "This", "report", "generator", "rocks!" })
            {
                ours.AddRow(0, null, value);
            }

            template.DataSources.Set(new DataSource("ours", ours));

            // Uncomment the following statement to replace the above data source with one that generates random data each time.
            //template.DataSources.Set(new DataSource("ours", new ezNReporting.Web.Utilities.ezNReporting.RandomDataProvider()));

            /* Generate the report.
             */
            IReportEngine engine = _engineFactory.Create();

            return(engine.Generate(template, exporterType));
        }
示例#10
0
 /// <summary>
 /// 非密封类修饰用protected virtual
 /// 密封类修饰用private
 /// </summary>
 /// <param name="disposing"></param>
 protected virtual void Dispose(bool disposing)
 {
     if (disposed)
     {
         return;
     }
     if (disposing)
     {
         if (template != null)
         {
             template.Dispose();
             template = null;
         }
     }
     // 清理非托管资源
     //if (nativeResource != IntPtr.Zero)
     //{
     //    Marshal.FreeHGlobal(nativeResource);
     //    nativeResource = IntPtr.Zero;
     //}
     disposed = true;
 }
示例#11
0
 Stream IReportEngine.Generate(IReportTemplate template, IReportExporter exporter)
 {
     return(Generate(template, exporter));
 }
        Stream IReportTemplateFactory.Save(IReportTemplate template)
        {
            if (template == null)
            {
                throw new ArgumentNullException("template");
            }

            return _serializer.Serialize(template);
        }
        Stream IReportTemplateSerializer.Serialize(IReportTemplate template)
        {
            if (template == null)
            {
                throw new ArgumentNullException("template");
            }

            MemoryStream stream = new MemoryStream();

            XDocument doc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"));

            /* Write template root.
             */
            XElement root = new XElement("template");

            /* Write description.
             */
            XElement desc = new XElement("description");

            desc.Add(new XElement("name", template.Description.Name));
            desc.Add(new XElement("author", template.Description.Author));
            root.Add(desc);

            /* Write data sources.
             */
            XElement data = new XElement("data");

            foreach (IDataSource item in template.DataSources)
            {
                XElement ds = new XElement("source");
                ds.Add(new XAttribute("name", item.Name));
                ds.Add(new XAttribute("provider", TypeKeyAttribute.GetTypeKeyOf(item.Provider)));

                foreach (string key in item.Provider.Properties.Keys)
                {
                    string value = item.Provider.Properties[key];

                    ds.Add(new XElement(key, new XCData(value)));
                }

                data.Add(ds);
            }

            root.Add(data);

            /* Write layout sections.
             */
            XElement layout = new XElement("layout");

            foreach (IReportTemplateSection item in template.Sections)
            {
                XElement section = new XElement("section");
                section.Add(new XAttribute("name", item.Type.ToString().ToLower()));
                section.Add(new XAttribute("rootContainer", TypeKeyAttribute.GetTypeKeyOf(item.RootElement)));

                WriteElement(item.RootElement, section);

                layout.Add(section);
            }

            root.Add(layout);

            doc.Add(root);

            doc.Save(stream);

            stream.Position = 0L;

            return(stream);
        }
示例#14
0
 /// <summary>
 /// Updates a ReportTemplate
 /// </summary>
 /// <param name="session">An instance of the Data Access Library <see cref="T:B4F.TotalGiro.DAL.NHSession">NHSession</see> class</param>
 /// <param name="list">The ReportTemplate</param>
 public static void Update(IDalSession session, IReportTemplate obj)
 {
     session.Update(obj);
 }
示例#15
0
 Stream IReportEngine.Generate(IReportTemplate template, IReportExporter exporter)
 {
     return Generate(template, exporter);
 }
示例#16
0
        private Stream GenerateWithFault(IReportTemplate template, IReportExporter exporter)
        {
            IGenerationContext context = new GenerationContext() { Engine = this, Template = template };

            foreach (IDataSource item in template.DataSources)
            {
                try
                {
                    item.Provider.Initialize();
                    item.Provider.RetrieveData(context);
                }
                catch (Exception ex)
                {
                    throw new DataSourceInitializeException(item.Name, ex);
                }
            }

            foreach (IReportTemplateSection section in template.Sections)
            {
                PrepareElement(context, section.RootElement);
            }

            Stream stream = exporter.Export(context);

            stream.Position = 0L;

            return stream;
        }
示例#17
0
        public string ShipUpdown()
        {
            string        printTemplateID = "";
            string        OrgID           = "";
            PurchaseOrder po = PurchaseOrder.Finder.FindByID(poid);

            OrgID = Context.LoginOrg.Code.ToString();
            if (OrgID == "1001")
            {
                if (po.DocumentType.Code.ToString() == "PO31")
                {
                    printTemplateID = "7a794236-de24-48ca-9d56-be1c7d4ec122";
                    //printTemplateID = "dbecd59b-5a87-45c4-89bc-c112a19ca389";
                }
                else if (po.DocumentType.Code.ToString() == "PO32")
                {
                    printTemplateID = "dbecd59b-5a87-45c4-89bc-c112a19ca389";
                }
                else if (po.DocumentType.Code.ToString() == "PO33" || po.DocumentType.Code.ToString() == "PO34")
                {
                    if (po.TC.Name == "人民币元")
                    {
                        printTemplateID = "c8edd94d-960f-44f3-904e-d2be529d01ce";
                    }
                    else
                    {
                        printTemplateID = "8067b04f-8f2f-4d1b-a098-db82b9a43012";
                    }
                }
                else if (po.DocumentType.Code.ToString() == "PO36")
                {
                    printTemplateID = "7a794236-de24-48ca-9d56-be1c7d4ec122";
                    //printTemplateID = "dbecd59b-5a87-45c4-89bc-c112a19ca389";
                }
            }
            else if (OrgID == "1002")
            {
                if (po.DocumentType.Code.ToString() == "PO31")
                {
                    printTemplateID = "a303c5ee-ad16-4d31-96c5-0c4dfbab88a8";
                }
                else if (po.DocumentType.Code.ToString() == "PO32")
                {
                    printTemplateID = "f12ff6c7-79c3-4e8e-80a4-6338400c3395";
                }
                else if (po.DocumentType.Code.ToString() == "PO33" || po.DocumentType.Code.ToString() == "PO34")
                {
                    if (po.TC.Name == "人民币元")
                    {
                        printTemplateID = "0768ce62-a296-4d78-bc4a-5c7d98b39d2c";
                    }
                    else
                    {
                        printTemplateID = "cb2408ee-fe67-4762-82cc-4e1f54403c36";
                    }
                }
                else if (po.DocumentType.Code.ToString() == "PO36")
                {
                    printTemplateID = "a303c5ee-ad16-4d31-96c5-0c4dfbab88a8";
                }
            }


            string          connectionString = UFSoft.UAP.Report.Base.DBConnectionHelper.GetConnectionString();
            string          cultrueName      = UFSoft.UBF.Util.Context.PlatformContext.Current.Culture;
            ReportMDService service          = ReportMDService.GetInstance(connectionString, cultrueName);
            IReportMDReader reader           = service.GetReader();
            IReportTemplate reportTemplate   = reader.GetReportTemplateByID(printTemplateID);

            UFSoft.UBF.Report.Entity.Report report = (UFSoft.UBF.Report.Entity.Report)reportTemplate.Content;
            reader.Dispose();

            DataSet ds       = GetPrintData(poid);
            string  fileName = OutPutFile(report, ds);

            logger.Error("文件路径:" + fileName);
            dyfileurl = fileName;
            return(fileName);
        }
示例#18
0
 /// <summary>
 /// Rapor üretimi
 /// Karışıklığı önlemek ve güvenlik için yoğun miktardaki business kodu silindi.
 /// </summary>
 /// <param name="template"></param>
 /// <param name="lon"></param>
 /// <param name="lat"></param>
 /// <param name="radius"></param>
 /// <returns></returns>
 public IReportResult GenerateReport(IReportTemplate template, double lon, double lat, double radius)
 {
     return(new ReportResult());
 }