using DW5S.Entity; using DW5S.Repostory; 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; namespace DW5S.App.UserControl { public partial class CtrlRefCgRes : DevExpress.XtraEditors.XtraUserControl { List list = new List(); public CtrlRefCgRes() { InitializeComponent(); layoutControl1.UseDefault(); txtStartTime.UseDefault(); txtEndTime.UseDefault(); gridCg.UseDefault(list, showScrollH: true).UseDeleteAsync(DelCg); } private async void CtrlRefCgRes_Load(object sender, EventArgs e) { try { List satList = new List(); var unitOfWork = IocContainer.UnitOfWork; var repsSat = unitOfWork.Of(); satList.AddRange(await repsSat.GetAllAsync(p => p.UpdateTime)); this.txtSat.UseDefault().SetData(satList, nameof(SatInfo.Sat)).UseDoubleClickToSelectAll(); ctrlPaging.CurrentPageChanged += async (int currentPage) => { }; ctrlPaging.PageCountChanged += async (int pageCount) => { }; } catch (Exception ex) { IocContainer.Logger.Error(ex, "查询参考参估结果异常"); DxHelper.MsgBoxHelper.ShowError("查询参考参估结果异常"); } } private async Task DelCg(List selectedRes) { try { var unitOfWork = IocContainer.UnitOfWork; var repsCg = unitOfWork.Of(); await repsCg.DeleteAsync(selectedRes); await unitOfWork.SaveAsync(); 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 async 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; } } list = await searchPos(); this.gridCg.DataSource = list; gridView1.BestFitColumns(); GC.Collect(); } private async Task> searchPos() { try { bool hasSat = txtSat.EditValue != null; var unitOfWork = IocContainer.UnitOfWork; var repsCg = unitOfWork.Of(); DateTime start = DateTime.MinValue; DateTime end = DateTime.MinValue; if (txtTimeCho.Text == "自定义") { start = txtStartTime.DateTime; end = txtEndTime.DateTime; } else { var queryableRefCg = repsCg.AsQueryable(); if (hasSat) queryableRefCg = queryableRefCg.Where(p => p.SatInfoId == ((SatInfo)txtSat.EditValue).Id); var max = queryableRefCg.MaxBy(p => p.SigTime); if (max == null) return new List(); end = max.SigTime; start = end.AddHours(-(int)txtTimeCho.EditValue); } if (end == DateTime.MinValue) { return new List();//没有数据不查询 } var queryable = repsCg.AsQueryable(); if (hasSat) queryable = queryable.Where(p => p.SatInfoId == ((SatInfo)txtSat.EditValue).Id); queryable = queryable.Where(w => w.SigTime >= start && w.SigTime <= end) .Include(w => w.SatInfo) .Include(w => w.RefTxInfo) .OrderByDescending(o => o.SigTime); var cgRes = await queryable.ToListAsync(); return cgRes; } catch (Exception ex) { IocContainer.Logger.Error(ex, "参考参估结果查询异常"); MsgBoxHelper.ShowError("参考参估结果查询异常"); } return new List(); } 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, "参考参估绘图异常"); } } } }