using Quartz;
namespace IStation.Server
{
///
/// 模型验证辅助类
///
[DisallowConcurrentExecution]//此特性标识 必须等待这次任务执行完成后,才能执行下次任务
public class HydraulicModelValidationHelperJob : IJob
{
private static readonly string _hydraulic_model_file = Path.Combine(
Settings.ParasHelper.LocalFile.DataFolderDirectory,
Settings.ParasHelper.LocalFile.HydraulicModelFile);
public Task Execute(IJobExecutionContext context)
{
return Task.Run(() =>
{
var verification_id = Yw.YitIdHelper.NextId();
var verification_time = DateTime.Now;
try
{
if (!File.Exists(_hydraulic_model_file))
{
Log.Info(verification_id, $"模型验证计划任务中,水力模型文件不存在,自动跳过当前数据!");
return;
}
GlobalHelper.GetRealTimeZyScadaList(out List zy_scada_list);
if (zy_scada_list == null || !zy_scada_list.Any())
{
Log.Info(verification_id, "模型验证计划任务中,接收Scada数据为空,自动跳过当前数据!");
return;
}
var hydraulic_model_scada_list = zy_scada_list
.OrderBy(x => x.Code)
.Select(x => new Model.HydraulicModelScada()
{
VerificationID = verification_id,
Time = x.Time,
Code = x.Code,
Tag = x.Tag,
Value = x.Value
}).ToList();
Log.Debug(verification_id, Yw.JsonHelper.Object2Json(hydraulic_model_scada_list));
var hydraulic_model_record_list = IStation.Hydraulic.ModeVerifyHelper.Verify(verification_id, verification_time, _hydraulic_model_file, zy_scada_list);
if (hydraulic_model_record_list == null || !hydraulic_model_record_list.Any())
{
Log.Info(verification_id, "模型验证计划任务中,模型验证数据为空,自动跳过当前数据!");
return;
}
var hydraulic_model_validation = new Model.HydraulicModelValidation();
hydraulic_model_validation.ID = verification_id;
hydraulic_model_validation.Time = verification_time;
var bol = new IStation.Service.HydraulicModelValidation().Insert(hydraulic_model_validation) > 0;
if (!bol)
{
Log.Info(verification_id, "模型验证计划任务中,水力模型验证,保存失败!");
}
bol = new IStation.Service.HydraulicModelScada().Inserts(hydraulic_model_scada_list);
if (!bol)
{
Log.Info(verification_id, "模型验证计划任务中,水力模型Scada,保存失败!");
}
bol = new IStation.Service.HydraulicModelRecord().Inserts(hydraulic_model_record_list);
if (!bol)
{
Log.Info(verification_id, "模型验证计划任务中,水力模型记录,保存失败!");
}
Log.Info(verification_id, $"模型验证计划任务中,水力模型验证,[{verification_time:G}]验证成功!");
}
catch (Exception ex)
{
Log.Error(verification_id, "模型验证计划任务中,出错", ex);
var e = new JobExecutionException(ex);
throw e;
}
});
}
}
}