CtrlSignal.cs 8.5 KB

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