using DevExpress.Mvvm.Native; using DevExpress.XtraBars.Customization; using DevExpress.XtraGrid.Views.Grid; using DW5S.App.EditForms; using DW5S.Entity; using DW5S.Repostory; using DxHelper; using ExtensionsDev; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; namespace DW5S.App.UserControl { public partial class CtrlRefTask : DevExpress.XtraEditors.XtraUserControl { readonly List list = new List(); public CtrlRefTask() { InitializeComponent(); } private async void CtrlRefTask_Load(object sender, EventArgs e) { try { gridRefTask.UseDefault(list).UseMultiSelect().UseRowNumber() .UseAddAsync(Add) .UseEditAsync(Edit) .UseDeleteAsync(Delete) .AddContentMenu("一键启用", SvgHelper.CreateCycle("#2E8B57"), async data => { try { var ids = data.Select(p => p.Id); var unitOfWork = IocContainer.UnitOfWork; var reps = unitOfWork.Of(); await reps.UpdatePropAsync(p => ids.Contains(p.Id), p => p.Enable, true); await unitOfWork.SaveAsync(); data.ForEach(d => d.Enable = true); gridView1.RefreshData(); gridView1.BestFitColumns(); } catch (Exception ex) { IocContainer.Logger.Error(ex, "一键启用异常"); } }, false) .AddContentMenu("一键禁用", SvgHelper.CreateCycle("#FF0000"), async data => { try { var ids = data.Select(p => p.Id); var unitOfWork = IocContainer.UnitOfWork; var reps = unitOfWork.Of(); await reps.UpdatePropAsync(p => ids.Contains(p.Id), p => p.Enable, false); await unitOfWork.SaveAsync(); data.ForEach(d => d.Enable = false); gridView1.RefreshData(); gridView1.BestFitColumns(); } catch (Exception ex) { IocContainer.Logger.Error(ex, "一键禁用异常"); } }, false); List refTxList = new List(); var unitOfWork = IocContainer.UnitOfWork; var items = await unitOfWork.Of().AsQueryable() .Include(r => r.SampleInfo) .Include(r => r.SampleInfo.SigInfo) .Include(r => r.SampleInfo.RefTxInfo) .Include(r => r.SatInfo).OrderBy(p => p.Enable).ToListAsync(); list.AddRange(items); refTxList = await unitOfWork.Of().AsQueryable() .Where(t => t.TxType == EnumTxType.Ref) .OrderByDescending(p => p.UpdateTime).ToListAsync(); this.txtRef.UseDefault(showClearBtn: true).SetData(refTxList, displayField: nameof(TxInfo.Name)).UseDoubleClickToSelectAll(); } catch (Exception ex) { IocContainer.Logger.Error(ex, "查询参考任务信息异常"); DxHelper.MsgBoxHelper.ShowError("查询参考任务信息异常"); } } private async Task Add() { try { RefTaskFreqEditor frm = new RefTaskFreqEditor(); if (frm.ShowDialog() != DialogResult.OK) return null; var addItem = frm.info; var unitOfWork = IocContainer.UnitOfWork; var addRefTaskFreq = await unitOfWork.Of().AddOrUpdateAsync(new RefTaskFreq { SampleInfoID = addItem.SampleInfoID, SatInfoId = addItem.SatInfoId, CalccCycle = addItem.CalccCycle, Snr = addItem.Snr, DtoCenter = addItem.DtoCenter, DtoRange = addItem.DtoRange, SampleLen = addItem.SampleLen, Enable = addItem.Enable, UpdateTime = DateTime.Now, }); await unitOfWork.SaveAsync(); addItem.Id = addRefTaskFreq.Id; return addItem; } catch (Exception ex) { IocContainer.Logger.Error(ex, "添加参考任务信息异常"); DxHelper.MsgBoxHelper.ShowError("添加参考任务信息异常"); return null; } } private async Task Edit(RefTaskFreq editItem) { try { RefTaskFreqEditor frm = new RefTaskFreqEditor(editItem); if (frm.ShowDialog() != DialogResult.OK) return null; editItem = frm.info; var unitOfWork = IocContainer.UnitOfWork; editItem.UpdateTime = DateTime.Now; await unitOfWork.Of().AddOrUpdateAsync(editItem); await unitOfWork.SaveAsync(); return editItem; } catch (Exception ex) { IocContainer.Logger.Error(ex, "保存参考任务信息异常"); DxHelper.MsgBoxHelper.ShowError("保存参考任务信息异常"); return null; } } private async Task Delete(List list) { try { var unitOfWork = IocContainer.UnitOfWork; await unitOfWork.Of().DeleteAsync(list); await unitOfWork.SaveAsync(); return true; } catch (Exception ex) { IocContainer.Logger.Error(ex, "删除参考任务信息异常"); DxHelper.MsgBoxHelper.ShowError("删除参考任务信息异常"); return false; } } private async void gridView1_DoubleClick(object sender, EventArgs e) { var editItem = gridView1.GetFocusedRow() as RefTaskFreq; if (editItem == null) return; await Edit(editItem); } private void gridView1_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) { GridView view = sender as GridView; if (e.Column == view.Columns["IsEnable"]) { string status = view.GetRowCellValue(e.RowHandle, view.Columns["IsEnable"]) as string; if (status == "启用") { e.Appearance.BackColor = Color.LightGreen; // 设置为绿色背景,表示活跃状态 } else if (status == "禁用") { e.Appearance.BackColor = Color.LightCoral; // 设置为淡红色背景,表示非活跃状态 } } } private async void btnSerach_Click(object sender, EventArgs e) { try { var reftxInfo = (txtRef.EditValue as TxInfo); var unitOfWork = IocContainer.UnitOfWork; var query = unitOfWork.Of().AsQueryable(); if (reftxInfo != null) { query.Where(r => r.SampleInfo.RefTxInfoID == reftxInfo.Id); } var items = await query .Include(r => r.SampleInfo.SigInfo) .Include(r => r.SampleInfo.RefTxInfo) .Include(r => r.SatInfo) .OrderBy(p => p.Enable).ToListAsync(); list.Clear(); list.AddRange(items); gridView1.RefreshData(); } catch (Exception ex) { IocContainer.Logger.Error(ex, "查询参考任务信息异常"); DxHelper.MsgBoxHelper.ShowError("查询参考任务信息异常"); } } } }