using Quartz;
|
|
namespace IStation.Server
|
{
|
/// <summary>
|
/// 模型验证辅助类
|
/// </summary>
|
[DisallowConcurrentExecution]//此特性标识 必须等待这次任务执行完成后,才能执行下次任务
|
public class HydraulicModelValidationHelperJob : IJob
|
{
|
private static readonly Service.HydraulicModelValidation _service_hydraulic_model_validation = new ();
|
private static readonly Service.HydraulicModelScada _service_hydraulic_model_scada = new();
|
private static readonly Service.HydraulicModelRecord _service_hydraulic_model_record = new();
|
|
|
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<Model.ZyScada> zy_scada_list);
|
if (zy_scada_list == null || !zy_scada_list.Any())
|
{
|
Log.Info(verification_id, "模型验证计划任务中,接收Scada数据为空,自动跳过当前数据!");
|
return;
|
}
|
|
Log.Debug(verification_id, Yw.JsonHelper.Object2Json(zy_scada_list));
|
|
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();
|
|
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 = _service_hydraulic_model_validation.Insert(hydraulic_model_validation) > 0;
|
if (!bol)
|
{
|
Log.Info(verification_id, "模型验证计划任务中,水力模型验证,保存失败!");
|
}
|
|
bol = _service_hydraulic_model_scada.Inserts(hydraulic_model_scada_list);
|
if (!bol)
|
{
|
Log.Info(verification_id, "模型验证计划任务中,水力模型Scada,保存失败!");
|
}
|
|
bol = _service_hydraulic_model_record.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;
|
}
|
|
});
|
}
|
|
|
}
|
}
|