using Quartz;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using IStation.Calculation;
|
|
namespace IStation.Server
|
{
|
/// <summary>
|
/// 能效依赖年计划任务
|
/// </summary>
|
[DisallowConcurrentExecution]//此特性标识 必须等待这次任务执行完成后,才能执行下次任务
|
public class EtaAccordYearCronJob : IJob
|
{
|
/// <summary>
|
///
|
/// </summary>
|
public Task Execute(IJobExecutionContext context)
|
{
|
return Task.Run(() =>
|
{
|
try
|
{
|
|
#region 数据时间
|
|
int data_year = DateTime.Now.AddYears(-1).Year;
|
|
#endregion
|
|
#region 加载目标客户
|
|
var corpIds = CorpHelper.GetCorpIds();
|
if (corpIds == null || corpIds.Count < 1)
|
{
|
LogHelper.Error("能效依赖年计划任务,未检索到目标客户信息");
|
return;
|
}
|
|
#endregion
|
|
#region 加载配置
|
|
var configure_list = new Service.EtaAnalyConfigure().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 accord_configure_list = new Service.EtaAccordConfigure().GetByCorpID(configure.CorpID);
|
if (accord_configure_list == null || accord_configure_list.Count < 1)
|
continue;
|
accord_configure_list = accord_configure_list.Where(x => x.UseStatus == Model.eUseStatus.Enable).ToList();
|
if (accord_configure_list.Count < 1)
|
continue;
|
var accord_configure_group_list = accord_configure_list.GroupBy(x => new { x.CorpID, x.BelongType, x.BelongID }).ToList();
|
|
foreach (var accord_configure_group in accord_configure_group_list)
|
{
|
switch (accord_configure_group.Key.BelongType)
|
{
|
case IStation.ObjectType.LogicArea://业务区域
|
{
|
var record_list = new Service.EtaAccordLogicRecord()
|
.GetMonthByObjectOfYear(accord_configure_group.Key.CorpID, accord_configure_group.Key.BelongType, accord_configure_group.Key.BelongID, data_year);
|
if (record_list == null || record_list.Count < 1)
|
break;
|
var sum_record_list = EtaAccordLogicYearHelper.Accord(data_year, accord_configure_group, record_list);
|
if (sum_record_list == null || sum_record_list.Count < 1)
|
break;
|
var bol = new Service.EtaAccordLogicRecord().Inserts(sum_record_list);
|
if (!bol)
|
{
|
LogHelper.Info($"能效依赖年计划任务,客户标识:{accord_configure_group.Key.CorpID},对象类型:{accord_configure_group.Key.BelongType},对象标识:{accord_configure_group.Key.BelongID},数据保存失败!");
|
break;
|
}
|
}
|
break;
|
case IStation.ObjectType.Station://泵站
|
{
|
var record_list = new Service.EtaAccordMultiRecord()
|
.GetMonthByObjectOfYear(accord_configure_group.Key.CorpID, accord_configure_group.Key.BelongType, accord_configure_group.Key.BelongID, data_year);
|
if (record_list == null || record_list.Count < 1)
|
break;
|
var sum_record_list = EtaAccordMultiYearHelper.Accord(data_year, accord_configure_group, record_list);
|
if (sum_record_list == null || sum_record_list.Count < 1)
|
break;
|
var bol = new Service.EtaAccordMultiRecord().Inserts(sum_record_list);
|
if (!bol)
|
{
|
LogHelper.Info($"能效依赖年计划任务,客户标识:{accord_configure_group.Key.CorpID},对象类型:{accord_configure_group.Key.BelongType},对象标识:{accord_configure_group.Key.BelongID},数据保存失败!");
|
break;
|
}
|
}
|
break;
|
case IStation.ObjectType.PipeLine://管路(机泵)
|
{
|
var record_list = new Service.EtaAccordSingleRecord()
|
.GetMonthByObjectOfYear(accord_configure_group.Key.CorpID, accord_configure_group.Key.BelongType, accord_configure_group.Key.BelongID, data_year);
|
if (record_list == null || record_list.Count < 1)
|
break;
|
var sum_record_list = EtaAccordSingleYearHelper.Accord(data_year, accord_configure_group, record_list);
|
if (sum_record_list == null || sum_record_list.Count < 1)
|
break;
|
var bol = new Service.EtaAccordSingleRecord().Inserts(sum_record_list);
|
if (!bol)
|
{
|
LogHelper.Info($"能效依赖年计划任务,客户标识:{accord_configure_group.Key.CorpID},对象类型:{accord_configure_group.Key.BelongType},对象标识:{accord_configure_group.Key.BelongID},数据保存失败!");
|
break;
|
}
|
}
|
break;
|
default: break;
|
}
|
}
|
}
|
|
#endregion
|
|
|
}
|
catch (Exception ex)
|
{
|
LogHelper.Error("能效日依赖计划任务中,出错", ex);
|
var e = new JobExecutionException(ex);
|
throw e;
|
}
|
|
|
});
|
}
|
}
|
}
|