报告XP.ReportEngine模块:根据项目设计搭建数据处理层,数据绑定器实现,PDF渲染和生成功能开发实现。

This commit is contained in:
QI Mingxuan
2026-05-11 19:18:46 +08:00
parent 1573a33a02
commit c5a390935e
11 changed files with 1634 additions and 61 deletions
+54 -2
View File
@@ -1,19 +1,71 @@
using Prism.Ioc;
using Prism.Modularity;
using XP.ReportEngine.Views;
using System.Resources;
using XP.Common.Localization;
using XP.Common.Localization.Interfaces;
using XP.ReportEngine.Interfaces;
using XP.ReportEngine.Services;
namespace XP.ReportEngine
{
/// <summary>
/// 报告引擎模块 | Report Engine Module
/// Prism 模块入口,注册报告生成相关服务到 DI 容器
/// Prism module entry, registers report generation services to DI container
/// </summary>
[Module(ModuleName = "ReportEngineModule")]
public class ReportEngineModule : IModule
{
/// <summary>
/// 模块初始化 | Module initialization
/// 注册模块级多语言资源源 | Register module-level localization resource source
/// </summary>
public void OnInitialized(IContainerProvider containerProvider)
{
// 注册模块级多语言资源到 Fallback Chain | Register module-level localization resources to Fallback Chain
var localizationService = containerProvider.Resolve<ILocalizationService>();
var resourceManager = new ResourceManager(
"XP.ReportEngine.Resources.Resources",
typeof(ReportEngineModule).Assembly);
localizationService.RegisterResourceSource("XP.ReportEngine", resourceManager);
// 初始化 LocalizationHelper,使其通过 ILocalizationService 获取字符串(支持 Fallback Chain
// Initialize LocalizationHelper to use ILocalizationService for string lookup (supports Fallback Chain)
LocalizationHelper.Initialize(localizationService);
System.Console.WriteLine("[ReportEngineModule] 模块已初始化 | Module initialized");
}
/// <summary>
/// 注册类型到 DI 容器 | Register types to DI container
/// </summary>
public void RegisterTypes(IContainerRegistry containerRegistry)
{
// 注册报告生成器(瞬态)| Register report generator (transient)
containerRegistry.Register<IReportGenerator, PdfReportGenerator>();
// 注册报告生成器工厂(单例)| Register report generator factory (singleton)
containerRegistry.RegisterSingleton<IReportGeneratorFactory, ReportGeneratorFactory>();
// 注册模板引擎(瞬态)| Register template engine (transient)
containerRegistry.Register<ITemplateEngine, JsonTemplateEngine>();
// 注册数据绑定器(瞬态)| Register data binder (transient)
containerRegistry.Register<IDataBinder, ExpressionDataBinder>();
// 注册排版引擎(瞬态)| Register layout engine (transient)
containerRegistry.Register<ILayoutEngine, PageLayoutEngine>();
// 注册 PDF 渲染器(瞬态)| Register PDF renderer (transient)
containerRegistry.Register<IPdfRenderer, ITextPdfRenderer>();
// 注册数据适配器(瞬态)| Register data adapter (transient)
containerRegistry.Register<IReportDataAdapter, ProcessorDataAdapter>();
// 注册报告编号生成器(单例,维护每日计数器状态)| Register report ID generator (singleton, maintains daily counter state)
containerRegistry.RegisterSingleton<ReportIdGenerator>();
System.Console.WriteLine("[ReportEngineModule] 类型注册完成 | Type registration completed");
}
}
}
}