using DataSimulation.Repostory.Model; using DevExpress.Utils.Html; using DevExpress.XtraEditors; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.Entity; using System.Drawing; using System.Linq; using System.Windows.Forms; using DataSimulation.Repostory.EFContext; using DataSimulation.Forms.EditForms; using DataSimulation.Repostory; using System.Collections; using System.Threading.Tasks; using DevExpress.XtraCharts.Native; using DxHelper; using System.IO; using System.Text; namespace DataSimulation.Forms.UserControl { public partial class CtrlFlight : DevExpress.XtraEditors.XtraUserControl { List list = new List(); public CtrlFlight() { InitializeComponent(); } private async void CtrlLoad(object sender, EventArgs e) { try { gridFlight.Init().UseSort().UseFilter().UseMultiSelect().UseRowNumber(); gridFlight.DataSource = list; var simulationCache = await SimulationCache.GetAllAsync(); list.AddRange(simulationCache); gridView1.RefreshData(); } catch (Exception ex) { Serilog.Log.Error(ex, "查询航迹信息异常"); DxHelper.MsgBoxHelper.ShowError("查询航迹信息异常"); } } private void gridView1_PopupMenuShowing(object sender, DevExpress.XtraGrid.Views.Grid.PopupMenuShowingEventArgs e) { if (gridView1.GetSelectedRows().Any()) { btnDel.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; btnEdit.Visibility = DevExpress.XtraBars.BarItemVisibility.Always; } else { btnDel.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; btnEdit.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; } popupMenu1.ShowPopup(MousePosition); } private void btnAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { try { FlightEditor frm = new FlightEditor(list); if (frm.ShowDialog() != DialogResult.OK) return; var addItem = frm.info; list.Add(addItem); gridView1.RefreshData(); } catch (Exception ex) { Serilog.Log.Error(ex, "添加航迹信息异常"); DxHelper.MsgBoxHelper.ShowError("添加航迹信息异常"); } } private void btnEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { try { var editItem = gridView1.GetFocusedRow() as SimulationInfo; var all = list.Where(l => l.ID != editItem.ID).ToList(); FlightEditor frm = new FlightEditor(all, editItem); if (frm.ShowDialog() != DialogResult.OK) return; gridView1.RefreshData(); } catch (Exception ex) { Serilog.Log.Error(ex, "编辑航迹信息异常"); DxHelper.MsgBoxHelper.ShowError("编辑航迹信息异常"); } } private async void btnDel_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { try { if (XtraMessageBox.Show("确认删除选择的航迹信息?", "确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) { return; } this.btnQuery.Enabled = this.btnImport.Enabled = false; await Task.Run(async () => { var ids = gridView1.GetSelectedRows(); List list = new List(); foreach (var idx in ids) { var item = gridView1.GetRow(idx) as SimulationInfo; list.Add(item); } var groupData = list.GroupBy(p => p.CreateTime.ToString("yyyyMMdd")); foreach (var item in groupData) { var dayIds = item.Select(p => p.ID).ToList(); using (SimulationPartContext db = SimulationPartContext.GetContext(item.First().CreateTime)) { var delItems = await db.SimulationInfos.Where(p => dayIds.Contains(p.ID)).ToListAsync(); db.SimulationInfos.RemoveRange(delItems); await db.SaveChangesAsync(); } } }); gridView1.DeleteSelectedRows(); } catch (Exception ex) { Serilog.Log.Error(ex, "删除选中的航迹异常"); DxHelper.MsgBoxHelper.ShowError("删除选中的航迹异常"); } finally { this.btnQuery.Enabled = this.btnImport.Enabled = true; } } private void gridView1_CustomDrawEmptyForeground(object sender, DevExpress.XtraGrid.Views.Base.CustomDrawEventArgs e) { if (gridView1.RowCount == 0) { string txt = "右键添加航迹"; var s = e.Appearance.CalcTextSize(e.Cache, txt, e.Bounds.Width).ToSize(); var x = (e.Bounds.Width - s.Width) / 2; var y = (e.Bounds.Height - s.Height) / 2; e.Appearance.ForeColor = Color.Gray; e.Appearance.DrawString(e.Cache, txt, new Rectangle(x, y, s.Width, s.Height)); } } private void btnImport_Click(object sender, EventArgs e) { try { FlightImport frm = new FlightImport(list); if (frm.ShowDialog() != DialogResult.OK) return; var addItem = frm.Addinfo; list.AddRange(addItem); gridView1.RefreshData(); } catch (Exception ex) { Serilog.Log.Error(ex, "导入航迹信息异常"); DxHelper.MsgBoxHelper.ShowError("导入航迹信息异常"); } } private async void btnQuery_Click(object sender, EventArgs e) { try { list.Clear(); string name = txtFlightName.Text.Trim(); var simulationCache = await SimulationCache.GetAllAsync(); var simulations = simulationCache.Where(m => m.SimulationName.Contains(name)); list.AddRange(simulations); gridView1.RefreshData(); } catch (Exception ex) { string msg = $"查询航迹:{txtFlightName.Text.Trim()}信息异常"; Serilog.Log.Error(ex, msg); DxHelper.MsgBoxHelper.ShowError(msg); } } } }