当前位置: 首页 > news >正文

广州个人网站备案要多久如何制作企业网站的版式

广州个人网站备案要多久,如何制作企业网站的版式,知名网站建设公司好吗,学生个人网页制作成品代码这篇文章是《.NET 8 实战–孢子记账–从单体到微服务》系列专栏的《单体应用》专栏的最后一片和开发有关的文章。在这片文章中我们一起来实现一个数据统计的功能#xff1a;报表数据汇总。这个功能为用户查看月度、年度、季度报表提供数据支持。 一、需求 数据统计方面…这篇文章是《.NET 8 实战–孢子记账–从单体到微服务》系列专栏的《单体应用》专栏的最后一片和开发有关的文章。在这片文章中我们一起来实现一个数据统计的功能报表数据汇总。这个功能为用户查看月度、年度、季度报表提供数据支持。 一、需求 数据统计方面我们应该考虑一个问题用户是否需要看到实时数据。一般来说个人记账软件的数据统计是不需要实时的因此我们可以将数据统计时间设置为每天统计或者每天每月统计这样我们不仅可以减少统计数据时受到正在写入的数据的影响也能提升用户体验。在数据更新方面我们要在每次新增、删除、更新几张记录时进行更新统计报表。整理后的需求如下 编号需求说明1统计支出报表1. 每月、每季度、每年定时统计支出数据2报表更新1. 新增、删除、更新支出记录时更新报表数据 2. 如果报表数据不存在则不进行任何处理 二、功能编写 根据前面的需求我们分别实现这两个功能。 1. 支出数据统计 因为数据每天都定时更新因此我们要创建一个定时器来实现这个功能定时器我们依然使用Quartz来实现以月度报表定时器为例。我们在Task\Timer文件夹下新建ReportMonthTimer类来实现定时器。代码如下 using Quartz; using SporeAccounting.Models; using SporeAccounting.Server.Interface;namespace SporeAccounting.Task.Timer;/// summary /// 月度报表定时器 /// /summary public class ReportMonthTimer : IJob {private readonly IServiceScopeFactory _serviceScopeFactory;/// summary/// 构造函数/// /summary/// param nameserviceScopeFactory/parampublic ReportMonthTimer(IServiceScopeFactory serviceScopeFactory){_serviceScopeFactory serviceScopeFactory;}/// summary/// 执行/// /summary/// param namecontext/param/// returns/returnspublic System.Threading.Tasks.Task Execute(IJobExecutionContext context){using var scope _serviceScopeFactory.CreateScope();// 获取每个用户最近一次报表记录日期var reportServer scope.ServiceProvider.GetRequiredServiceIReportServer();var incomeExpenditureRecordServer scope.ServiceProvider.GetRequiredServiceIIncomeExpenditureRecordServer();var reportLogServer scope.ServiceProvider.GetRequiredServiceIReportLogServer();var reportLogs reportLogServer.Query();var reportLogDic reportLogs.GroupBy(x x.UserId).ToDictionary(x x.Key,x x.Max(x x.CreateDateTime));// 查询上次日期以后的记账记录ListReport dbReports new();ListReportLog dbReportLogs new();foreach (var log in reportLogDic){var incomeExpenditureRecords incomeExpenditureRecordServer.QueryByUserId(log.Key);incomeExpenditureRecords incomeExpenditureRecords.Where(x x.RecordDate log.Value).Where(p p.IncomeExpenditureClassification.Type IncomeExpenditureTypeEnmu.Income).ToList();// 生成报表// 按照月度创建报表数据根据支出类型统计var monthlyReports incomeExpenditureRecords.GroupBy(x new { x.RecordDate.Year, x.RecordDate.Month }).Select(g new Report{Year g.Key.Year,Month g.Key.Month,Name ${g.Key.Year}年{g.Key.Month}月报表,Type ReportTypeEnum.Month,Amount g.Sum(x x.AfterAmount),UserId log.Key,ClassificationId g.First().IncomeExpenditureClassificationId,CreateDateTime DateTime.Now,CreateUserId log.Key}).ToList();dbReports.AddRange(monthlyReports);// 记录日志var reportLogEntries dbReports.Select(report new ReportLog{UserId report.UserId,ReportId report.Id,CreateDateTime DateTime.Now,CreateUserId report.UserId}).ToList();dbReportLogs.AddRange(reportLogEntries);// 保存报表和日志到数据库reportServer.Add(dbReports);reportLogServer.Add(dbReportLogs);}return System.Threading.Tasks.Task.CompletedTask;} }这段代码实现了一个定时任务类ReportMonthTimer用于生成和记录用户的月度报表。它实现了Quartz库中的IJob接口定期执行Execute方法。首先构造函数接收IServiceScopeFactory用于创建服务作用域确保每次任务执行时获得正确的服务实例。然后Execute方法通过依赖注入获取IReportServer、IIncomeExpenditureRecordServer和IReportLogServer分别用于处理报表生成、收入支出记录和报表日志。 代码从reportLogServer查询所有报表日志并根据每个用户的最新报表日期筛选出新的收入支出记录。接着通过GroupBy按年和月对收入支出记录进行分组生成月度报表并将报表数据保存到dbReports中。同时为每份报表创建日志记录并保存到dbReportLogs中。最后报表和日志通过reportServer.Add()和reportLogServer.Add()方法存储到数据库。 Tip这段代码中涉及到了一个新表报表日志这个用于记录报表数据生成记录的。在这里就不把这个表的结构、操作类列出来了大家自己动手来实现一下。 2. 报表更新 报表更新逻辑很简单在这里我们只展示新增的逻辑其他逻辑大家自己动手实现。我们在IncomeExpenditureRecordImp类的Add方法中添加如下代码 // 获取包含支出记录记录日期的报表记录 var reports _sporeAccountingDbContext.Reports.Where(x x.UserId incomeExpenditureRecord.UserId x.Year incomeExpenditureRecord.RecordDate.Year x.Month incomeExpenditureRecord.RecordDate.Month x.ClassificationIdincomeExpenditureRecord.IncomeExpenditureClassificationId); // 如果没有就说明程序还未将其写入报表那么就不做任何处理 for (int i 0; i reports.Count(); i) {var report reports.ElementAt(i);report.Amount incomeExpenditureRecord.AfterAmount;_sporeAccountingDbContext.Reports.Update(report); }这段代码添加在了if (classification.Type IncomeExpenditureTypeEnmu.Income) 分支中当新增的类型时支出项目时我们就执行这段代码。在这段代码中当没有查询到支出记录的话就认为对应该日期的指出记录没有进行数据统计因此不进行任何处理。 三、总结 在这篇文章中我们介绍了如何在.NET 8环境下实现定时生成财务报表的功能。首先分析了需求确定了报表数据统计的时间和更新策略。然后通过使用Quartz库创建了ReportTimer定时器类该类实现了IJob接口并在其Execute方法中实现了报表数据的生成和更新逻辑。在实现过程中通过依赖注入获取必要的服务实例查询用户的收入和支出记录生成季度、年度和月度报表并将这些报表和日志条目保存到数据库中实现了报表数据的定期更新和持久化存储。此外还展示了如何在新增支出记录时更新报表数据确保报表数据的实时性和准确性。通过这种设计提高了报表生成的效率确保了数据的一致性和完整性。希望读者能掌握相关技术并应用到实际项目中。 在下一篇文章也就是这个专栏的最后一篇文章我们将一起把这个服务端部署到服务器上。
http://www.hkea.cn/news/14482010/

相关文章:

  • 做网站哪里有中国企业网官网登录入口
  • 免费外国网站浏览器班级网页制作模板
  • 门户网站如何建设响应式网站做seo
  • 18款禁用网站app入口建 网站 是软件开发
  • 为什么建行网站打不开计算机培训机构排名前十
  • 28网站建设沈阳网站制作网页
  • 兰溪高端网站建设公司公司网站需要备案么
  • wordpress下载站模板下载互联网保险理赔到底有多难
  • 如何提高网站设计能力关于化妆品网页设计的模板
  • 网站定制开发怎么做如何在网站做投票
  • 萍乡做网站的公司长沙网站优化厂家
  • 有什么网站可以免费看电影哪有做企业网站
  • 邯郸市做网站的公司广东建设网工程信息网站
  • 运行一个网站要多少钱网站提供什么服务
  • 温江网站建设网站怎么做超链接
  • 镇海区建设交通局网站网站推广页面 英语
  • 如何做请求队列防止网站高并发网络营销与策划实务
  • 网站建设信息上海建溧建设集团有限公司网站
  • 潍坊做网站的企业wordpress 目录下拉框
  • 梅州市住房和城乡建设局官网网站洛阳网站开发公司
  • 莱阳网站定制电商美工工资一般多少
  • 网络科技公司门户网站傻瓜化免费自助建站
  • 上海高端网站建设公望野原文
  • 深圳市网站开发开发区网站建设在哪
  • 地方门户网站管理系统做网站导流
  • 营销型网站建设公司网络推广郴州网站建设价格
  • 网站做弹窗湿地公园网站建设
  • 做网站要服务器和什么漳州网站开发去博大钱少a
  • 网站开发投入产出分析58网站建设
  • 崂山区城乡建设局网站建立网站 数据分析