using NPOI.OpenXmlFormats.Dml; using YLErp.Model; using YLErp.Modules.SuperviseReportModule.ExtendReport.Common; using YLErp.Modules.SuperviseReportModule.ExtendReport.GeLin; using YLErp.Modules.SuperviseReportModule.ExtendReport.ZheQi; using YLErp.Modules.SuperviseReportModule.ExtendReport.ZheShang; namespace YLErp.Modules.SuperviseReportModule.ExtendReport { public abstract class ExtendReportBaseService : YLBaseService { protected SuperviseReportReq RequestInfo { get; private set; } /// /// 输出模板名 /// public abstract string TemplateName { get; } /// /// 输出文件名 /// /// public abstract string TargetFileName { get; } public ExtendReportBaseService(OptUserInfo userInfo, SuperviseReportReq req) : base(userInfo) { RequestInfo = req; } /// /// 获取实现对象 /// /// /// public static ExtendReportBaseService ServiceFactory(OptUserInfo optUser, SuperviseReportReq req) { ExtendReportBaseService service = null; switch (req.DataSource) { case "成交明细汇总": service = new TransactionDetails(optUser, req); break; case "风险资本准备计算表": service = new ExtendOtherReport(optUser, req); break; case "客户持仓信息": service = new ClientPositionReport(optUser, req); break; case "客户资金记录报表": service = new CustomerFundsReport(optUser, req); break; case "月报基础数据债券收益互换": service = new SwapTradeMothReport(optUser, req); break; default: throw new ServiceException("报表未实现"); } return service; } /// /// 获取报告内容 /// /// /// Key:模板中的sheet名 /// Value:模板中要填充的Model /// public virtual Dictionary SearchReportInfo() { throw new ServiceException("未实现"); } } public abstract class SimpleExtendReportBaseService : ExtendReportBaseService { /// /// 输出Sheet名 /// public virtual string[] SheetNames { get; } = { "Sheet1" }; public SimpleExtendReportBaseService(OptUserInfo userInfo, SuperviseReportReq req) : base(userInfo, req) { } /// /// 获取报告内容 /// /// /// Key:模板中的sheet名 /// Value:模板中要填充的Model /// public override Dictionary SearchReportInfo() { var result = new Dictionary(); foreach (var name in SheetNames) { result[name] = SearchReportInfo(name); } return result; } /// /// 获取报告内容 /// /// 要填充的Sheet名 /// public virtual object SearchReportInfo(string sheetName) { throw new ServiceException("未实现"); } } }