SampleAL1Operate.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using System;
  2. using System.Linq;
  3. using System.Threading;
  4. using SHJX.Service.Model.Dao;
  5. using SHJX.Service.Control.Modules;
  6. using SHJX.Service.Control.Interface;
  7. using SHJX.Service.Common.ReadXML;
  8. namespace SHJX.Service.Control.Route.RouteController
  9. {
  10. /// <summary>
  11. /// 硫酸汞加液
  12. /// </summary>
  13. public class SampleAL1Operate : FlowControlOperateImp
  14. {
  15. private const string OpName = "Mercury";
  16. private DropLiquid _liquid;
  17. private EquipmentTask _task;
  18. public virtual bool Operate(ReadConfigUtil config, DataEventArgs data)
  19. {
  20. _task = data.Task;
  21. _liquid = data.DataManager.QueryLiquid(OpName);
  22. if (!_liquid.Enable) return true;
  23. DataCentre.GetStorageContent.Factory("Timer").Start();
  24. Thread.Sleep(2000);
  25. DataCentre.GetStorageContent.Factory("Timer").Stop();
  26. var res = data.Task.RouteType switch
  27. {
  28. "Wash" => WashLiquid(),
  29. _ => OtherAddLiquid(),
  30. };
  31. return res;
  32. }
  33. /// <summary>
  34. /// 清洗 && 润洗
  35. /// </summary>
  36. /// <returns></returns>
  37. private bool WashLiquid()
  38. {
  39. var value = _task.TaskType switch
  40. {
  41. "润洗" => _liquid.WashVolume,
  42. "清洗" => _liquid.ClearVolume,
  43. _ => throw new ArgumentNullException(_task.TaskType),
  44. };
  45. var res = DataCentre.GetStorageContent.Factory(OpName).Start();
  46. Thread.Sleep(Convert.ToInt32(Math.Round(1000 * value)));
  47. res = res && DataCentre.GetStorageContent.Factory(OpName).Stop();
  48. LiquidTotal liquid = DataCentre._dataManager.Query<LiquidTotal>().Where(it => it.LiquidName.Equals(OpName)).First();
  49. liquid.Total -= 5; // 硫酸汞加液扣减5毫升
  50. res = res & DataCentre._dataManager.Update<LiquidTotal>(liquid) > 0;
  51. return res;
  52. }
  53. /// <summary>
  54. /// 其他加液
  55. /// </summary>
  56. /// <returns></returns>
  57. private bool OtherAddLiquid()
  58. {
  59. var res = DataCentre.GetStorageContent.Factory(OpName).Start();
  60. Thread.Sleep(Convert.ToInt32(Math.Round(_liquid.SampleVolume * 1000)));
  61. res = res && DataCentre.GetStorageContent.Factory(OpName).Stop();
  62. LiquidTotal liquid = DataCentre._dataManager.Query<LiquidTotal>().Where(it => it.LiquidName.Equals(OpName)).First();
  63. liquid.Total -= 2; // 硫酸汞加液扣减2毫升
  64. res = res & DataCentre._dataManager.Update<LiquidTotal>(liquid) > 0;
  65. return res;
  66. }
  67. }
  68. }