123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- using DW5S.Entity;
- using DW5S.Repostory;
- using DW5S.ViewModel;
- using ExtensionsDev;
- using Microsoft.EntityFrameworkCore;
- using System;
- using System.Collections.Generic;
- using System.Data;
- using System.IO;
- using System.Linq;
- using System.Windows.Forms;
- namespace DW5S.App.EditForms
- {
- public partial class SampleEditor : DevExpress.XtraEditors.XtraForm
- {
- public SampleViewModel info;
- private List<SampleViewModel> infos;
- public SampleEditor()
- {
- InitializeComponent();
- this.layoutControl1.UseDefault();
- txtSampleName.UseDoubleClickToSelectAll();
- txtSampleFile.UseDoubleClickToSelectAll();
- this.Text = "添加样本";
- info = new SampleViewModel();
- this.StartPosition = FormStartPosition.CenterParent;
- }
- public SampleEditor(SampleViewModel info)
- : this()
- {
- this.Text = "编辑样本";
- this.info = info;
- }
- private async void SampleEditor_Load(object sender, EventArgs e)
- {
- var reftxs = new List<RefTxViewModel>();
- var refsigs = new List<SigViewModel>();
- var unitOfWork = IocContainer.UnitOfWork;
- var res = await unitOfWork.Of<TxInfo>().FindAsync(t=>t.TxType== EnumTxType.Ref);
- reftxs.AddRange(res.To<List<RefTxViewModel>>());
- var refsigList = await unitOfWork.Of<SigInfo>().FindAsync(s => s.SigType == EnumSigType.Ref);
- refsigs.AddRange(refsigList.To<List<SigViewModel>>());
- this.searchLookRef.UseDefault().SetData(reftxs, displayField: nameof(RefTxViewModel.Name)).UseDoubleClickToSelectAll();
- this.txtRefSig.UseDefault().SetData(refsigs, displayField: nameof(SigViewModel.FreqDownDis)).UseDoubleClickToSelectAll();
- if (this.Text == "编辑样本" && info != null)
- {
- this.txtSampleName.EditValue = info.SampleName;
- this.txtFsHz.EditValue = info.Fs;
- this.txtStartSec.EditValue = info.StartSec;
- this.txtEndSec.EditValue = info.EndSec;
- this.searchLookRef.EditValue = reftxs.FirstOrDefault(r => r.Id == info.TxInfoID);
- this.txtRefSig.EditValue = refsigs.FirstOrDefault(s => s.Id == info.SigInfoID);
- this.txtSampleFile.EditValue = Path.Combine(info.SamplePath, info.SampleFileName);
- this.txtRmark.Text = info.Remark;
- }
- infos = new List<SampleViewModel>();
- var repsSample = unitOfWork.Of<SampleInfo>();
- var sampleres = await repsSample.GetAllAsync();
- infos.AddRange(sampleres.To<List<SampleViewModel>>());
- }
- private void btnCancel_Click(object sender, EventArgs e)
- {
- this.DialogResult = DialogResult.Cancel;
- }
- private async void btnOk_Click(object sender, EventArgs e)
- {
- try
- {
- dxErrorProvider.ClearErrors();
- string sampleName = txtSampleName.Text;
- if (string.IsNullOrWhiteSpace(sampleName))
- {
- dxErrorProvider.SetError(txtSampleName, "请输入样本名称");
- return;
- }
- if (searchLookRef.EditValue == null)
- {
- dxErrorProvider.SetError(searchLookRef, "请选择参考站");
- return;
- }
- if (txtRefSig.EditValue == null)
- {
- dxErrorProvider.SetError(txtRefSig, "请选择参考信号");
- return;
- }
- if (!double.TryParse(txtFsHz.Text, out double fsHz))
- {
- dxErrorProvider.SetError(txtFsHz, "采样率格式错误");
- return;
- }
- if (!int.TryParse(txtStartSec.Text, out int startSec))
- {
- dxErrorProvider.SetError(txtStartSec, "开始秒数格式错误");
- return;
- }
- if (!int.TryParse(txtEndSec.Text, out int endSec))
- {
- dxErrorProvider.SetError(txtEndSec, "结束秒数格式错误");
- return;
- }
- if (endSec <= startSec)
- {
- dxErrorProvider.SetError(txtEndSec, "结束秒数大于开始秒数");
- return;
- }
- var unitOfWork = IocContainer.UnitOfWork;
- var settings =await unitOfWork.Of<SysSetings>().FirstOrDefaultAsync();
- if (string.IsNullOrEmpty(settings.SampleDirectory))
- {
- DxHelper.MsgBoxHelper.ShowError($"系统设置中输入样本存储目录");
- return;
- }
- if (!Directory.Exists(settings.SampleDirectory))
- {
- DxHelper.MsgBoxHelper.ShowError($"系统设置中的样本存储目录不存在");
- return;
- }
- string sampleFile = txtSampleFile.Text;
- if (string.IsNullOrEmpty(sampleFile))
- {
- dxErrorProvider.SetError(txtSampleFile, "请输入样本文件");
- return;
- }
- if (!File.Exists(sampleFile))
- {
- dxErrorProvider.SetError(txtSampleFile, "样本文件不存在");
- return;
- }
- if (infos.Any(i => i.Id != info.Id && i.SampleName == sampleName))
- {
- DxHelper.MsgBoxHelper.ShowError($"样本名称[{sampleName}]已经存在!");
- return;
- }
- string fileName = Path.GetFileName(sampleFile);
- try
- {
- string destfile = Path.Combine(settings.SampleDirectory, fileName);
- if (!sampleFile.Equals(destfile))
- {
- if (File.Exists(destfile))
- {
- File.Delete(destfile);
- }
- File.Copy(sampleFile, destfile);
- }
- }
- catch (Exception ex)
- {
- IocContainer.Logger.Error(ex,$"移动样本文件到样本存储目录{settings.SampleDirectory}失败");
- DxHelper.MsgBoxHelper.ShowError($"移动样本文件到样本存储目录{settings.SampleDirectory}失败");
- return;
- }
- var refinfo = (searchLookRef.EditValue as RefTxViewModel);
- var siginfo = (txtRefSig.EditValue as SigViewModel);
- info.SampleName = sampleName;
- info.Fs = fsHz;
- info.StartSec = startSec;
- info.EndSec = endSec;
- info.TxInfoID = refinfo.Id;
- info.RefTxInfo = refinfo.To<TxInfo>();
- info.SigInfoID = siginfo.Id;
- info.SigInfo = siginfo.To<SigInfo>();
- info.SampleFileName = fileName;
- info.SamplePath = settings.SampleDirectory;
- info.Remark = txtRmark.Text;
- this.DialogResult = DialogResult.OK;
- }
- catch (Exception ex)
- {
- IocContainer.Logger.Error(ex,"编辑样本信息出错");
- DxHelper.MsgBoxHelper.ShowError("编辑样本信息出错");
- }
- }
- private void btnSampleFile_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
- {
- OpenFileDialog dlg = new OpenFileDialog();
- dlg.Title = "文件选择";
- dlg.Multiselect = false;
- if (dlg.ShowDialog() == DialogResult.OK)
- {
- txtSampleFile.Text = dlg.FileName;
- }
- }
- }
- }
|