CreateTask.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. using System;
  2. using System.Linq;
  3. using SHJX.Service.Model.Dao;
  4. using SHJX.Service.Model.Control;
  5. namespace SHJX.Service.Control
  6. {
  7. public static class CreateTask
  8. {
  9. /// <summary>
  10. /// 创建水样任务
  11. /// </summary>
  12. /// <returns></returns>
  13. public static EquipmentTask NewSampleTask(this SampleDetail args, string waveKey)
  14. {
  15. (string OperateType, int Priority) = args.SampleType switch
  16. {
  17. "水样" => ("SY", 200),
  18. "补杯" => ("SY", 100),
  19. "空白" => ("SY", 300),
  20. "标定" => ("BD", 400),
  21. _ => throw new ArgumentNullException(args.SampleType)
  22. };
  23. var initRoute = DataCentre.GetRoutes.FirstOrDefault(item => item.OpKey.Equals(OperateType) && item.RouteId.Equals(1) && item.IsInit.Equals("Y"));
  24. var initStep = DataCentre.GetSteps.FirstOrDefault(item => initRoute != null && item.RouteStepId.Equals(initRoute.InitStep));
  25. var task = new EquipmentTask
  26. {
  27. Priority = Priority,
  28. WaveKey = waveKey,
  29. OriginLocalName = args.NodeName,
  30. From = args.NodeName,
  31. To = args.NodeName,
  32. RouteId = initRoute.RouteId,
  33. RouteStepId = initRoute.InitStep,
  34. RouteStep = initStep?.RouteStepName,
  35. RouteType = initRoute?.OpKey,
  36. RouteUpdateType = initStep?.UpdateRange,
  37. TaskDetailName = args.Detail,
  38. GetSampleVolume = args.SampleVolume,
  39. GetSampleMultiple = args.Multiple,
  40. TaskType = args.SampleType,
  41. SampleConcentration = args.Concentration.Equals("低") ? "Low" : "High",
  42. HgSO4Volume = args.HgSO4,
  43. QuickTitration = args.QuickTitration
  44. };
  45. return task;
  46. }
  47. /// <summary>
  48. /// 创建Wash任务
  49. /// </summary>
  50. /// <returns></returns>
  51. public static EquipmentTask NewWashTask(this string detailName)
  52. {
  53. var initRoute = DataCentre.GetRoutes.FirstOrDefault(item => item.OpKey.Equals("Wash") && item.RouteId.Equals(1) && item.IsInit.Equals("Y"));
  54. if (initRoute == null)
  55. return null;
  56. var initStep = DataCentre.GetSteps.FirstOrDefault(item => item.RouteStepId.Equals(initRoute.InitStep));
  57. var area = DataCentre.GetAreas;
  58. var localName = area.FirstOrDefault(item => item.AreaName.Equals(initRoute.From))?.PointName;
  59. var toLocalName = area.FirstOrDefault(item =>
  60. item.AreaName.Equals(initRoute.To) &&
  61. item.Status.Equals(true))?.PointName;
  62. var task = new EquipmentTask
  63. {
  64. TaskType = detailName,
  65. Priority = 500,
  66. Status = TaskState.Doing,
  67. OriginLocalName = localName,
  68. From = localName,
  69. To = toLocalName,
  70. RouteId = initRoute.RouteId,
  71. RouteStepId = initRoute.InitStep,
  72. RouteStep = initStep?.RouteStepName,
  73. RouteType = initRoute.OpKey,
  74. RouteUpdateType = initStep?.UpdateRange
  75. };
  76. return task;
  77. }
  78. /// <summary>
  79. /// 创建单点任务
  80. /// </summary>
  81. /// <param name="pointName"></param>
  82. /// <returns></returns>
  83. public static EquipmentTask NewSinglePointTask(this string pointName)
  84. {
  85. var initRoute = DataCentre.GetRoutes.FirstOrDefault(item => item.OpKey.Equals("SP") && item.RouteId.Equals(1) && item.IsInit.Equals("Y"));
  86. var initStep = DataCentre.GetSteps.FirstOrDefault(item => initRoute != null && item.RouteStepId.Equals(initRoute.InitStep));
  87. var task = new EquipmentTask
  88. {
  89. Status = TaskState.Doing,
  90. OriginLocalName = pointName,
  91. From = pointName,
  92. To = pointName,
  93. RouteId = 1,
  94. RouteStepId = initRoute.InitStep,
  95. RouteType = initRoute.OpKey,
  96. RouteStep = initStep?.RouteStepName,
  97. RouteUpdateType = initStep?.UpdateRange
  98. };
  99. return task;
  100. }
  101. }
  102. }