RefTaskFreqEditor.cs 6.1 KB

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