RefTaskFreqEditor.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. using DevExpress.XtraEditors.Controls;
  2. using DW5S.Entity;
  3. using DW5S.Repostory;
  4. using ExtensionsDev;
  5. using Microsoft.EntityFrameworkCore;
  6. using Newtonsoft.Json.Linq;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Linq;
  10. using System.Windows.Forms;
  11. namespace DW5S.App.EditForms
  12. {
  13. public partial class RefTaskFreqEditor : DevExpress.XtraEditors.XtraForm
  14. {
  15. public RefTaskFreq info;
  16. private List<RefTaskFreq> infos;
  17. public RefTaskFreqEditor()
  18. {
  19. InitializeComponent();
  20. this.layoutControl1.UseDefault();
  21. txtSampleLen.UseDoubleClickToSelectAll();
  22. txtDtoCenter.UseDoubleClickToSelectAll();
  23. this.Text = "添加参考任务频点";
  24. info = new RefTaskFreq();
  25. this.StartPosition = FormStartPosition.CenterParent;
  26. }
  27. public RefTaskFreqEditor(RefTaskFreq info)
  28. : this()
  29. {
  30. this.Text = "编辑参考任务频点";
  31. this.info = info;
  32. }
  33. private async void RefTaskFreqEditor_Load(object sender, EventArgs e)
  34. {
  35. var samples = new List<SampleInfo>();
  36. var sats = new List<SatInfo>();
  37. var unitOfWork = IocContainer.UnitOfWork;
  38. var repsSample = unitOfWork.Of<SampleInfo>();
  39. var res = await repsSample.AsQueryable().Include(s => s.SigInfo).Include(s => s.RefTxInfo).ToListAsync();
  40. samples.AddRange(res);
  41. var satInfos = await unitOfWork.Of<SatInfo>().GetAllAsync();
  42. sats.AddRange(satInfos);
  43. this.txtSample.UseDefault().SetData(samples, displayField: nameof(SampleInfo.SampleName)).UseDoubleClickToSelectAll();
  44. this.searchLookSat.UseDefault().SetData(sats, displayField: nameof(SatInfo.Sat)).UseDoubleClickToSelectAll();
  45. List<ImageComboBoxItem> items = new List<ImageComboBoxItem>();
  46. items.Add(new ImageComboBoxItem("15秒", "15"));
  47. items.Add(new ImageComboBoxItem("30秒", "30"));
  48. items.Add(new ImageComboBoxItem("60秒", "60"));
  49. this.txtCalccCycle.Properties.Items.AddRange(items);
  50. if (this.Text == "编辑参考任务频点" && info != null)
  51. {
  52. this.txtSample.EditValue = samples.FirstOrDefault(r => r.Id == info.SampleInfoID);
  53. this.searchLookSat.EditValue = sats.FirstOrDefault(r => r.Id == info.SatInfoId);
  54. this.txtCalccCycle.EditValue = $"{info.CalccCycle}";
  55. this.txtSnr.EditValue = info.Snr;
  56. this.txtDtoCenter.EditValue = Convert.ToInt64(info.DtoCenter * 1e6);
  57. this.txtDtoRange.EditValue = info.DtoRange;
  58. this.txtSampleLen.EditValue = info.SampleLen;
  59. this.txtEnable.Checked = info.Enable;
  60. }
  61. infos = new List<RefTaskFreq>();
  62. var refFreqs = await unitOfWork.Of<RefTaskFreq>().GetAllAsync();
  63. infos.AddRange(refFreqs);
  64. }
  65. private void btnCancel_Click(object sender, EventArgs e)
  66. {
  67. this.DialogResult = DialogResult.Cancel;
  68. }
  69. private void btnOk_Click(object sender, EventArgs e)
  70. {
  71. try
  72. {
  73. dxErrorProvider.ClearErrors();
  74. if (txtSample.EditValue == null)
  75. {
  76. dxErrorProvider.SetError(txtSample, "请选择样本");
  77. return;
  78. }
  79. if (searchLookSat.EditValue == null)
  80. {
  81. dxErrorProvider.SetError(searchLookSat, "请选择卫星");
  82. return;
  83. }
  84. if (txtCalccCycle.EditValue == null || string.IsNullOrEmpty(txtCalccCycle.EditValue.ToString()))
  85. {
  86. dxErrorProvider.SetError(txtCalccCycle, "请选择计算周期");
  87. return;
  88. }
  89. if (!int.TryParse(txtSnr.Text, out int snr))
  90. {
  91. dxErrorProvider.SetError(txtSnr, "信噪比格式错误");
  92. return;
  93. }
  94. if (!long.TryParse(txtDtoCenter.Text, out long dtoCenter))
  95. {
  96. dxErrorProvider.SetError(txtDtoCenter, "时差中心格式错误");
  97. return;
  98. }
  99. if (!int.TryParse(txtDtoRange.Text, out int dtoRange))
  100. {
  101. dxErrorProvider.SetError(txtDtoRange, "时差范围格式错误");
  102. return;
  103. }
  104. if (!int.TryParse(txtSampleLen.Text, out int sampleLen))
  105. {
  106. dxErrorProvider.SetError(txtSampleLen, "样本长度格式错误");
  107. return;
  108. }
  109. var satInfo = (searchLookSat.EditValue as SatInfo);
  110. var sampleInfo = (txtSample.EditValue as SampleInfo);
  111. if (infos.Any(i => i.Id != info.Id && i.SampleInfoID == sampleInfo.Id && i.SatInfoId == satInfo.Id))
  112. {
  113. DxHelper.MsgBoxHelper.ShowError($"参考任务中样本[{sampleInfo.SampleName}]和卫星[{satInfo.Sat}]已经存在!");
  114. return;
  115. }
  116. info.SampleInfoID = sampleInfo.Id;
  117. info.SampleInfo = sampleInfo;
  118. info.SatInfoId = satInfo.Id;
  119. info.SatInfo = satInfo;
  120. info.CalccCycle = Convert.ToInt32(txtCalccCycle.EditValue);
  121. info.Snr = snr;
  122. info.DtoCenter = dtoCenter / 1000000f;
  123. info.DtoRange = dtoRange;
  124. info.SampleLen = sampleLen;
  125. info.Enable = txtEnable.Checked;
  126. this.DialogResult = DialogResult.OK;
  127. }
  128. catch (Exception ex)
  129. {
  130. IocContainer.Logger.Error(ex,"编辑参考任务频点信息出错");
  131. DxHelper.MsgBoxHelper.ShowError("编辑参考任务频点信息出错");
  132. }
  133. }
  134. }
  135. }