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.Diagnostics; using System.IO; using System.Linq; using System.Threading.Tasks; using XdCxRhDW5S.ViewModel; namespace DW5S.App.UserControl { public partial class CtrlRefCgRes : DevExpress.XtraEditors.XtraUserControl { List list = new List(); public CtrlRefCgRes() { InitializeComponent(); this.layoutControl1.UseDefault(); this.ctrlPage1.Compact = false; this.ctrlPage1.AlignRight = true; this.ctrlPage1.ShowGoto = true; } private async void CtrlRefCgRes_Load(object sender, EventArgs e) { try { ctrlPage1.SetOnQuery(LoadPageData); txtStartTime.UseDefault(); txtEndTime.UseDefault(); gridCg.UseDefault(list).UseMultiSelect().UseRowNumber().UseDeleteAsync(DelCg); List satList = new List(); var unitOfWork = IocContainer.UnitOfWork; var repsSat = unitOfWork.Of(); satList.AddRange(await repsSat.GetAllAsync(p => p.UpdateTime)); this.txtSat.UseDefault(showClearBtn: true).SetData(satList.To>(), displayField: nameof(SatViewModel.Sat)).UseDoubleClickToSelectAll(); } catch (Exception ex) { IocContainer.Logger.Error(ex, "查询参考参估结果异常"); DxHelper.MsgBoxHelper.ShowError("查询参考参估结果异常"); } } private async Task DelCg(List selectedRes) { try { var unitOfWork = IocContainer.UnitOfWork; var repsCg = unitOfWork.OfLong(); var count = await repsCg.DeleteAsync(selectedRes.To>()); await unitOfWork.SaveAsync(); ctrlPage1.RefreshData(); IocContainer.Logger.Information($"删除选中参考参估结果,共删除了{count}条参考参估结果记录"); return true; } catch (Exception ex) { IocContainer.Logger.Error(ex, "删除参考参估结果异常"); DxHelper.MsgBoxHelper.ShowError("删除参考参估结果异常"); 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 btnSearch_Click(object sender, EventArgs e) { if (txtTimeCho.SelectedText == "自定义") { if (txtStartTime.EditValue == null) { DxHelper.MsgBoxHelper.ShowError($"请选择信号开始时间!"); return; } if (txtEndTime.EditValue == null) { DxHelper.MsgBoxHelper.ShowError($"请选择信号结束时间!"); return; } if (txtStartTime.DateTime > txtEndTime.DateTime) { DxHelper.MsgBoxHelper.ShowError($"开始时间不能大于结束时间!"); return; } if ((txtEndTime.DateTime - txtStartTime.DateTime).TotalDays > 10) { MsgBoxHelper.ShowWarning("时间跨度不能超过10天!"); return; } } ctrlPage1.RefreshData(); } private async Task LoadPageData(PageQueryDto arg) { int? satId = ((SatViewModel)txtSat.EditValue)?.Id; var unitOfWork = IocContainer.UnitOfWork; var repsCg = unitOfWork.OfLong(); var queryable = repsCg.AsQueryable(); try { DateTime start = DateTime.MinValue; DateTime end = DateTime.MinValue; if (satId!=null) { queryable = queryable.Where(p => p.SatInfoID == satId); } if (txtTimeCho.Text == "自定义") { start = txtStartTime.DateTime; end = txtEndTime.DateTime; } else { var max = queryable.OrderByDescending(p => p.FileTime).FirstOrDefault(); if (max != null) { end = max.FileTime; start = end.AddHours(-(int)txtTimeCho.EditValue); } } if (start != DateTime.MinValue) { queryable = queryable.Where(w => w.FileTime >= start); } if (end != DateTime.MinValue) { queryable = queryable.Where(w => w.FileTime <= end); } queryable = queryable .Include(w => w.SatInfo) .Include(w => w.RefTxInfo) .OrderByDescending(o => o.FileTime) .ThenBy(p => p.SatInfo.SatCode); } catch (Exception ex) { IocContainer.Logger.Error(ex, "参考参估结果查询异常"); MsgBoxHelper.ShowError("参考参估结果查询异常"); } var pageData = await repsCg.GetPageData(arg, queryable); list.Clear(); list.AddRange(pageData.Data.To>()); gridView1.RefreshData(); gridView1.BestFitColumns(); return pageData; } private void btnDraw_Click(object sender, EventArgs e) { try { var exeFile = AppConfigHelper.Get("CgDrawExe"); if (string.IsNullOrWhiteSpace(exeFile)) { MsgBoxHelper.ShowError("请在平台配置文件中设置绘图程序路径CgDrawExe"); return; } if (!File.Exists(exeFile)) { MsgBoxHelper.ShowError($"找不到绘图程序[{exeFile}]"); return; } FileInfo f = new FileInfo(exeFile); var dir = Path.GetDirectoryName(f.FullName); List data = gridView1.DataController.GetAllFilteredAndSortedRows().OfType().ToList(); var file = data.ToCsvFile($"{dir}\\CgDraw{DateTime.Now:yyyyMMddHHmmss}.csv"); Process.Start(new ProcessStartInfo() { FileName = f.FullName, Arguments = file, }); } catch (Exception ex) { IocContainer.Logger.Error(ex, "参考参估绘图异常"); } } } }