using DevExpress.Utils.About; using DevExpress.Utils.Extensions; using DevExpress.XtraBars.Customization; using DevExpress.XtraEditors; using DevExpress.XtraEditors.ButtonsPanelControl; using DevExpress.XtraEditors.Controls; using DevExpress.XtraEditors.DXErrorProvider; using DevExpress.XtraPrinting.Native; using DxHelper; using ExtensionsDev; using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Data; using System.Drawing; using System.Linq; using System.Reflection; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using System.Windows.Documents; using System.Windows.Forms; using DW5S.DTO; using DW5S.Entity; using DW5S.Repostory; using Serilog; using DW5S.Service; using DW5S.ViewModel; using XdCxRhDW5S.ViewModel; namespace DW5S.App.EditForms { public partial class TaskEditor : DevExpress.XtraEditors.XtraForm { public TaskViewModel info; public List selectedItem = new List(); public TaskEditor() { InitializeComponent(); this.layoutControl1.UseDefault(); this.Text = "添加任务"; info = new TaskViewModel(); this.StartPosition = FormStartPosition.CenterParent; //加载DW类型 var values = Enum.GetValues(typeof(EnumPosType)); foreach (var item in values) { this.txtPosType.Properties.Items.Add(new RadioGroupItem(Convert.ToInt32(item), ((EnumPosType)item).GetEnumDisplayName())); } values = Enum.GetValues(typeof(EnumTaskType)); foreach (var item in values) { this.txtTaskType.Properties.Items.Add(new RadioGroupItem(Convert.ToInt32(item), ((EnumTaskType)item).GetEnumDisplayName())); } this.txtTaskType.SelectedIndex = 0; this.txtTaskType_SelectedIndexChanged(this, EventArgs.Empty); } public TaskEditor(TaskViewModel info, List taskSigList) : this() { this.Text = $"编辑任务[{info.TaskName}]"; this.info = info; this.selectedItem = taskSigList; } private async void TaskEditor_Load(object sender, EventArgs e) { var unitOfWork = IocContainer.UnitOfWork; var sats = await unitOfWork.Of().GetAllAsync(); var satList = sats.To>(); this.txtMainSat.UseDefault().SetData(satList, displayField: nameof(SatViewModel.Sat)).UseDoubleClickToSelectAll(); this.txtAdja1Sat.UseDefault().SetData(satList, displayField: nameof(SatViewModel.Sat)).UseDoubleClickToSelectAll(); this.txtAdja2Sat.UseDefault().SetData(satList, displayField: nameof(SatViewModel.Sat)).UseDoubleClickToSelectAll(); if (this.Text.StartsWith("编辑任务") && info != null) { var satMain = satList.FirstOrDefault(w => w.SatCode == info.MainSat); var satAdja1 = satList.FirstOrDefault(w => w.SatCode == info.Adja1Sat); var satAdja2 = satList.FirstOrDefault(w => w.SatCode == info.Adja2Sat); this.txtTaskName.Text = info.TaskName; this.txtPosType.SelectedIndex = (int)info.PosType; this.txtTaskType.SelectedIndex = (int)info.TaskType; this.txtMainSat.EditValue = satMain; this.txtAdja1Sat.EditValue = satAdja1; this.txtAdja2Sat.EditValue = satAdja2; } } private async void btnSave_ClickAsync(object sender, EventArgs e) { try { dxErrorProvider.ClearErrors(); var posType = (EnumPosType)txtPosType.Properties.Items[txtPosType.SelectedIndex].Value; if (txtTaskName.EditValue == null) { dxErrorProvider.SetError(txtTaskName, "请填写任务名"); return; } if (!selectedItem.Any()) { DxHelper.MsgBoxHelper.ShowError("请选择信号"); return; } if (this.Text == "添加任务") { var unitOfWork = IocContainer.UnitOfWork; var repsTask = unitOfWork.Of(); if (await repsTask.FirstOrDefaultAsync(p => p.TaskName == txtTaskName.Text) != null) { dxErrorProvider.SetError(txtTaskName, "任务名称重复"); return; } } else { var unitOfWork = IocContainer.UnitOfWork; var repsTask = unitOfWork.Of(); if (await repsTask.FirstOrDefaultAsync(p => p.Id != info.Id && p.TaskName == txtTaskName.Text) != null) { dxErrorProvider.SetError(txtTaskName, "任务名称重复"); return; } } if (posType == EnumPosType.X1D1CX) { if (txtMainSat.EditValue == null) { dxErrorProvider.SetError(txtMainSat, "请选择卫星"); return; } } else if (posType == EnumPosType.X2D1 || posType == EnumPosType.X2D1NoRef) { if (txtMainSat.EditValue == null) { dxErrorProvider.SetError(txtMainSat, "请选择主星"); return; } if (txtAdja1Sat.EditValue == null) { dxErrorProvider.SetError(txtAdja1Sat, "请选择邻星"); return; } if (txtMainSat.EditValue == txtAdja1Sat.EditValue) { dxErrorProvider.SetError(txtAdja1Sat, "邻星不能和主星一致"); return; } } info.TaskState = EnumTaskState.Stopped; info.TaskName = txtTaskName.Text; info.PosType = (EnumPosType)txtPosType.SelectedIndex; info.MainSat = ((SatViewModel)txtMainSat.EditValue).SatCode; if (txtAdja1Sat.EditValue != null) info.Adja1Sat = ((SatViewModel)txtAdja1Sat.EditValue).SatCode; if (txtAdja2Sat.EditValue != null) info.Adja2Sat = ((SatViewModel)txtAdja2Sat.EditValue).SatCode; info.TaskType = (EnumTaskType)txtTaskType.SelectedIndex; this.DialogResult = DialogResult.OK; } catch (Exception ex) { string msg = "编辑任务信息出错"; IocContainer.Logger.Error(ex, msg); DxHelper.MsgBoxHelper.ShowError(msg); } } private void txtPosType_EditValueChanged(object sender, EventArgs e) { RadioGroup posTypeRadioGroup = sender as RadioGroup; var posType = (EnumPosType)posTypeRadioGroup.Properties.Items[posTypeRadioGroup.SelectedIndex].Value; if (posType == EnumPosType.X1D1CX) { layoutControlItemAdja1.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never; layoutControlItemAdja2.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never; } else if (posType == EnumPosType.X2D1|| posType == EnumPosType.X2D1NoRef) { layoutControlItemAdja1.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always; layoutControlItemAdja2.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never; this.layoutControlItemAdja1.Text = "邻星"; } this.layoutControl1.BestFit(); } private void txtTaskType_SelectedIndexChanged(object sender, EventArgs e) { var a = this.Height; if (this.Height < 438) this.Height += 55; this.layoutControl1.BestFit(); } private void btnFreq_Click(object sender, EventArgs e) { if (this.Text.StartsWith("添加任务")) { TaskEditorSignal frm = new TaskEditorSignal(); if (frm.ShowDialog() != DialogResult.OK) return; frm.info = info; selectedItem.Clear(); selectedItem = frm.listSigInfoSelected; } else if (this.Text.StartsWith("编辑任务") && info != null) { TaskEditorSignal frm = new TaskEditorSignal(info, selectedItem); if (frm.ShowDialog() != DialogResult.OK) return; selectedItem.Clear(); selectedItem = frm.listSigInfoSelected; } } } }