using Quartz; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using IStation.Calculation; namespace IStation.Server { /// /// 能效汇总单月计划任务 /// [DisallowConcurrentExecution]//此特性标识 必须等待这次任务执行完成后,才能执行下次任务 public class EtaSumSingleMonthCronJob : IJob { /// /// /// public Task Execute(IJobExecutionContext context) { return Task.Run(() => { try { #region 数据时间 int data_year = DateTime.Now.AddMonths(-1).Year; int data_month = DateTime.Now.AddMonths(-1).Month; var start_day = DateTime.Now.Date.AddMonths(-1); var end_day = DateTime.Now.Date.AddDays(-1); #endregion #region 加载目标客户 var corpIds = CorpHelper.GetCorpIds(); if (corpIds == null || corpIds.Count < 1) { LogHelper.Info("能效汇总单月计划任务中,未检索到目标客户信息"); return; } #endregion #region 加载配置 var service_configure = new Service.EtaAnalyConfigure(); var configure_list = service_configure.GetByCorpIds(corpIds); if (configure_list == null || configure_list.Count < 1) { LogHelper.Info("能效汇总单月计划任务中,未检索到能效分析配置信息!"); return; } configure_list = configure_list.Where(x => x.UseStatus == Model.eUseStatus.Enable).ToList(); if (configure_list.Count < 1) { LogHelper.Info("能效汇总单月计划任务中,未检索到有效能效分析配置信息!"); return; } #endregion #region 遍历汇总 foreach (var configure in configure_list) { var record_list = new Service.EtaSumSingleRecord().GetDayByCorpIDOfDayRange(configure.CorpID,start_day,end_day); if (record_list == null || record_list.Count < 1) continue; var group_list = record_list.GroupBy(x => new { x.CorpID, x.ObjectType, x.ObjectID }).ToList(); var sum_record_list = new List(); foreach (var group in group_list) { var sum_record = EtaSumSingleMonthHelper.Sum(group.Key.CorpID, group.Key.ObjectType, group.Key.ObjectID, data_year,data_month, group); if (sum_record != null) { sum_record_list.Add(sum_record); } } if (sum_record_list.Count < 1) continue; var bol = new Service.EtaSumSingleRecord().Inserts(sum_record_list); if (!bol) { LogHelper.Info("能效汇总单月计划任务中,数据保存失败!"); return; } } #endregion } catch (Exception ex) { LogHelper.Error("能效汇总单月计划任务中,出错", ex); var e = new JobExecutionException(ex); throw e; } }); } } }