using System;
using System.Collections.Generic;
using SHJX.Service.Common.ReadXML;
using SHJX.Service.Control.Interface;
using SHJX.Service.Common.Logging;
using Microsoft.Extensions.Logging;
namespace SHJX.Service.Control.TimerControl.WriteTaskToEquipment
{
///
/// 任务下发
///
public class WriteTaskFactory
{
private static readonly ILogger logger = LogFactory.BuildLogger(typeof(WriteTaskFactory));
private readonly ReadConfigUtil _config;
private readonly FlowContent _operateController;
private readonly Dictionary _writeTasks;
public WriteTaskFactory( ReadConfigUtil configUtil,FlowContent operateController)
{
_config = configUtil;
_operateController = operateController;
_writeTasks = new Dictionary();
}
///
/// 获取任务下发类
///
///
///
public WriteTaskToEquipmentImp Get(string opKey)
{
try
{
if (_writeTasks.TryGetValue(opKey, out var writeTask))
return writeTask;
WriteTaskToEquipmentImp writeTaskOperate = opKey switch
{
"Sample" => new SampleWriteTask(_config, _operateController), //样品
"Calibration" => new CalibrationWriteTask(_config, _operateController), //标定
"Wash" => new WashWriteTask(_config, _operateController), //润洗
"SinglePoint" => new SinglePointWriteTask(_config, _operateController),
_ => throw new ArgumentNullException(opKey)
};
_writeTasks.Add(opKey, writeTaskOperate);
return writeTaskOperate;
}
catch (Exception ex)
{
logger.LogError(ex.ToString());
return null;
}
}
}
}