SettingController.cs 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. using System;
  2. using System.Linq;
  3. using SHJX.Service.Dao;
  4. using SHJX.Service.Model.Control;
  5. using System.Collections.Generic;
  6. using SHJX.Service.Common.ReadXML;
  7. using SHJX.Service.Model.Dao;
  8. namespace SHJX.Service.Control.ServiceController
  9. {
  10. public class SettingController
  11. {
  12. private readonly SettingDataManager _settingDataManager;
  13. public SettingController(ReadConfigUtil config)
  14. {
  15. _settingDataManager = new SettingDataManager(config);
  16. }
  17. /// <summary>
  18. /// 设置速度
  19. /// </summary>
  20. /// <param name="speed"></param>
  21. /// <returns></returns>
  22. public bool SetSpeed(MotorSpeed speed)
  23. {
  24. var speedArgs = new PortArgs()
  25. {
  26. TypeName = speed.NodeName,
  27. Distance = speed.Speed,
  28. WriteWay = WriteWay.Speed
  29. };
  30. var res = DataCentre.GetClient.Factory(speed.NodeName).Write(speedArgs);
  31. #region 加速度
  32. var acSpeedArgs = new PortArgs()
  33. {
  34. TypeName = speed.NodeName,
  35. Distance = speed.AcSpeed,
  36. WriteWay = WriteWay.AcSpeed
  37. };
  38. res = res && DataCentre.GetClient.Factory(speed.NodeName).Write(acSpeedArgs);
  39. #endregion
  40. #region 减速度
  41. PortArgs deSpeedArgs = new()
  42. {
  43. TypeName = speed.NodeName,
  44. Distance = speed.DeSpeed,
  45. WriteWay = WriteWay.DeSpeed
  46. };
  47. res = res && DataCentre.GetClient.Factory(speed.NodeName).Write(deSpeedArgs);
  48. #endregion
  49. return res;
  50. }
  51. public bool SettingTemperature(int temperature)
  52. {
  53. var args = new PortArgs
  54. {
  55. TypeName = "Heat",
  56. Distance = temperature
  57. };
  58. return DataCentre.GetClient.Factory("Heat").Write(args);
  59. }
  60. /// <summary>
  61. /// 获取数据
  62. /// </summary>
  63. /// <typeparam name="T"></typeparam>
  64. /// <returns></returns>
  65. public List<T> GetData<T>() where T : class
  66. {
  67. var data = _settingDataManager.Query<T>().ToList();
  68. return data;
  69. }
  70. public List<Wavekey> GetWavekeys()
  71. {
  72. return _settingDataManager.GetWavekeys();
  73. }
  74. //public double GetBlankValue(Wavekey WaveKey, string level,string item)
  75. //{
  76. // var _balanceVals = DataCentre.GetBalanceValue;
  77. // var blankTasks = DataCentre._dataManager.GetTaskByWaveKey(WaveKey.WaveKey, level, "空白") ?? DataCentre._dataManager.GetLastOtherTaskByWaveKey("空白", level);
  78. // GetBDBlankTaskResult(blankTasks,_balanceVals.MaxVolume, out var noneValue);
  79. // return noneValue;
  80. //}
  81. public double GetBlankCalibrationValue(string WaveKey, string level, string item)
  82. {
  83. var _balanceVals = DataCentre.GetBalanceValue;
  84. var bdTasks = DataCentre._dataManager.GetTaskByWaveKey(WaveKey, level, item) ?? DataCentre._dataManager.GetLastOtherTaskByWaveKey(item, level);
  85. tempCount = 0;
  86. if (item == "标定")
  87. { GetBDTaskResult(item, bdTasks, _balanceVals.MaxVolume, out var bdValue); return bdValue; }
  88. else
  89. {
  90. GetBlankTaskResult(item, bdTasks, _balanceVals.MaxVolume, out var bdValue);
  91. return bdValue;
  92. }
  93. }
  94. private double[] temp = new double[50];
  95. int tempCount = 0;
  96. public void GetBlankTaskResult( string type, List<EquipmentTask> noneTasks, double maxVolume, out double blankValue)
  97. {
  98. if (noneTasks?.Count > 1)
  99. {
  100. var noneMaxValue = noneTasks.Max(item => item.Amount);
  101. var noneMinValue = noneTasks.Min(item => item.Amount);
  102. if (noneMaxValue >= maxVolume)
  103. {
  104. GetBlankTaskResult(type, noneTasks.Where(item => item.Amount != noneMaxValue).ToList(), maxVolume, out blankValue);
  105. }
  106. if (type == "空白" && noneMaxValue - noneMinValue > 0.8)
  107. {
  108. GetBlankTaskResult(type, noneTasks.Where(item => item.Amount != noneMinValue).ToList(), maxVolume, out blankValue);
  109. }
  110. temp[tempCount++] = Math.Round(noneTasks.Average(item => item.Amount), 2);
  111. blankValue = temp[0];
  112. }
  113. else
  114. {
  115. var first = noneTasks?.FirstOrDefault();
  116. //temp[tempCount++] = Math.Round(first?.Amount ?? 0, 2);
  117. if (first?.Amount >= maxVolume)
  118. {
  119. temp[tempCount++] = 0;
  120. }
  121. else
  122. temp[tempCount++] = Math.Round(first?.Amount ?? 0, 2);
  123. blankValue = temp[0];
  124. }
  125. }
  126. public void GetBDTaskResult(string type, List<EquipmentTask> bdTasks, double maxVolume, out double bdValue)
  127. {
  128. if (bdTasks is not null && bdTasks.Any())
  129. {
  130. for (int i = 0; i < bdTasks.Count; i++)
  131. {
  132. if (bdTasks[i].Amount >= maxVolume)
  133. {
  134. bdTasks.Remove(bdTasks[i]);
  135. i--;
  136. }
  137. }
  138. if (bdTasks.Count == 0)
  139. {
  140. bdValue = Math.Round(maxVolume, 2);
  141. }
  142. else
  143. {
  144. var bdAmount = bdTasks.Average(item => Convert.ToDouble(item.Amount));
  145. bdValue = Math.Round(bdAmount, 2);
  146. }
  147. }
  148. else
  149. {
  150. var first = bdTasks?.FirstOrDefault();
  151. if (first?.Amount >= maxVolume)
  152. bdValue = 0;
  153. else
  154. bdValue = Math.Round(first?.Amount ?? 0, 2);
  155. }
  156. }
  157. //public void GetBDTaskResult( List<EquipmentTask> bdTasks, double maxVolume, out double bdValue)
  158. //{
  159. // if (bdTasks is not null && bdTasks.Any())
  160. // {
  161. // for (int i = 0; i < bdTasks.Count; i++)
  162. // {
  163. // if (bdTasks[i].Amount >= maxVolume)
  164. // bdTasks.Remove(bdTasks[i]);
  165. // }
  166. // var bdAmount = bdTasks.Average(item => Convert.ToDouble(item.Amount));
  167. // }
  168. // else
  169. // {
  170. // var first = bdTasks?.FirstOrDefault();
  171. // bdValue = first?.Amount ?? 0;
  172. // }
  173. //}
  174. /// <summary>
  175. /// 更新信息
  176. /// </summary>
  177. /// <param name="lists"></param>
  178. /// <returns></returns>
  179. public bool UpdateValues<T>(List<T> lists) where T : class, new()
  180. {
  181. var row = _settingDataManager.Update(lists);
  182. return row > 0;
  183. }
  184. }
  185. }