using DevExpress.XtraGrid.Views.Grid; using DW5S.App.EditForms; using DW5S.Entity; using DW5S.Repostory; using DW5S.ViewModel; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Data; using System.Drawing; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; using XdCxRhDW5S.ViewModel; namespace DW5S.App.UserControl { public partial class CtrlStation : DevExpress.XtraEditors.XtraUserControl { List list = new List(); public CtrlStation() { InitializeComponent(); gridStation.UseDefault(list).UseEmptyText("请添加采集通道").UseMultiSelect().UseRowNumber(); gridStation .UseBoolColumn(nameof(AdChannelViewModel.Enable), "启用", "禁用", AdChannelgView) .UseLookUpEditColumn(nameof(AdChannelViewModel.SatInfoID), displayField: nameof(SatViewModel.Sat), AdChannelgView) .UseLookUpEditColumn(nameof(AdChannelViewModel.TxInfoID), displayField: nameof(RecTxViewModel.Name), AdChannelgView); } private async void CtrlStation_Load(object sender, EventArgs e) { try { var sats = await GetSats(); var ants = await GetAnts(); gridStation.UpdateLookUpEditDataSource(nameof(AdChannelViewModel.SatInfoID), sats, AdChannelgView); gridStation.UpdateLookUpEditDataSource(nameof(AdChannelViewModel.TxInfoID), ants, AdChannelgView); gridStation.UseAddAsync(Add) .UseEditAsync(Edit) .UseDeleteAsync(Delete); var unitOfWork = IocContainer.UnitOfWork; var adCards = await unitOfWork.Of().AsQueryable() .Include(p => p.AdChannels) .OrderByDescending(p => p.Name).ToListAsync(); list.AddRange(adCards.To>()); } catch (Exception ex) { string msg = "查询采集信息异常"; IocContainer.Logger.Error(ex, msg); DxHelper.MsgBoxHelper.ShowError(msg); } } private async Task> GetAnts() { var unitOfWork = IocContainer.UnitOfWork; var repsRecTx = unitOfWork.Of(); var items = await repsRecTx.FindAsync(f => f.Enable == true, p => p.Name); var ss = items.To>(); return ss; } private async Task> GetSats() { var unitOfWork = IocContainer.UnitOfWork; var reps = unitOfWork.Of(); var res = await reps.GetAllAsync(); return res.OrderBy(s => s.SatName).To>(); } private async Task Add() { try { StationEditor frm = new StationEditor(); if (frm.ShowDialog() != DialogResult.OK) return null; var addItem = frm.info.To(); addItem.ServerStatus = EnumServerStatus.OffLine; var adChannels = frm.AdChItems.To>(); addItem.AdChannels = adChannels; var unitOfWork = IocContainer.UnitOfWork; var repsStation = unitOfWork.Of(); var res = await repsStation.AddOrUpdateAsync(addItem); await unitOfWork.SaveAsync(); var adCard = res.To(); return adCard; } catch (Exception ex) { string msg = "添加采集信息异常"; IocContainer.Logger.Error(ex, msg); DxHelper.MsgBoxHelper.ShowError(msg); return null; } } private async Task Edit(AdCardViewModel editItem) { try { StationEditor frm = new StationEditor(editItem); if (frm.ShowDialog() != DialogResult.OK) return null; var unitOfWork = IocContainer.UnitOfWork; if (frm.DeleteChItems.Count > 0) { var repsCh = unitOfWork.Of(); await repsCh.DeleteAsync(frm.DeleteChItems.To>()); await unitOfWork.SaveAsync(); } editItem = frm.info; var repsStation = unitOfWork.Of(); await repsStation.AddOrUpdateAsync(editItem.To()); await unitOfWork.SaveAsync(); return editItem; } catch (Exception ex) { string msg = "保存采集信息异常"; IocContainer.Logger.Error(ex, msg); DxHelper.MsgBoxHelper.ShowError(msg); return null; } } private async Task Delete(List list) { try { var unitOfWork = IocContainer.UnitOfWork; var repsCxTx = unitOfWork.Of(); await repsCxTx.DeleteAsync(list.To>()); await unitOfWork.SaveAsync(); return true; } catch (Exception ex) { string msg = "删除采集信息异常"; IocContainer.Logger.Error(ex, msg); DxHelper.MsgBoxHelper.ShowError(msg); return false; } } private async void gridView1_DoubleClick(object sender, EventArgs e) { var editItem = Adgview.GetFocusedRow() as AdCardViewModel; if (editItem == null) return; await Edit(editItem); } } }