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; } }); } } }