using Quartz;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace IStation.DataProvider
|
{
|
|
|
/// <summary>
|
/// 数据任务
|
/// </summary>
|
[DisallowConcurrentExecution]//此特性标识 必须等待这次任务执行完成后,才能执行下次任务
|
public class DataJob : IJob
|
{
|
/// <summary>
|
///
|
/// </summary>
|
public async Task Execute(IJobExecutionContext context)
|
{
|
try
|
{
|
await Task.Run(() =>
|
{
|
var dt_now = DateTime.Now;
|
var records = JsonStore.GetCurrentRecord(dt_now);
|
if (records == null || records.Count < 1)
|
return;
|
|
var bllScada = new BaseMsSqlDAL<Entity.SMIDATA>();
|
var allHisDatas = bllScada.GetAll()?.ToList();
|
if (allHisDatas == null)
|
allHisDatas = new List<Entity.SMIDATA>();
|
|
//添加
|
var records_adds = records.Where(x =>
|
{
|
var hisData = allHisDatas.Find(t => t.TagName == x.TagName);
|
return hisData == null;
|
}).ToList();
|
|
if (records_adds != null && records_adds.Count > 0)
|
{
|
var hisdata_adds = records_adds.Select(x =>
|
{
|
var entity = new Entity.SMIDATA();
|
entity.TagName = x.TagName;
|
entity.DataTime = x.DataTime;
|
entity.DataValue = x.DataValue;
|
entity.InsertTime = dt_now;
|
return entity;
|
}).ToList();
|
bllScada.Inserts(hisdata_adds);
|
LogHelper.Info(string.Format("成功插入{0}条数据!", hisdata_adds.Count));
|
}
|
|
//更新
|
var records_updates = records.Where(x =>
|
{
|
var hisData = allHisDatas.Find(t => t.TagName == x.TagName);
|
return hisData != null;
|
}).ToList();
|
|
if (records_updates != null && records_updates.Count > 0)
|
{
|
var hisdata_updates = records_updates.Select(x =>
|
{
|
var entity = allHisDatas.Find(t => t.TagName == x.TagName);
|
entity.InsertTime = dt_now;
|
entity.DataValue = x.DataValue;
|
entity.DataTime = x.DataTime;
|
return entity;
|
}).ToList();
|
bllScada.Updates(hisdata_updates);
|
LogHelper.Info(string.Format("成功更新{0}条数据!", hisdata_updates.Count));
|
}
|
|
|
});
|
}
|
catch (Exception ex)
|
{
|
var e = new JobExecutionException(ex);
|
LogHelper.Error("数据任务", ex);
|
throw e;
|
}
|
}
|
|
|
|
}
|
}
|