using DevExpress.Data; using DevExpress.XtraCharts; using DevExpress.XtraEditors; using DevExpress.XtraExport.Helpers; using DevExpress.XtraGrid.Columns; using DevExpress.XtraGrid.Views.Grid; using DxHelper; using ExtensionsDev; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Forms; using DW5S.App.Model; using DW5S.Entity; using DW5S.Repostory; using Serilog; using DW5S.Service; namespace DW5S.App.UserControl { public partial class CtrlCgRes : DevExpress.XtraEditors.XtraUserControl { List list = new List(); public CtrlCgRes() { InitializeComponent(); } private async void CtrlCgRes_Load(object sender, EventArgs e) { try { layoutControl1.UseDefault(); txtStartTime.UseDefault(); txtEndTime.UseDefault(); gridCg.UseDefault(list, showScrollH:true).UseMultiSelect().UseRowNumber().UseDeleteAsync(DelCg); List tskList = new List(); var unitOfWork = IocContainer.UnitOfWork; var repsTask = unitOfWork.Of(); tskList.AddRange(await repsTask.GetAllAsync(p => p.UpdateTime)); this.txtTask.UseDefault().SetData(tskList, nameof(TaskInfo.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(); await repsCg.DeleteAsync(selectedRes); await unitOfWork.SaveAsync(); 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 async 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; } } list = await searchPos(); this.gridCg.DataSource = list; gridView1.BestFitColumns(); GC.Collect(); } private async Task> searchPos() { try { var unitOfWork = IocContainer.UnitOfWork; var repsCg = unitOfWork.OfLong(); DateTime start = DateTime.MinValue; DateTime end = DateTime.MinValue; if (txtTimeCho.Text == "自定义") { start = txtStartTime.DateTime; end = txtEndTime.DateTime; } else { var max = repsCg.MaxBy(p => p.SigTime, q => q.TaskID == ((TaskInfo)txtTask.EditValue).Id); if (max == null) return new List(); end = max.SigTime; start = end.AddHours(-(int)txtTimeCho.EditValue); } if (end == DateTime.MinValue) { return new List();//没有数据不查询 } var cgRes = await repsCg.FindAsync(w => w.SigTime >= start && w.SigTime <= end && w.TaskID == ((TaskInfo)txtTask.EditValue).Id, p => p.SigTime, false); return cgRes.ToList(); } catch (TaskCanceledException) { } catch (Exception ex) { string msg = "参估结果查询异常"; IocContainer.Logger.Error(ex,msg); MsgBoxHelper.ShowError(msg); } 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, "参估绘图异常"); } } } }