CtrlSignal.cs 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  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.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. }
  47. catch (Exception ex)
  48. {
  49. Serilog.Log.Error(ex, "查询信号信息异常");
  50. DxHelper.MsgBoxHelper.ShowError("查询信号信息异常");
  51. }
  52. }
  53. private async Task<SigInfo> AddSigInfo()
  54. {
  55. try
  56. {
  57. SigEditor frm = new SigEditor();
  58. if (frm.ShowDialog() != DialogResult.OK) return null;
  59. var addItem = frm.info;
  60. using (RHDWContext db = new RHDWContext())
  61. {
  62. var sig = db.SigInfos.Add(addItem);
  63. await db.SaveChangesAsync();
  64. }
  65. return addItem;
  66. }
  67. catch (Exception ex)
  68. {
  69. Serilog.Log.Error(ex, "添加信号信息异常");
  70. DxHelper.MsgBoxHelper.ShowError("添加信号信息异常");
  71. return null;
  72. }
  73. }
  74. private async Task<SigInfo> EditSigInfo(SigInfo editItem)
  75. {
  76. try
  77. {
  78. SigEditor frm = new SigEditor(editItem);
  79. if (frm.ShowDialog() != DialogResult.OK) return null;
  80. editItem = frm.info;
  81. using (RHDWContext db = new RHDWContext())
  82. {
  83. var find = await db.SigInfos.Where(p => p.ID == editItem.ID).FirstOrDefaultAsync();
  84. find.FreqUp = editItem.FreqUp;
  85. find.FreqDown = editItem.FreqDown;
  86. find.SigType = editItem.SigType;
  87. find.Snr = editItem.Snr;
  88. await db.SaveChangesAsync();
  89. }
  90. return editItem;
  91. }
  92. catch (Exception ex)
  93. {
  94. Serilog.Log.Error(ex, "保存信号信息异常");
  95. DxHelper.MsgBoxHelper.ShowError("保存信号信息异常");
  96. return null;
  97. }
  98. }
  99. private async Task<bool> DeleteSigInfo(List<SigInfo> list)
  100. {
  101. try
  102. {
  103. var ids = list.Select(p => p.ID);
  104. using (RHDWContext db = new RHDWContext())
  105. {
  106. var delItems = await db.SigInfos.Where(p => ids.Contains(p.ID)).ToListAsync();
  107. db.SigInfos.RemoveRange(delItems);
  108. await db.SaveChangesAsync();
  109. }
  110. return true;
  111. }
  112. catch (Exception ex)
  113. {
  114. Serilog.Log.Error(ex, "删除信号信息异常");
  115. DxHelper.MsgBoxHelper.ShowError("删除信号信息异常");
  116. return false;
  117. }
  118. }
  119. private async Task<SigDelay> AddSigDelay()
  120. {
  121. try
  122. {
  123. var sigInfoId = gridViewSignal.GetFocusedRow() as SigInfo;
  124. if (sigInfoId == null) return null;
  125. SigDelayEditor frm = new SigDelayEditor(sigInfoId.ID);
  126. if (frm.ShowDialog() != DialogResult.OK) return null;
  127. var addItem = frm.info;
  128. using (RHDWContext db = new RHDWContext())
  129. {
  130. addItem.SigInfoId = sigInfoId.ID;
  131. var sig = db.SigDelays.Add(addItem);
  132. await db.SaveChangesAsync();
  133. }
  134. return addItem;
  135. }
  136. catch (Exception ex)
  137. {
  138. Serilog.Log.Error(ex, "添加转发延迟异常");
  139. DxHelper.MsgBoxHelper.ShowError("添加转发延迟异常");
  140. return null;
  141. }
  142. }
  143. private async Task<SigDelay> EditSigDelay(SigDelay editItem)
  144. {
  145. try
  146. {
  147. var sigInfoId = gridViewSignal.GetFocusedRow() as SigInfo;
  148. if (sigInfoId == null) return null;
  149. SigDelayEditor frm = new SigDelayEditor(editItem, sigInfoId.ID);
  150. if (frm.ShowDialog() != DialogResult.OK) return null;
  151. editItem = frm.info;
  152. using (RHDWContext db = new RHDWContext())
  153. {
  154. var find = await db.SigDelays.Where(p => p.ID == editItem.ID).FirstOrDefaultAsync();
  155. find.SigInfoId = editItem.SigInfoId;
  156. find.SatInfoSatCode = editItem.SatInfoSatCode;
  157. find.Delay = editItem.Delay;
  158. await db.SaveChangesAsync();
  159. }
  160. return editItem;
  161. }
  162. catch (Exception ex)
  163. {
  164. Serilog.Log.Error(ex, "保存转发延迟异常");
  165. DxHelper.MsgBoxHelper.ShowError("保存转发延迟异常");
  166. return null;
  167. }
  168. }
  169. private async Task<bool> DeleteSigDelay(List<SigDelay> list)
  170. {
  171. try
  172. {
  173. var ids = list.Select(p => p.ID);
  174. using (RHDWContext db = new RHDWContext())
  175. {
  176. var delItems = await db.SigDelays.Where(p => ids.Contains(p.ID)).ToListAsync();
  177. db.SigDelays.RemoveRange(delItems);
  178. await db.SaveChangesAsync();
  179. }
  180. return true;
  181. }
  182. catch (Exception ex)
  183. {
  184. Serilog.Log.Error(ex, "删除转发延迟异常");
  185. DxHelper.MsgBoxHelper.ShowError("删除转发延迟异常");
  186. return false;
  187. }
  188. }
  189. private async void gridViewSignal_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
  190. {
  191. listSigDelay.Clear();
  192. var sigInfoId = gridViewSignal.GetFocusedRow() as SigInfo;
  193. if (sigInfoId == null) return;
  194. using (var db = new RHDWContext())
  195. {
  196. var delayItems = await db.SigDelays.ToListAsync();
  197. var delayItemsRes = delayItems.Where(w => w.SigInfoId == sigInfoId.ID);
  198. var sats = await db.SatInfos.ToListAsync();
  199. foreach (var delayItem in delayItemsRes)
  200. {
  201. SigDelay sigDelay = delayItem as SigDelay;
  202. var satInfo = sats.FirstOrDefault(f => f.SatCode == sigDelay.SatInfoSatCode);
  203. sigDelay.Sat = $"[{satInfo.SatLon}°]{satInfo.SatName}({satInfo.SatCode})";
  204. listSigDelay.Add(sigDelay);
  205. }
  206. gridViewSigDelay.RefreshData();
  207. }
  208. }
  209. }
  210. }