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 EtaSumLogicDayCronJob : IJob
{
///
///
///
public Task Execute(IJobExecutionContext context)
{
return Task.Run(() =>
{
try
{
#region 汇总日期
var day = DateTime.Now.AddDays(-1).Date;
#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.EtaLogicRealRecord().GetByCorpIDOfDay(configure.CorpID, 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 = EtaSumLogicDayHelper.Sum(group.Key.CorpID, group.Key.ObjectType, group.Key.ObjectID, day, group);
if (sum_record != null )
{
sum_record_list.Add(sum_record);
}
}
if (sum_record_list.Count < 1)
continue;
var bol = new Service.EtaSumLogicRecord().Inserts(sum_record_list);
if (!bol)
{
LogHelper.Info("能效汇总业务日计划任务中,数据保存失败!");
return;
}
}
#endregion
}
catch (Exception ex)
{
LogHelper.Error("能效汇总业务日计划任务中,出错", ex);
var e = new JobExecutionException(ex);
throw e;
}
});
}
}
}