ibms-dome/Backend/Quartz/Jobs/RegularUpdateDBTableJob.cs

78 lines
3.1 KiB
C#
Raw Normal View History

using Backend.Services.Implement;
using Microsoft.Extensions.Logging;
using Quartz;
using Repository.BackendRepository.Interface;
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace Backend.Quartz.Jobs
{
/// <summary>
/// 定時將資料表加入派送任務
/// </summary>
[DisallowConcurrentExecution]
class RegularUpdateDBTableJob: IJob
{
private readonly ILogger<RegularUpdateDBTableJob> logger;
private readonly IBackgroundServiceRepository backgroundServiceRepository;
private readonly IBackendRepository backendRepository;
public RegularUpdateDBTableJob(
ILogger<RegularUpdateDBTableJob> logger,
IBackgroundServiceRepository backgroundServiceRepository,
IBackendRepository backendRepository)
{
this.logger = logger;
this.backgroundServiceRepository = backgroundServiceRepository;
this.backendRepository = backendRepository;
}
public async Task Execute(IJobExecutionContext context)
{
try
{
logger.LogInformation("【RegularUpdateDBTableJob】【任務開始】");
//要派送的資料表
List<string> db_tables = new List<string>() { "variable" };
foreach (var db_table in db_tables)
{
try
{
logger.LogInformation("【RegularUpdateDBTableJob】【新增資料表 [{0}] 至派送任務】", db_table);
//取得資料表所有資料
var temp_datas = (await backgroundServiceRepository.GetAllAsync<dynamic>(db_table, ""));
List<Dictionary<string, object>> dicts = new List<Dictionary<string, object>>();
foreach (var temp_data in temp_datas)
{
var dict = new Dictionary<string, object>((IDictionary<string, object>)temp_data);
dicts.Add(dict);
}
await backendRepository.ManualInsertBackgroundServiceTask("", "", db_table, "purge_all_insert", dicts);
logger.LogError("【RegularUpdateDBTableJob】【新增成功 資料表 [{0}] 至派送任務】", db_table);
}
catch(Exception exception)
{
logger.LogError("【RegularUpdateDBTableJob】【新增失敗 資料表 [{0}] 至派送任務】", db_table);
logger.LogError("【RegularUpdateDBTableJob】【新增失敗 資料表 [{0}] 至派送任務】[Exception]{1}", db_table, exception.ToString());
}
}
}
catch (Exception exception)
{
logger.LogError("【RegularUpdateDBTableJob】【任務失敗】");
logger.LogError("【RegularUpdateDBTableJob】【任務失敗】[Exception]{0}", exception.ToString());
}
}
}
}