using DevExpress.XtraEditors.Controls; using DW5S.Entity; using DW5S.Repostory; using ExtensionsDev; using Microsoft.EntityFrameworkCore; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace DW5S.App.EditForms { public partial class RefTaskFreqEditor : DevExpress.XtraEditors.XtraForm { public RefTaskFreq info; private List infos; public RefTaskFreqEditor() { InitializeComponent(); this.layoutControl1.UseDefault(); txtSampleLen.UseDoubleClickToSelectAll(); txtDtoCenter.UseDoubleClickToSelectAll(); this.Text = "添加参考任务频点"; info = new RefTaskFreq(); this.StartPosition = FormStartPosition.CenterParent; } public RefTaskFreqEditor(RefTaskFreq info) : this() { this.Text = "编辑参考任务频点"; this.info = info; } private async void RefTaskFreqEditor_Load(object sender, EventArgs e) { var samples = new List(); var sats = new List(); var unitOfWork = IocContainer.UnitOfWork; var repsSample = unitOfWork.Of(); var res = await repsSample.AsQueryable().Include(s => s.SigInfo).Include(s => s.RefTxInfo).ToListAsync(); samples.AddRange(res); var satInfos = await unitOfWork.Of().GetAllAsync(); sats.AddRange(satInfos); this.txtSample.UseDefault().SetData(samples, displayField: nameof(SampleInfo.SampleName)).UseDoubleClickToSelectAll(); this.searchLookSat.UseDefault().SetData(sats, displayField: nameof(SatInfo.Sat)).UseDoubleClickToSelectAll(); List items = new List(); items.Add(new ImageComboBoxItem("15秒", "15")); items.Add(new ImageComboBoxItem("30秒", "30")); items.Add(new ImageComboBoxItem("60秒", "60")); this.txtCalccCycle.Properties.Items.AddRange(items); if (this.Text == "编辑参考任务频点" && info != null) { this.txtSample.EditValue = samples.FirstOrDefault(r => r.Id == info.SampleInfoID); this.searchLookSat.EditValue = sats.FirstOrDefault(r => r.Id == info.SatInfoId); this.txtCalccCycle.EditValue = $"{info.CalccCycle}"; this.txtSnr.EditValue = info.Snr; this.txtDtoCenter.EditValue = Convert.ToInt64(info.DtoCenter * 1e6); this.txtDtoRange.EditValue = info.DtoRange; this.txtSampleLen.EditValue = info.SampleLen; this.txtEnable.Checked = info.Enable; } infos = new List(); var refFreqs = await unitOfWork.Of().GetAllAsync(); infos.AddRange(refFreqs); } private void btnCancel_Click(object sender, EventArgs e) { this.DialogResult = DialogResult.Cancel; } private void btnOk_Click(object sender, EventArgs e) { try { dxErrorProvider.ClearErrors(); if (txtSample.EditValue == null) { dxErrorProvider.SetError(txtSample, "请选择样本"); return; } if (searchLookSat.EditValue == null) { dxErrorProvider.SetError(searchLookSat, "请选择卫星"); return; } if (txtCalccCycle.EditValue == null || string.IsNullOrEmpty(txtCalccCycle.EditValue.ToString())) { dxErrorProvider.SetError(txtCalccCycle, "请选择计算周期"); return; } if (!int.TryParse(txtSnr.Text, out int snr)) { dxErrorProvider.SetError(txtSnr, "信噪比格式错误"); return; } if (!long.TryParse(txtDtoCenter.Text, out long dtoCenter)) { dxErrorProvider.SetError(txtDtoCenter, "时差中心格式错误"); return; } if (!int.TryParse(txtDtoRange.Text, out int dtoRange)) { dxErrorProvider.SetError(txtDtoRange, "时差范围格式错误"); return; } if (!int.TryParse(txtSampleLen.Text, out int sampleLen)) { dxErrorProvider.SetError(txtSampleLen, "样本长度格式错误"); return; } var satInfo = (searchLookSat.EditValue as SatInfo); var sampleInfo = (txtSample.EditValue as SampleInfo); if (infos.Any(i => i.Id != info.Id && i.SampleInfoID == sampleInfo.Id && i.SatInfoId == satInfo.Id)) { DxHelper.MsgBoxHelper.ShowError($"参考任务中样本[{sampleInfo.SampleName}]和卫星[{satInfo.Sat}]已经存在!"); return; } info.SampleInfoID = sampleInfo.Id; info.SampleInfo = sampleInfo; info.SatInfoId = satInfo.Id; info.SatInfo = satInfo; info.CalccCycle = Convert.ToInt32(txtCalccCycle.EditValue); info.Snr = snr; info.DtoCenter = dtoCenter / 1000000f; info.DtoRange = dtoRange; info.SampleLen = sampleLen; info.Enable = txtEnable.Checked; this.DialogResult = DialogResult.OK; } catch (Exception ex) { IocContainer.Logger.Error(ex,"编辑参考任务频点信息出错"); DxHelper.MsgBoxHelper.ShowError("编辑参考任务频点信息出错"); } } } }