using DevExpress.Mvvm.Native; using DevExpress.XtraSpreadsheet.Model; 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 CtrlCgRes : DevExpress.XtraEditors.XtraUserControl { List list = new List(); public CtrlCgRes() { InitializeComponent(); this.layoutControl1.UseDefault(); this.ctrlPage1.Compact = false; this.ctrlPage1.AlignRight = true; this.ctrlPage1.ShowGoto = true; } private async void CtrlCgRes_Load(object sender, EventArgs e) { try { ctrlPage1.SetOnQuery(LoadPageData); txtStartTime.UseDefault(); txtEndTime.UseDefault(); gridCg.UseDefault(list, showScrollH: true).UseMultiSelect().UseRowNumber().UseDeleteAsync(DelCg); var unitOfWork = IocContainer.UnitOfWork; var repsTask = unitOfWork.Of(); var tskLists = await repsTask.GetAllAsync(p => p.UpdateTime); this.txtTask.UseDefault().SetData(tskLists.To>(), nameof(TaskViewModel.TaskName)).UseDoubleClickToSelectAll(); } catch (Exception ex) { string msg = "查询参估结果异常"; IocContainer.Logger.Error(ex, msg); DxHelper.MsgBoxHelper.ShowError(msg); } } private async Task DelCg(List selectedRes) { try { var unitOfWork = IocContainer.UnitOfWork; var repsCg = unitOfWork.OfLong(); var count = await repsCg.DeleteAsync(selectedRes); await unitOfWork.SaveAsync(); ctrlPage1.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 btnSearch_Click(object sender, EventArgs e) { if (txtTask.EditValue == null) { MsgBoxHelper.ShowError("请选择任务"); return; } 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) { var unitOfWork = IocContainer.UnitOfWork; var repsCg = unitOfWork.OfLong(); var queryable = repsCg.AsQueryable(); int? taskID = ((TaskViewModel)txtTask.EditValue)?.Id; try { DateTime start = DateTime.MinValue; DateTime end = DateTime.MinValue; if (taskID != null) { queryable = queryable.Where(p => p.TaskID == taskID); } if (txtTimeCho.Text == "自定义") { start = txtStartTime.DateTime; end = txtEndTime.DateTime; } else { var max = queryable.OrderByDescending(p => p.SigTime).FirstOrDefault(); if (max != null) { end = max.SigTime; start = end.AddHours(-(int)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 .Include(w => w.StationRes) .OrderByDescending(o => o.SigTime) .ThenBy(p => p.MainCode); } catch (TaskCanceledException) { } catch (Exception ex) { string msg = "参估结果查询异常"; IocContainer.Logger.Error(ex, msg); MsgBoxHelper.ShowError(msg); } 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, "参估绘图异常"); } } } }