112 lines
5.4 KiB
C#
112 lines
5.4 KiB
C#
using ConsoleApp2.HostedServices.Abstractions;
|
|
using ConsoleApp2.Options;
|
|
using ConsoleApp2.Services;
|
|
using Microsoft.Extensions.Hosting;
|
|
using Microsoft.Extensions.Logging;
|
|
namespace ConsoleApp2.HostedServices;
|
|
|
|
public class MainHostedService : BackgroundService
|
|
{
|
|
private readonly ILogger _logger;
|
|
private readonly IInputService _input;
|
|
private readonly ITransformService _transform;
|
|
private readonly IOutputService _output;
|
|
private readonly ProcessContext _context;
|
|
|
|
public MainHostedService(ILogger<MainHostedService> logger, IInputService input, ITransformService transform, IOutputService output, ProcessContext context)
|
|
{
|
|
_logger = logger;
|
|
_input = input;
|
|
_transform = transform;
|
|
_output = output;
|
|
_context = context;
|
|
}
|
|
|
|
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
|
{
|
|
var taskFun = (TasksOptions taskOp, DataRecordQueue producerQueue, DataRecordQueue consumerQueue, ProcessContext context) =>
|
|
{
|
|
var inputTask = Task.Factory.StartNew(async () =>
|
|
{
|
|
try
|
|
{
|
|
await _input.ExecuteAsync(taskOp, producerQueue, context, stoppingToken);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_context.AddException(ex);
|
|
_logger.LogError("Exception occurred on inputService:{Message},{StackTrace}", ex.Message, ex.StackTrace);
|
|
}
|
|
|
|
});
|
|
var transformTask = Task.Factory.StartNew(async () =>
|
|
{
|
|
try
|
|
{
|
|
await _transform.ExecuteAsync(taskOp, producerQueue, consumerQueue, context, stoppingToken);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_context.AddException(ex);
|
|
_logger.LogError("Exception occurred on transformService:{Message},{StackTrace}", ex.Message, ex.StackTrace);
|
|
}
|
|
|
|
});
|
|
var outputTask = Task.Factory.StartNew(async () =>
|
|
{
|
|
try
|
|
{
|
|
await _output.ExecuteAsync(taskOp, consumerQueue, context,stoppingToken);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_context.AddException(ex);
|
|
_logger.LogError("Exception occurred on outputService:{Message},{StackTrace}", ex.Message, ex.StackTrace);
|
|
}
|
|
|
|
});
|
|
};
|
|
|
|
var bigTablesDic = new Dictionary<string, TableInfo>
|
|
{
|
|
{"order_block_plan",new TableInfo{SimulaRowCount=2725553 }},//CreateTime < 202301的删除
|
|
{"order_block_plan_result",new TableInfo{SimulaRowCount=1174096 }},
|
|
{"order_box_block",new TableInfo{SimulaRowCount=29755672 }},
|
|
{"order_item",new TableInfo{SimulaRowCount=1345520079 }},
|
|
{"simple_plan_order",new TableInfo{SimulaRowCount=351470 }},//CreateTime < 202301的删除
|
|
};
|
|
var bigTableContext = new ProcessContext();
|
|
var bigTableOptions = new TasksOptions { TableInfoConfig = bigTablesDic, OutPutOptions = new OutPutOptions { FlushCount = 10000, OutPutTaskCount = 2 } };
|
|
//taskFun(bigTableOptions,new DataRecordQueue(), new DataRecordQueue(), bigTableContext);
|
|
var smallTablesDic = new Dictionary<string, TableInfo>
|
|
{
|
|
//{"machine",new TableInfo{SimulaRowCount=14655 }},
|
|
//{"order",new TableInfo{SimulaRowCount=5019216 }},
|
|
//{"order_data_block",new TableInfo{SimulaRowCount=731800334 }},
|
|
//{"order_data_goods",new TableInfo{SimulaRowCount=25803671 }},
|
|
//{"order_data_parts",new TableInfo{SimulaRowCount=468517543 }},
|
|
//{"order_module",new TableInfo{SimulaRowCount=103325385 }},
|
|
//{"order_module_extra",new TableInfo{SimulaRowCount=54361321 }},
|
|
//{"order_module_item",new TableInfo{SimulaRowCount=69173339 }},
|
|
//{"order_package",new TableInfo{SimulaRowCount=16196195 }},
|
|
{"order_process",new TableInfo{SimulaRowCount=3892685 }},//orderNo < 202301的
|
|
{"order_process_step",new TableInfo{SimulaRowCount=8050349 }},//orderNo < 202301的删除
|
|
{"order_process_step_item",new TableInfo{SimulaRowCount=14538058 }},//orderNo < 202301的删除
|
|
//{"order_scrap_board",new TableInfo{SimulaRowCount=123998 }},
|
|
//{"process_group",new TableInfo{SimulaRowCount=1253 }},
|
|
//{"process_info",new TableInfo{SimulaRowCount=7839 }},
|
|
//{"process_item_exp",new TableInfo{SimulaRowCount=28 }},
|
|
//{"process_schdule_capacity",new TableInfo{SimulaRowCount=39736 }},
|
|
//{"process_step_efficiency",new TableInfo{SimulaRowCount=8 }},
|
|
//{"report_template",new TableInfo{SimulaRowCount=7337 }},
|
|
//{"simple_package",new TableInfo{SimulaRowCount=130436 }},//orderNo < 202301的删除
|
|
//{"sys_config",new TableInfo{SimulaRowCount=2296 }},
|
|
//{"work_calendar",new TableInfo{SimulaRowCount=11 }},
|
|
//{"work_shift",new TableInfo{SimulaRowCount=59 }},
|
|
//{"work_time",new TableInfo{SimulaRowCount=62 }},
|
|
};
|
|
var smallTableContext = new ProcessContext();
|
|
taskFun(new TasksOptions { TableInfoConfig = smallTablesDic, OutPutOptions = new OutPutOptions { FlushCount = 20000, OutPutTaskCount = 4 } },
|
|
new DataRecordQueue(), new DataRecordQueue(), smallTableContext);
|
|
}
|
|
} |