ElementSchedule.cs 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. using SHJX.Service.Control.Extends;
  2. using SHJX.Service.Model.Dao;
  3. namespace SHJX.Service.Control.Schedules
  4. {
  5. [EnableScheduling]
  6. public class ElementSchedule : IScheduler
  7. {
  8. private static readonly ILogger logger = LogFactory.BuildLogger(typeof(ElementSchedule));
  9. private static IEventAggregator _ea;
  10. private static IDataManager _dataManager;
  11. public ElementSchedule(IDataManager dataManager, IEventAggregator ea)
  12. {
  13. _ea = ea;
  14. _dataManager = dataManager;
  15. }
  16. [Scheduled("ReadCurrentTemperatureFromDissolve", 1000)]
  17. public void ReadCurrentTemperatureFromDissolve()
  18. {
  19. Dictionary<string, double> obj = EquipmentNames.DissolveHeating.HeatRead();
  20. if (obj is null or { Count: 0 })
  21. {
  22. return;
  23. }
  24. ReadTemperatureArgs args = new()
  25. {
  26. SettingTemperature = obj["sv"],
  27. CurrentTemperature = obj["pv"]
  28. };
  29. _ea.GetEvent<DissolveCurrentHeatingValueEvent>().Publish(args);
  30. }
  31. [Scheduled("ReadCurrentHumiture", 10000)]
  32. public void ReadCurrentHumiture()
  33. {
  34. //ushort[] res = PortExecute.HumitureRead();
  35. //if (res is null or { Length: 0 })
  36. //{
  37. // return;
  38. //}
  39. //double temp = res[0] / 10.0;
  40. //double humidi = res[1] / 10.0;
  41. //_ea.GetEvent<NoticeHumitureEvent>().Publish((Temperature: temp, Humidity: humidi));
  42. }
  43. [Scheduled("ReadCurrentTemperatureFromTitration", 1000)]
  44. public void ReadCurrentTemperatureFromTitration()
  45. {
  46. Dictionary<string, double> obj = EquipmentNames.TitrationHeating.HeatRead();
  47. if (obj is null or { Count: 0 })
  48. {
  49. return;
  50. }
  51. ReadTemperatureArgs args = new()
  52. {
  53. SettingTemperature = obj["sv"],
  54. CurrentTemperature = obj["pv"]
  55. };
  56. _ea.GetEvent<TitrationCurrentHeatingValueEvent>().Publish(args);
  57. }
  58. [Scheduled("CalculateKValueByWaveKey", 1000)]
  59. public void CalculateKValueByWaveKey()
  60. {
  61. //先查找WaveKey值
  62. Wavekey key = (from wavekey in _dataManager.Query<Wavekey>().ToList() orderby wavekey.WaveKey descending select wavekey).FirstOrDefault();
  63. double k = CalculationResult.CalculateType(key.WaveKey, TaskTypeName.CALIBRATION_ZH, (arg) => 10 / arg);
  64. _ea.GetEvent<NoticeKValueEvent>().Publish(k);
  65. }
  66. [Scheduled("DissolveTimeChange", 1000)]
  67. public void DissolveTimeChange()
  68. {
  69. try
  70. {
  71. List<DissolveDate> dissolves = _dataManager.Query<DissolveDate>().ToList();
  72. if (!dissolves.Any())
  73. {
  74. return;
  75. }
  76. List<HeatingChangeArgs> heatings = new();
  77. ExecuteTime executeTime = _dataManager.Query<ExecuteTime>().Where(it => it.TypeName.Equals(ExecuteTimeName.DISSOLVE_TIME)).First();
  78. foreach (DissolveDate dissolve in dissolves)
  79. {
  80. double timeDifference = 0.0;
  81. HeatingChangeArgs heatingArg = new() { Name = dissolve.PositionName };
  82. if (dissolve.Start)
  83. {
  84. heatingArg.Dispaly = dissolve.Start;
  85. DateTime lastTime = dissolve.LastTryTime;
  86. double time = ((DateTime.Now.Hour - lastTime.Hour) * 60.0 * 60.0) + ((DateTime.Now.Minute - lastTime.Minute) * 60.0) + (DateTime.Now.Second - lastTime.Second);
  87. timeDifference = time / (executeTime.Value * 60.0);
  88. };
  89. heatingArg.Progress = timeDifference;
  90. heatings.Add(heatingArg);
  91. }
  92. _ea.GetEvent<UpdateDissolveElementEvent>().Publish(heatings);
  93. }
  94. catch (Exception ex)
  95. {
  96. logger.LogError(ex.ToString());
  97. }
  98. }
  99. [Scheduled("ChangePositionElementDisplay", 1000)]
  100. public void ChangePositionElementDisplay()
  101. {
  102. try
  103. {
  104. List<PositionHotlist> hotlists = _dataManager.Query<PositionHotlist>().ToList();
  105. if (!hotlists.Any())
  106. {
  107. return;
  108. }
  109. List<ElementArgs> elements = new();
  110. foreach (PositionHotlist item in hotlists)
  111. {
  112. ElementArgs args = new()
  113. {
  114. Name = item.PositionName,
  115. Current = item.CurrentOccupy,
  116. Enable = item.Enable
  117. };
  118. elements.Add(args);
  119. }
  120. _ea.GetEvent<UpdateElementEvent>().Publish(elements);
  121. }
  122. catch (Exception ex)
  123. {
  124. logger.LogError(ex.ToString());
  125. }
  126. }
  127. }
  128. }