using DevExpress.CodeParser; using DevExpress.Diagram.Core.Shapes; using DevExpress.Map.Dashboard; using DW5S.DTO; using DW5S.Entity; using DW5S.Repostory; using DW5S.ViewModel; using DxHelper; using ExtensionsDev; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using XdCxRhDW5S.ViewModel; namespace DW5S.App.UserControl { public partial class CtrlAdRes : DevExpress.XtraEditors.XtraUserControl { List list = new List(); public CtrlAdRes() { InitializeComponent(); this.layoutControl1.UseDefault(); } private async Task> GetAllSat() { var unitOfWork = IocContainer.UnitOfWork; var repsXl = unitOfWork.Of() as XlRepository; var list = await repsXl.GetAllSat(); return list.To>(); } private async void CtrlAdRes_Load(object sender, EventArgs e) { try { ctrlPage.SetOnQuery(LoadPageData); txtSigStartTime.UseDefault(); txtSigEndTime.UseDefault(); gridAdRes.UseDefault(list, showScrollH: true).UseEmptyText("无结果").UseMultiSelect().UseRowNumber().UseDeleteAsync(DelAd); List satList = new List(); var unitOfWork = IocContainer.UnitOfWork; var repsSat = unitOfWork.Of(); satList.AddRange(await repsSat.GetAllAsync(p => p.UpdateTime)); this.txtSat.UseDefault().SetData(GetAllSat, nameof(SatViewModel.Sat)).UseDoubleClickToSelectAll(); } catch (Exception ex) { string msg = "查询采集结果异常"; IocContainer.Logger.Error(ex, msg); DxHelper.MsgBoxHelper.ShowError(msg); } } private async Task DelAd(List selectedRes) { try { var unitOfWork = IocContainer.UnitOfWork; var repsAd = unitOfWork.OfLong(); var count = await repsAd.DeleteAsync(selectedRes); await unitOfWork.SaveAsync(); ctrlPage.RefreshData(); IocContainer.Logger.Information($"删除选中参估结果,共删除了{count}条参估结果记录"); return true; } catch (Exception ex) { string msg = "删除采集结果异常"; IocContainer.Logger.Error(ex, msg); DxHelper.MsgBoxHelper.ShowError(msg); return false; } } private void txtTimeCho_SelectedIndexChanged(object sender, EventArgs e) { switch (txtTimeCho.Text) { case "最近1小时": case "最近6小时": case "最近12小时": case "最近1天": case "最近3天": itemStart.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never; itemEnd.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never; break; case "自定义": itemStart.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always; itemEnd.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always; break; } } private void btnQuery_Click(object sender, EventArgs e) { if (txtSat.EditValue == null) { MsgBoxHelper.ShowError("请选择卫星"); return; } if (txtTimeCho.SelectedText == "自定义") { if (txtSigStartTime.EditValue == null) { DxHelper.MsgBoxHelper.ShowError($"请选择信号开始时间!"); return; } if (txtSigEndTime.EditValue == null) { DxHelper.MsgBoxHelper.ShowError($"请选择信号结束时间!"); return; } if (txtSigStartTime.DateTime > txtSigEndTime.DateTime) { DxHelper.MsgBoxHelper.ShowError($"开始时间不能大于结束时间!"); return; } if ((txtSigEndTime.DateTime - txtSigStartTime.DateTime).TotalDays > 10) { MsgBoxHelper.ShowWarning("时间跨度不能超过10天!"); return; } } ctrlPage.RefreshData(); } private async Task LoadPageData(PageQueryDto arg) { var unitOfWork = IocContainer.UnitOfWork; var repsAd = unitOfWork.OfLong(); var queryable = repsAd.AsQueryable(); int? satCode = ((SatViewModel)txtSat.EditValue)?.SatCode; try { DateTime start = DateTime.MinValue; DateTime end = DateTime.MinValue; if (satCode != null) { queryable = queryable.Where(p => p.SatCode == satCode); } if (txtTimeCho.Text == "自定义") { start = txtSigStartTime.DateTime; end = txtSigEndTime.DateTime; } else { var max = queryable.OrderByDescending(p => p.SigTime).FirstOrDefault(); if (max != null) { end = max.SigTime; start = end.AddHours(-Convert.ToInt32(txtTimeCho.EditValue)); } } if (start != DateTime.MinValue) { queryable = queryable.Where(w => w.SigTime >= start); } if (end != DateTime.MinValue) { queryable = queryable.Where(w => w.SigTime <= end); } queryable = queryable .OrderByDescending(o => o.SigTime) .ThenBy(p => p.SatCode); } catch (TaskCanceledException) { } catch (Exception ex) { string msg = "参估结果查询异常"; IocContainer.Logger.Error(ex, msg); MsgBoxHelper.ShowError(msg); } var pageData = await repsAd.GetPageData(arg, queryable); list.Clear(); list.AddRange(pageData.Data.To>()); gridView.RefreshData(); gridView.BestFitColumns(); return pageData; } } }