CtrlSignal.cs 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. using DevExpress.Utils.About;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Documents;
  11. using System.Windows.Forms;
  12. using DW5S.App.EditForms;
  13. using DW5S.Entity;
  14. using DW5S.Repostory;
  15. using Serilog;
  16. using DevExpress.XtraBars.Customization;
  17. using DW5S.Service;
  18. namespace DW5S.App.UserControl
  19. {
  20. public partial class CtrlSignal : DevExpress.XtraEditors.XtraUserControl
  21. {
  22. readonly List<SigInfo> listSigInfo = new List<SigInfo>();
  23. readonly List<SigDelay> listSigDelay = new List<SigDelay>();
  24. public CtrlSignal()
  25. {
  26. InitializeComponent();
  27. }
  28. private async void CtrlSignal_Load(object sender, EventArgs e)
  29. {
  30. try
  31. {
  32. gridSignal.UseDefault(listSigInfo).UseMultiSelect().UseRowNumber()
  33. .UseAddAsync(AddSigInfo)
  34. .UseEditAsync<SigInfo>(EditSigInfo)
  35. .UseDeleteAsync<SigInfo>(DeleteSigInfo);
  36. gridSigDelay.UseDefault(listSigDelay).UseMultiSelect().UseRowNumber()
  37. .UseAddAsync(AddSigDelay)
  38. .UseEditAsync<SigDelay>(EditSigDelay)
  39. .UseDeleteAsync<SigDelay>(DeleteSigDelay);
  40. var unitOfWork = IocContainer.UnitOfWork;
  41. var repsSig = unitOfWork.Of<SigInfo>();
  42. var items = await repsSig.GetAllAsync(p => p.FreqUp);
  43. listSigInfo.AddRange(items);
  44. var repsFixedStation = unitOfWork.Of<FixedStation>();
  45. var fixedStations = await repsFixedStation.FindAsync(p => p.Enable);
  46. foreach (var item in listSigInfo)
  47. {
  48. if (fixedStations.Any(p => p.FreqUpHz == item.FreqUp))
  49. item.IsFixedStationFreq = "✔";
  50. else
  51. item.IsFixedStationFreq = "✖";
  52. }
  53. //var delayItems = await db.SigDelays.ToListAsync();
  54. //var delayRes = delayItems.Where(w => w.SigInfoID == items.FirstOrDefault().ID);
  55. //listSigDelay.AddRange(delayRes);
  56. gridViewSignal.RefreshData();
  57. }
  58. catch (Exception ex)
  59. {
  60. IocContainer.Logger.Error(ex, "查询信号信息异常");
  61. DxHelper.MsgBoxHelper.ShowError("查询信号信息异常");
  62. }
  63. }
  64. private async Task<SigInfo> AddSigInfo()
  65. {
  66. try
  67. {
  68. SigEditor frm = new SigEditor();
  69. if (frm.ShowDialog() != DialogResult.OK) return null;
  70. var addItem = frm.info;
  71. var unitOfWork = IocContainer.UnitOfWork;
  72. var repsSig = unitOfWork.Of<SigInfo>();
  73. var sig = await repsSig.AddOrUpdateAsync(addItem);
  74. await unitOfWork.SaveAsync();
  75. return addItem;
  76. }
  77. catch (Exception ex)
  78. {
  79. IocContainer.Logger.Error(ex, "添加信号信息异常");
  80. DxHelper.MsgBoxHelper.ShowError("添加信号信息异常");
  81. return null;
  82. }
  83. }
  84. private async Task<SigInfo> EditSigInfo(SigInfo editItem)
  85. {
  86. try
  87. {
  88. SigEditor frm = new SigEditor(editItem);
  89. if (frm.ShowDialog() != DialogResult.OK) return null;
  90. editItem = frm.info;
  91. var unitOfWork = IocContainer.UnitOfWork;
  92. var repsSig = unitOfWork.Of<SigInfo>();
  93. var find = await repsSig.FirstOrDefaultAsync(p => p.Id == editItem.Id);
  94. find.FreqUp = editItem.FreqUp;
  95. find.FreqDown = editItem.FreqDown;
  96. find.SigType = editItem.SigType;
  97. find.Band = editItem.Band;
  98. find.Snr = editItem.Snr;
  99. find.UpdateTime = DateTime.Now;
  100. var sig = await repsSig.AddOrUpdateAsync(find);
  101. await unitOfWork.SaveAsync();
  102. return editItem;
  103. }
  104. catch (Exception ex)
  105. {
  106. IocContainer.Logger.Error(ex, "保存信号信息异常");
  107. DxHelper.MsgBoxHelper.ShowError("保存信号信息异常");
  108. return null;
  109. }
  110. }
  111. private async Task<bool> DeleteSigInfo(List<SigInfo> list)
  112. {
  113. try
  114. {
  115. var ids = list.Select(p => p.Id);
  116. var unitOfWork = IocContainer.UnitOfWork;
  117. var repsSigDelay = unitOfWork.Of<SigDelay>();
  118. var delayItems = await repsSigDelay.FindAsync(p => ids.Contains(p.SigInfoId));
  119. await repsSigDelay.DeleteAsync(delayItems);
  120. var repsSig = unitOfWork.Of<SigInfo>();
  121. var delItems = await repsSig.FindAsync(p => ids.Contains(p.Id));
  122. await repsSig.DeleteAsync(delItems);
  123. await unitOfWork.SaveAsync();
  124. return true;
  125. }
  126. catch (Exception ex)
  127. {
  128. IocContainer.Logger.Error(ex, "删除信号信息异常");
  129. DxHelper.MsgBoxHelper.ShowError("删除信号信息异常");
  130. return false;
  131. }
  132. }
  133. private async Task<SigDelay> AddSigDelay()
  134. {
  135. try
  136. {
  137. var sigInfoId = gridViewSignal.GetFocusedRow() as SigInfo;
  138. if (sigInfoId == null) return null;
  139. SigDelayEditor frm = new SigDelayEditor(sigInfoId.Id);
  140. if (frm.ShowDialog() != DialogResult.OK) return null;
  141. var addItem = frm.info;
  142. var unitOfWork = IocContainer.UnitOfWork;
  143. var repsSigDelay = unitOfWork.Of<SigDelay>();
  144. addItem.SigInfoId = sigInfoId.Id;
  145. var sig = repsSigDelay.AddOrUpdateAsync(addItem);
  146. await unitOfWork.SaveAsync();
  147. return addItem;
  148. }
  149. catch (Exception ex)
  150. {
  151. IocContainer.Logger.Error(ex, "添加转发延迟异常");
  152. DxHelper.MsgBoxHelper.ShowError("添加转发延迟异常");
  153. return null;
  154. }
  155. }
  156. private async Task<SigDelay> EditSigDelay(SigDelay editItem)
  157. {
  158. try
  159. {
  160. var sigInfoId = gridViewSignal.GetFocusedRow() as SigInfo;
  161. if (sigInfoId == null) return null;
  162. SigDelayEditor frm = new SigDelayEditor(editItem, sigInfoId.Id);
  163. if (frm.ShowDialog() != DialogResult.OK) return null;
  164. editItem = frm.info;
  165. var unitOfWork = IocContainer.UnitOfWork;
  166. var repsSigDelay = unitOfWork.Of<SigDelay>();
  167. var find = await repsSigDelay.FirstOrDefaultAsync(p => p.Id == editItem.Id);
  168. find.SigInfoId = editItem.SigInfoId;
  169. find.SatInfoSatCode = editItem.SatInfoSatCode;
  170. find.Delay = editItem.Delay;
  171. await unitOfWork.SaveAsync();
  172. return editItem;
  173. }
  174. catch (Exception ex)
  175. {
  176. IocContainer.Logger.Error(ex, "保存转发延迟异常");
  177. DxHelper.MsgBoxHelper.ShowError("保存转发延迟异常");
  178. return null;
  179. }
  180. }
  181. private async Task<bool> DeleteSigDelay(List<SigDelay> list)
  182. {
  183. try
  184. {
  185. var ids = list.Select(p => p.Id);
  186. var unitOfWork = IocContainer.UnitOfWork;
  187. var repsSigDelay = unitOfWork.Of<SigDelay>();
  188. var delItems = await repsSigDelay.FindAsync(p => ids.Contains(p.Id));
  189. await repsSigDelay.DeleteAsync(delItems);
  190. await unitOfWork.SaveAsync();
  191. return true;
  192. }
  193. catch (Exception ex)
  194. {
  195. IocContainer.Logger.Error(ex, "删除转发延迟异常");
  196. DxHelper.MsgBoxHelper.ShowError("删除转发延迟异常");
  197. return false;
  198. }
  199. }
  200. private async void gridViewSignal_FocusedRowObjectChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowObjectChangedEventArgs e)
  201. {
  202. listSigDelay.Clear();
  203. var sigInfoId = gridViewSignal.GetFocusedRow() as SigInfo;
  204. if (sigInfoId == null) return;
  205. var unitOfWork = IocContainer.UnitOfWork;
  206. var repsSigDelay = unitOfWork.Of<SigDelay>();
  207. var repsSat = unitOfWork.Of<SatInfo>();
  208. var delayItems = await repsSigDelay.FindAsync(w => w.SigInfoId == sigInfoId.Id, p => p.SatInfo.SatName);
  209. var sats = await repsSat.GetAllAsync();
  210. foreach (var delayItem in delayItems)
  211. {
  212. SigDelay sigDelay = delayItem as SigDelay;
  213. var satInfo = sats.FirstOrDefault(f => f.SatCode == sigDelay.SatInfoSatCode);
  214. if (satInfo != null)
  215. {
  216. sigDelay.Sat = $"[{satInfo.SatLon}°]{satInfo.SatName}({satInfo.SatCode})";
  217. }
  218. listSigDelay.Add(sigDelay);
  219. }
  220. gridViewSigDelay.RefreshData();
  221. }
  222. private async void gridViewSignal_DoubleClick(object sender, EventArgs e)
  223. {
  224. var editItem = gridViewSignal.GetFocusedRow() as SigInfo;
  225. if (editItem == null) return;
  226. await EditSigInfo(editItem);
  227. }
  228. private async void gridViewSigDelay_DoubleClick(object sender, EventArgs e)
  229. {
  230. var editItem = gridViewSigDelay.GetFocusedRow() as SigDelay;
  231. if (editItem == null) return;
  232. await EditSigDelay(editItem);
  233. }
  234. }
  235. }