78 lines
3.1 KiB
C#
78 lines
3.1 KiB
C#
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 BackendWorkerService.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());
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|