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 MonitorFluctAnalyCronJob : IJob { /// /// /// public Task Execute(IJobExecutionContext context) { return Task.Run(() => { try { #region 加载目标客户 var corpIds = CorpHelper.GetCorpIds(); if (corpIds == null || corpIds.Count < 1) { LogHelper.Error("监测波动分析计划任务中,未检索到目标客户信息"); return; } #endregion #region 加载监测波动分析配置 var configure_list = new Service.MonitorFluctConfigure().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 遍历分析 //服务 var service_monitor_fluct = new Service.MonitorFluctRecord(); var service_monitor_record = new Service.MonitorRealRecord(); foreach (var configure in configure_list) { var model = new Model.MonitorFluctRecord(); model.CorpID = configure.CorpID; model.MonitorPointID = configure.MonitorPointID; model.SignalID = configure.SignalID; for (int i = 0; i < configure.ContinueDays; i++) { var day = DateTime.Now.Date.AddDays(-(i + 1)); var record_list = service_monitor_record.GetContentBySignalIDOfDay(configure.CorpID, configure.MonitorPointID, configure.SignalID, day); model.Analy(record_list); } var bol = service_monitor_fluct.InsertOrUpdate(model); if (!bol) { LogHelper.Info($"监测波动分析计划任务中,客户标识:{configure.CorpID},测点标识:{configure.MonitorPointID},信号标识:{configure.SignalID},监测波形分析数据保存失败!"); } } #endregion } catch (Exception ex) { LogHelper.Error("监测波动分析计划任务中,出错", ex); var e = new JobExecutionException(ex); throw e; } }); } } }