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 EtaStandardLogicWeekCronJob : IJob { /// /// /// public Task Execute(IJobExecutionContext context) { return Task.Run(() => { try { #region 数据时间 var start_day = DateTime.Now.Date.AddDays(-7);//上周开始时间 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 standard_configure_list = new Service.EtaStandardConfigure().GetByCorpID(configure.CorpID); if (standard_configure_list == null || standard_configure_list.Count < 1) continue; var record_list = new Service.EtaStandardLogicRecord().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 standard_record_list = new List(); foreach (var group in group_list) { var standard_record = EtaStandardLogicWeekHelper.Standard(group.Key.CorpID, group.Key.ObjectType, group.Key.ObjectID, start_day,end_day, standard_configure_list,group); if (standard_record != null) { standard_record_list.AddRange(standard_record); } } if (standard_record_list.Count < 1) continue; var bol = new Service.EtaStandardLogicRecord().Inserts(standard_record_list); if (!bol) { LogHelper.Info("能效标准业务周计划任务中,数据保存失败!"); return; } } #endregion } catch (Exception ex) { LogHelper.Error("能效标准业务周计划任务中,出错", ex); var e = new JobExecutionException(ex); throw e; } }); } } }