| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 | 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 DPP_YH_Core.Extensions;using DxHelper;using ExtensionsDev;using System;using System.Collections.Generic;using System.ComponentModel;using System.ComponentModel.DataAnnotations;using System.Data;using System.Data.Entity;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 XdCxRhDW.Dto;using XdCxRhDW.Entity;using XdCxRhDW.Repostory;namespace XdCxRhDW.App.EditForms{    public partial class TaskEditor : DevExpress.XtraEditors.XtraForm    {        public TaskInfo info;        public List<SigInfo> selectedItem = new List<SigInfo>();        public TaskEditor()        {            InitializeComponent();            this.layoutControl1.UseDefault();            this.Text = "添加任务";            info = new TaskInfo();            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()));            }            layoutControlItemAdja1.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;            layoutControlItemAdja2.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;            this.layoutControl1.BestFit();        }        public TaskEditor(TaskInfo info, List<SigInfo> taskSigList)           : this()        {            this.Text = $"编辑任务[{info.TaskName}]";            this.info = info;            this.selectedItem = taskSigList;        }        private async void TaskEditor_Load(object sender, EventArgs e)        {            using (RHDWContext db = new RHDWContext())            {                var sats = await db.SatInfos.ToListAsync();                this.txtMainSat.UseDefault().SetData(sats, nameof(SatInfo.Sat)).UseDoubleClickToSelectAll();                this.txtAdja1Sat.UseDefault().SetData(sats, nameof(SatInfo.Sat)).UseDoubleClickToSelectAll();                this.txtAdja2Sat.UseDefault().SetData(sats, nameof(SatInfo.Sat)).UseDoubleClickToSelectAll();            }            if (this.Text.StartsWith("编辑任务") && info != null)            {                using (RHDWContext db = new RHDWContext())                {                    var satMain = await db.SatInfos.Where(w => w.SatCode == info.MainSat).FirstOrDefaultAsync();                    var satAdja1 = await db.SatInfos.Where(w => w.SatCode == info.Adja1Sat).FirstOrDefaultAsync();                    var satAdja2 = await db.SatInfos.Where(w => w.SatCode == info.Adja2Sat).FirstOrDefaultAsync();                    this.txtTaskName.Text = info.TaskName;                    this.txtPosType.SelectedIndex = (int)info.PosType;                    this.txtMainSat.EditValue = satMain;                    this.txtAdja1Sat.EditValue = satAdja1;                    this.txtAdja2Sat.EditValue = satAdja2;                }            }        }        private void btnSave_Click(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 == "添加任务")                {                    using (RHDWContext db = new RHDWContext())                    {                        if (db.TaskInfos.Any(p => p.TaskName == txtTaskName.Text))                        {                            dxErrorProvider.SetError(txtTaskName, "任务名称重复");                            return;                        }                    }                }                else                {                    using (RHDWContext db = new RHDWContext())                    {                        if (db.TaskInfos.Any(p => p.ID != info.ID && p.TaskName == txtTaskName.Text))                        {                            dxErrorProvider.SetError(txtTaskName, "任务名称重复");                            return;                        }                    }                }                if (posType == EnumPosType.X1Leo)                {                    if (txtMainSat.EditValue == null)                    {                        dxErrorProvider.SetError(txtMainSat, "请选择卫星");                        return;                    }                }                else if (posType == EnumPosType.X2D1 || posType == EnumPosType.X2Leo)                {                    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;                    }                }                else if (posType == EnumPosType.X3TwoDto || posType == EnumPosType.X3Leo)                {                    if (txtMainSat.EditValue == null)                    {                        dxErrorProvider.SetError(txtMainSat, "请选择主星");                        return;                    }                    if (txtAdja1Sat.EditValue == null)                    {                        dxErrorProvider.SetError(txtAdja1Sat, "请选择邻星1");                        return;                    }                    if (txtAdja2Sat.EditValue == null)                    {                        dxErrorProvider.SetError(txtAdja2Sat, "请选择邻星2");                        return;                    }                    if (txtMainSat.EditValue == txtAdja1Sat.EditValue)                    {                        dxErrorProvider.SetError(txtAdja1Sat, "邻星1不能和主星一致");                        return;                    }                    if (txtMainSat.EditValue == txtAdja2Sat.EditValue)                    {                        dxErrorProvider.SetError(txtAdja2Sat, "邻星2不能和主星一致");                        return;                    }                    if (txtAdja1Sat.EditValue == txtAdja2Sat.EditValue)                    {                        dxErrorProvider.SetError(txtAdja2Sat, "邻星2不能和邻星1一致");                        return;                    }                }                info.TaskState = EnumTaskState.Stopped;                info.TaskName = txtTaskName.Text;                info.PosType = (EnumPosType)txtPosType.SelectedIndex;                info.MainSat = ((SatInfo)txtMainSat.EditValue).SatCode;                if (txtAdja1Sat.EditValue != null)                    info.Adja1Sat = ((SatInfo)txtAdja1Sat.EditValue).SatCode;                if (txtAdja2Sat.EditValue != null)                    info.Adja2Sat = ((SatInfo)txtAdja2Sat.EditValue).SatCode;                info.TaskType = EnumTaskType.Real;                this.DialogResult = DialogResult.OK;            }            catch (Exception ex)            {                Serilog.Log.Error(ex, "编辑任务信息出错");                DxHelper.MsgBoxHelper.ShowError("编辑任务信息出错");            }        }        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.X1Leo)            {                layoutControlItemAdja1.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;                layoutControlItemAdja2.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;            }            else if (posType == EnumPosType.X2D1 || posType == EnumPosType.X2Leo)            {                layoutControlItemAdja1.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;                layoutControlItemAdja2.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;                this.layoutControlItemAdja1.Text = "邻星";            }            else if (posType == EnumPosType.X3TwoDto || posType == EnumPosType.X3Leo)            {                layoutControlItemAdja1.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;                layoutControlItemAdja2.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;                this.layoutControlItemAdja1.Text = "邻星1";            }            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;            }        }    }}
 |