WriteTaskFactory.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using System;
  2. using System.Collections.Generic;
  3. using SHJX.Service.Common.ReadXML;
  4. using SHJX.Service.Control.Interface;
  5. using SHJX.Service.Common.Logging;
  6. using Microsoft.Extensions.Logging;
  7. namespace SHJX.Service.Control.TimerControl.WriteTaskToEquipment
  8. {
  9. /// <summary>
  10. /// 任务下发
  11. /// </summary>
  12. public class WriteTaskFactory
  13. {
  14. private static readonly ILogger logger = LogFactory.BuildLogger(typeof(WriteTaskFactory));
  15. private readonly ReadConfigUtil _config;
  16. private readonly FlowContent _operateController;
  17. private readonly Dictionary<string, WriteTaskToEquipmentImp> _writeTasks;
  18. public WriteTaskFactory( ReadConfigUtil configUtil,FlowContent operateController)
  19. {
  20. _config = configUtil;
  21. _operateController = operateController;
  22. _writeTasks = new Dictionary<string, WriteTaskToEquipmentImp>();
  23. }
  24. /// <summary>
  25. /// 获取任务下发类
  26. /// </summary>
  27. /// <param name="opKey"></param>
  28. /// <returns></returns>
  29. public WriteTaskToEquipmentImp Get(string opKey)
  30. {
  31. try
  32. {
  33. if (_writeTasks.TryGetValue(opKey, out var writeTask))
  34. return writeTask;
  35. WriteTaskToEquipmentImp writeTaskOperate = opKey switch
  36. {
  37. "Sample" => new SampleWriteTask(_config, _operateController), //样品
  38. "Calibration" => new CalibrationWriteTask(_config, _operateController), //标定
  39. "Wash" => new WashWriteTask(_config, _operateController), //润洗
  40. "SinglePoint" => new SinglePointWriteTask(_config, _operateController),
  41. _ => throw new ArgumentNullException(opKey)
  42. };
  43. _writeTasks.Add(opKey, writeTaskOperate);
  44. return writeTaskOperate;
  45. }
  46. catch (Exception ex)
  47. {
  48. logger.LogError(ex.ToString());
  49. return null;
  50. }
  51. }
  52. }
  53. }