TitrationAddIndicatorOperate.cs 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using System;
  2. using System.Threading;
  3. using SHJX.Service.Model.Dao;
  4. using SHJX.Service.Control.Modules;
  5. using SHJX.Service.Control.Interface;
  6. using System.Linq;
  7. using SHJX.Service.Common.ReadXML;
  8. namespace SHJX.Service.Control.Route.RouteController
  9. {
  10. /// <summary>
  11. /// 加指示剂
  12. /// </summary>
  13. /// 试亚铁灵
  14. ///
  15. public class TitrationAddIndicatorOperate : FlowControlOperateImp
  16. {
  17. private string OpName = "Indicator";
  18. private string DripNozzleType = "DripNozzle";
  19. private DropLiquid _liquid;
  20. private EquipmentTask _task;
  21. //public static bool HighFlag = false;
  22. public virtual bool Operate(ReadConfigUtil config, DataEventArgs data)
  23. {
  24. _task = data.Task;
  25. //if (_task.SampleConcentration == "High" || data.Task.To == "D4")
  26. //{
  27. // OpName = "Indicator2";
  28. // DripNozzleType = "DripNozzle2";
  29. // HighFlag = true;
  30. //}
  31. //else
  32. // HighFlag = false;
  33. _liquid = data.DataManager.QueryLiquid(OpName);
  34. if (!_liquid.Enable)
  35. {
  36. var dripNozzleRes = DataCentre.GetStorageContent.Factory(DripNozzleType).Start();
  37. return dripNozzleRes;
  38. }
  39. DataCentre.GetStorageContent.Factory(DripNozzleType).Start();
  40. DataCentre.GetStorageContent.Factory("Timer").Start();
  41. Thread.Sleep(2000);
  42. DataCentre.GetStorageContent.Factory("Timer").Stop();
  43. var res = _task.RouteType switch
  44. {
  45. "Wash" => WashLiquid(),
  46. _ => OtherAddLiquid(),
  47. };
  48. return res;
  49. }
  50. private bool WashLiquid()
  51. {
  52. var value = _task.TaskType switch
  53. {
  54. "润洗" => _liquid.WashVolume,
  55. "清洗" => _liquid.ClearVolume,
  56. _ => throw new ArgumentNullException(_task.TaskType),
  57. };
  58. var res = DataCentre.GetStorageContent.Factory(OpName).Start();
  59. Thread.Sleep(Convert.ToInt32(Math.Round(1000 * value)));
  60. res = res && DataCentre.GetStorageContent.Factory(OpName).Stop();
  61. LiquidTotal liquid = DataCentre._dataManager.Query<LiquidTotal>().Where(it => it.LiquidName.Equals(OpName)).First();
  62. liquid.Total -= 5;//指示剂INDECATOR5毫升
  63. res = res && DataCentre._dataManager.Update<LiquidTotal>(liquid) > 0;
  64. return res;
  65. }
  66. private bool OtherAddLiquid()
  67. {
  68. var res = DataCentre.GetStorageContent.Factory(OpName).Start();
  69. Thread.Sleep(Convert.ToInt32(Math.Round(1000 * _liquid.SampleVolume)));
  70. res = res && DataCentre.GetStorageContent.Factory(OpName).Stop();
  71. LiquidTotal liquid = DataCentre._dataManager.Query<LiquidTotal>().Where(it => it.LiquidName.Equals(OpName)).First();
  72. liquid.Total -= 0.2;//指示剂INDECATOR0.2毫升
  73. res = res && DataCentre._dataManager.Update<LiquidTotal>(liquid) > 0;
  74. return res;
  75. }
  76. }
  77. }