using DevExpress.Xpo; using DevExpress.XtraEditors; using DW5S.App.CorTools; using DW5S.DTO; using DW5S.Entity; using DW5S.Repostory; using DW5S.ViewModel; using DxHelper; using ExtensionsDev; using Microsoft.Extensions.Caching.Memory; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using XdCxRhDW5S.ViewModel; namespace DW5S.App.UserControl { public partial class CtrlXl : DevExpress.XtraEditors.XtraUserControl { List list = new List(); int? satCode = null; public CtrlXl() { InitializeComponent(); this.layoutControl1.UseDefault(); this.ctrlPage1.Compact = false; this.ctrlPage1.ShowGoto = true; btnOpen.UseChooseFile().UseDoubleClickToSelectAll(); } private void TxtSat_EditValueChanged(object sender, EventArgs e) { var sat = txtSat.EditValue as SatViewModel; satCode = sat?.SatCode; ctrlPage1.RefreshData(); } private async Task> GetAllSat() { var unitOfWork = IocContainer.UnitOfWork; var repsXl = unitOfWork.Of() as XlRepository; var list = await repsXl.GetAllSat(); return list.To>(); } private void CtrlXl_Load(object sender, EventArgs e) { ctrlPage1.SetOnQuery(LoadPageData); var unitOfWork = IocContainer.UnitOfWork; var repsXl = unitOfWork.Of() as XlRepository; txtSat.UseDefault("不限制", true).SetData(GetAllSat, displayField: nameof(SatViewModel.Sat)).UseDoubleClickToSelectAll(); gridXl.UseDefault(list).UseRowNumber().UseDeleteAsync(Del) .UseClearAsync(Clear).UseExportXlsx() .AddMenu("星历推算", SvgHelper.LoadFromFile("Image\\XlCalc.svg"), () => { var ids = gridView1.GetSelectedRows(); if (ids.Length <= 0) { XtraMessageBox.Show("请选择需要星历推算的数据信息!"); return; } var item = gridView1.GetRow(ids[0]) as XlViewModel; XlCalculateForm form = new XlCalculateForm(item.TwoLine); form.ShowDialog(); }); //.AddMenu("刷新数据", SvgHelper.CreateRefresh(), () => //{ // currentPage = 1; // ctrlPage1.RefreshData(); //}); } private async Task LoadPageData(PageQueryDto arg) { var repsXl = IocContainer.UnitOfWork.Of(); var queryable = repsXl.AsQueryable(); if (satCode != null) queryable = queryable.Where(x => x.SatCode == satCode); queryable = queryable.OrderByDescending(p => p.TimeUTC).ThenByDescending(p => p.Lon); var pageData = await repsXl.GetPageData(arg, queryable); list.Clear(); list.AddRange(pageData.Data.To>()); gridView1.RefreshData(); return pageData; } private async void btnImp_Click(object sender, EventArgs e) { this.layoutControl1.Enabled = false; if (string.IsNullOrEmpty(btnOpen.Text)) { DxHelper.MsgBoxHelper.ShowInfo($"请选择星历文件"); this.layoutControl1.Enabled = true; return; } string file; try { file = await HttpHelper.UploadFileAsync(btnOpen.Text); } catch (Exception ex) { layoutControl1.Enabled = true; string msg = "上传星历文件异常"; IocContainer.Logger.Error(ex, msg); DxHelper.MsgBoxHelper.ShowError(msg); return; } try { XlImportDto dto = new XlImportDto() { File = file }; var result = await HttpHelper.PostRequestAsync(SysConfig.GetUrl("Xl/ImportTle"), dto); if (result.code == 200) { DxHelper.MsgBoxHelper.ShowInfo($"星历导入成功.共导入{result.data.Count}条"); ctrlPage1.RefreshData(); } else { IocContainer.Logger.Error(result.msg); DxHelper.MsgBoxHelper.ShowError(result.msg); } } catch (Exception ex) { string msg = "星历导入异常"; IocContainer.Logger.Error(ex, msg); DxHelper.MsgBoxHelper.ShowError(msg); } this.layoutControl1.Enabled = true; } private async Task Del(List list) { try { this.Enabled = false; var unitOfWork = IocContainer.UnitOfWork; var repsXl = unitOfWork.Of(); var count = await repsXl.DeleteAsync(list.To>()); await unitOfWork.SaveAsync(typeof(XlInfo)); ctrlPage1.RefreshData(); IocContainer.Logger.Information($"删除选中星历,共删除了{count}条星历记录"); return true; } catch (Exception ex) { string msg = "删除选中星历异常"; IocContainer.Logger.Error(ex, msg); DxHelper.MsgBoxHelper.ShowError(msg); return false; } finally { this.Enabled = true; } } private async Task Clear() { try { this.Enabled = false; var unitOfWork = IocContainer.UnitOfWork; var repsXl = unitOfWork.Of(); var count = await repsXl.DeleteAsync(p => true); await unitOfWork.SaveAsync(typeof(XlInfo)); ctrlPage1.RefreshData(); IocContainer.Logger.Information($"删除所有星历,共删除了{count}条星历记录"); return true; } catch (Exception ex) { string msg = "删除所有星历异常"; IocContainer.Logger.Error(ex, msg); DxHelper.MsgBoxHelper.ShowError(msg); return false; } finally { this.Enabled = true; } } } }