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; } } } }