123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267 |
- using DW5S.Entity;
- using DW5S.Repostory;
- using DW5S.ViewModel;
- using DxHelper;
- using ExtensionsDev;
- using System;
- using System.Collections.Generic;
- using System.Data;
- using System.Linq;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using XdCxRhDW5S.ViewModel;
- namespace DW5S.App.EditForms
- {
- public partial class StationEditor : DevExpress.XtraEditors.XtraForm
- {
- public AdCardViewModel info;
- public List<AdChannelViewModel> AdChItems = new List<AdChannelViewModel>();
- public List<AdChannelViewModel> DeleteChItems = new List<AdChannelViewModel>();
- private List<AdCardViewModel> infos;
- public StationEditor()
- {
- InitializeComponent();
- this.layoutControl1.UseDefault();
- this.Text = "添加采集";
- info = new AdCardViewModel();
- this.StartPosition = FormStartPosition.CenterParent;
- cbTriggerMode.Properties.AddEnum<EnumAdTriggerMode>();
- cbClockerType.Properties.AddEnum<EnumAdClockType>();
- cbClockerType.EditValue = EnumAdClockType.In;
- cbTriggerMode.EditValue = EnumAdTriggerMode.In;
- this.txtClockFreq.EditValue = 100;
- this.txtDdcFreq.EditValue = 70;
- this.txtMutil.EditValue = 1;
- this.txtStorePath.EditValue = "E:\\data";
- this.txtStationAddress.EditValue = "192.168.1.20:5001";
- this.checkEnable.Checked = true;
- grdChannelList.UseDefault(AdChItems).UseEmptyText("请添加采集通道").UseEdit()
- .HideColumn(nameof(AdChannelViewModel.Id))
- .UseBoolColumn(nameof(AdChannelViewModel.Enable), "启用", "禁用");
- }
- public StationEditor(AdCardViewModel info)
- : this()
- {
- this.Text = "编辑采集";
- this.info = info;
- this.AdChItems = info.AdChannels;
- }
- private async void CxEditor_Load(object sender, EventArgs e)
- {
- try
- {
- if (!this.DesignMode)
- {
- grdChannelList.UseSearchEditColumn(nameof(AdChannelViewModel.TxInfoID), GetAnts, displayField: nameof(RecTxViewModel.Name))
- .UseSearchEditColumn(nameof(AdChannelViewModel.SatInfoID), GetSats, displayField: nameof(SatViewModel.Sat));
- gvChannelList.Columns[nameof(AdChannelViewModel.ChNum)].OptionsColumn.AllowEdit = true;
- gvChannelList.Columns[nameof(AdChannelViewModel.CenterFreq)].OptionsColumn.AllowEdit = true;
- gvChannelList.Columns[nameof(AdChannelViewModel.SatInfoID)].OptionsColumn.AllowEdit = true;
- gvChannelList.Columns[nameof(AdChannelViewModel.TxInfoID)].OptionsColumn.AllowEdit = true;
- gvChannelList.Columns[nameof(AdChannelViewModel.Enable)].OptionsColumn.AllowEdit = true;
- gvChannelList.CellValueChanged += GvChannelList_CellValueChanged;
- }
- if (this.Text == "编辑采集" && info != null)
- {
- this.txtStationName.EditValue = info.Name;
- this.cbTriggerMode.EditValue = info.TriggerMode;
- this.cbTriggerMode.EditValue = info.TriggerMode;
- this.txtClockFreq.EditValue = info.ClockFreq;
- this.txtDdcFreq.EditValue = info.DdcFreq;
- this.txtMutil.EditValue = info.Mutil;
- this.txtStorePath.EditValue = info.StorePath;
- this.txtStationAddress.EditValue = info.Address;
- this.checkEnable.Checked = info.Enable;
- }
- var unitOfWork = IocContainer.UnitOfWork;
- infos = new List<AdCardViewModel>();
- var repsCx = unitOfWork.Of<AdCard>();
- var res = await repsCx.GetAllAsync();
- infos.AddRange(res.To<List<AdCardViewModel>>());
- this.grdChannelList.DataSource = AdChItems;
- this.gvChannelList.BestFitColumns();
- }
- catch (Exception ex)
- {
- string msg = "查询采集信息异常";
- IocContainer.Logger.Error(ex, msg);
- DxHelper.MsgBoxHelper.ShowError(msg);
- }
- }
- private void GvChannelList_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
- {
- if (e.Column.FieldName == nameof(AdChannelViewModel.ChNum))
- {
- var ChNum = (int)e.Value;
- if (AdChItems.Count(i => i.ChNum == ChNum) > 1)
- {
- DxHelper.MsgBoxHelper.ShowError($"采集通道[{ChNum}]已经存在!");
- return;
- }
- }
- }
- private async Task<List<RecTxViewModel>> GetAnts()
- {
- var unitOfWork = IocContainer.UnitOfWork;
- var repsRecTx = unitOfWork.Of<TxInfo>();
- var items = await repsRecTx.FindAsync(f => f.Enable == true, p => p.Name);
- var ss = items.To<List<RecTxViewModel>>();
- return ss;
- }
- private async Task<List<SatViewModel>> GetSats()
- {
- var unitOfWork = IocContainer.UnitOfWork;
- var reps = unitOfWork.Of<SatInfo>();
- var res = await reps.GetAllAsync();
- return res.OrderBy(s => s.SatName).To<List<SatViewModel>>();
- }
- private void btnOk_Click(object sender, EventArgs e)
- {
- try
- {
- dxErrorProvider.ClearErrors();
- if (string.IsNullOrEmpty(txtStationName.Text))
- {
- dxErrorProvider.SetError(txtStationName, "采集名称不能为空");
- return;
- }
- if (infos.Any(i => i.Id != info.Id && i.Name == txtStationName.Text))
- {
- dxErrorProvider.SetError(txtStationName, $"采集[{txtStationName.Text}]已经存在!");
- return;
- }
- if (cbTriggerMode.EditValue == null)
- {
- dxErrorProvider.SetError(cbTriggerMode, $"请选择触发模式!");
- return;
- }
- if (cbClockerType.EditValue == null)
- {
- dxErrorProvider.SetError(cbClockerType, $"请选择时钟类型!");
- return;
- }
- if (!double.TryParse(txtClockFreq.Text, out double clockFreqMHz))
- {
- dxErrorProvider.SetError(txtClockFreq, $"时钟频率非有效数字!");
- return;
- }
- if (!double.TryParse(txtDdcFreq.Text, out double ddcFreqMHz))
- {
- dxErrorProvider.SetError(txtDdcFreq, $"DDC频率非有效数字!");
- return;
- }
- if (!int.TryParse(txtMutil.Text, out int mutil))
- {
- dxErrorProvider.SetError(txtMutil, $"抽取倍数非有效整形数字!");
- return;
- }
- if (string.IsNullOrEmpty(txtStorePath.Text.Trim()))
- {
- dxErrorProvider.SetError(txtStorePath, "存储路径不能为空");
- return;
- }
- if (string.IsNullOrEmpty(txtStationAddress.Text.Trim()))
- {
- dxErrorProvider.SetError(txtStationAddress, "采集服务地址不能为空");
- return;
- }
- bool checkSucess = info.AdChannels.Count == 0 ? true : false;
- string msg = "";
- foreach (var chitem in info.AdChannels)
- {
- if (chitem.ChNum == 0)
- {
- msg = $"采集通道号不能为空";
- checkSucess = false;
- break;
- }
- if (chitem.SatInfoID == 0)
- {
- msg = $"采集通道号[{chitem.ChNum}]对应卫星不能为空";
- checkSucess = false;
- break;
- }
- if (chitem.TxInfoID == 0)
- {
- msg = $"采集通道号[{chitem.ChNum}]对应天线不能为空";
- checkSucess = false;
- break;
- }
- checkSucess = true;
- }
- if (!checkSucess)
- {
- DxHelper.MsgBoxHelper.ShowError(msg);
- return;
- }
- info.Name = txtStationName.Text;
- info.TriggerMode = (EnumAdTriggerMode)cbTriggerMode.EditValue;
- info.ClockerType = (EnumAdClockType)cbClockerType.EditValue;
- info.ClockFreq = clockFreqMHz;
- info.DdcFreq = ddcFreqMHz;
- info.Mutil = mutil;
- info.StorePath = txtStorePath.Text.Trim();
- info.Address = txtStationAddress.Text.Trim();
- info.Enable = checkEnable.Checked;
- this.DialogResult = DialogResult.OK;
- }
- catch (Exception ex)
- {
- string msg = "编辑站点信息出错";
- IocContainer.Logger.Error(ex, msg);
- DxHelper.MsgBoxHelper.ShowError(msg);
- }
- }
- private void btnCancle_Click(object sender, EventArgs e)
- {
- this.DialogResult = DialogResult.Cancel;
- }
- private void GroupChannel_CustomButtonClick(object sender, DevExpress.XtraBars.Docking2010.BaseButtonEventArgs e)
- {
- string caption = e.Button.Properties.Caption;
- switch (caption)
- {
- case "添加":
- AdChItems.Add(new AdChannelViewModel() { CreateTime = DateTime.Now, UpdateTime = DateTime.Now });
- gvChannelList.RefreshData();
- break;
- case "删除":
- try
- {
- if (MsgBoxHelper.ShowConfirm("确定删除选中的采集通道吗?"))
- {
- var deletes = gvChannelList.DeleteSelectedRows<AdChannelViewModel>();
- DeleteChItems.AddRange(deletes);
- }
- }
- catch (Exception ex)
- {
- string msg = "删除采集通道信息异常";
- IocContainer.Logger.Error(ex, msg);
- DxHelper.MsgBoxHelper.ShowError(msg);
- }
- break;
- }
- }
- }
- }
|