#region copyright //------------------------------------------------------------------------------ // 此代码版权声明为全文件覆盖,如有原作者特别声明,会在下方手动补充 // 此代码版权(除特别声明外的代码)归作者本人Diego所有 // 源代码使用协议遵循本仓库的开源协议及附加协议 // Gitee源代码仓库:https://gitee.com/diego2098/ThingsGateway // Github源代码仓库:https://github.com/kimdiego2098/ThingsGateway // 使用文档:https://diego2098.gitee.io/thingsgateway-docs/ // QQ群:605534569 //------------------------------------------------------------------------------ #endregion using BlazorComponent; using Mapster; using Masa.Blazor; using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Forms; using SqlSugar; using ThingsGateway.Admin.Blazor; namespace ThingsGateway.Gateway.Blazor; /// /// 采集设备页面 /// public partial class UploadDevicePage { readonly DevicePageInput _search = new(); IAppDataTable _datatable; List _deviceGroups = new(); List _devices = new(); List _driverPlugins; ImportExcel _importExcel; //string _searchName; [Inject] AjaxService _ajaxService { get; set; } [Inject] DriverPluginService _driverPluginService { get; set; } [CascadingParameter] MainLayout _mainLayout { get; set; } /// protected override async Task OnParametersSetAsync() { Refresh(); _driverPlugins = _driverPluginService.GetAllDriverPlugin(DriverEnum.Upload); await base.OnParametersSetAsync(); } private async Task AddCallAsync(DeviceAddInput input) { await _serviceScope.ServiceProvider.GetService().AddAsync(input); Refresh(); await _mainLayout.StateHasChangedAsync(); } private async Task GetDriverProperties(List data) { if (data != null) { if (!data.Any()) { await PopupService.EnqueueSnackbarAsync("需选择一项或多项", AlertTypes.Warning); return; } } data ??= _serviceScope.ServiceProvider.GetService().GetCacheList(true); foreach (var device in data) { device.DevicePropertys = GetDriverProperties(device.PluginName, device.Id); } await _serviceScope.ServiceProvider.GetService().EditsAsync(data); await PopupService.EnqueueSnackbarAsync("刷新成功", AlertTypes.Success); } async Task CopyDeviceAsync(IEnumerable data) { if (!data.Any()) { await PopupService.EnqueueSnackbarAsync("需选择一项或多项", AlertTypes.Warning); return; } await _serviceScope.ServiceProvider.GetService().CopyDevAsync(data); await DatatableQueryAsync(); await PopupService.EnqueueSnackbarAsync("复制成功", AlertTypes.Success); await _mainLayout.StateHasChangedAsync(); } private async Task DatatableQueryAsync() { await _datatable?.QueryClickAsync(); } private async Task DeleteCallAsync(IEnumerable input) { await _serviceScope.ServiceProvider.GetService().DeleteAsync(input.Select(a => a.Id).ToArray()); Refresh(); await _mainLayout.StateHasChangedAsync(); } Task> DeviceImportAsync(IBrowserFile file) { return _serviceScope.ServiceProvider.GetService().PreviewAsync(file); } async Task DownExportAsync(DevicePageInput input = null) { await _ajaxService.DownFileAsync("gatewayFile/uploadDevice", DateTimeExtensions.CurrentDateTime.ToFileDateTimeFormat(), input.Adapt()); } private async Task DriverValueChangedAsync(DeviceAddInput context, string pluginName) { if (pluginName.IsNullOrEmpty()) return; if (context.DevicePropertys == null || context.DevicePropertys?.Count == 0 || context.PluginName != pluginName) { try { var currentDependencyProperty = GetDriverProperties(pluginName, context.Id); context.DevicePropertys = currentDependencyProperty; await PopupService.EnqueueSnackbarAsync("插件附加属性已更新", AlertTypes.Success); } catch (Exception ex) { await PopupService.EnqueueSnackbarAsync(ex); } } context.PluginName = pluginName; } private async Task EditCallAsync(DeviceEditInput input) { await _serviceScope.ServiceProvider.GetService().EditAsync(input); _devices = _serviceScope.ServiceProvider.GetService().GetCacheList(true); _deviceGroups = _devices?.Select(a => a.DeviceGroup)?.Where(a => a != null).Distinct()?.ToList(); await _mainLayout.StateHasChangedAsync(); } List GetDriverProperties(string pluginName, long devId) { return BackgroundServiceUtil.GetBackgroundService().GetDevicePropertys(pluginName, devId); } private async Task> QueryCallAsync(DevicePageInput input) { var data = await _serviceScope.ServiceProvider.GetService().PageAsync(input); return data; } private void Refresh() { _devices = _serviceScope.ServiceProvider.GetService().GetCacheList(true); _deviceGroups = _devices?.Select(a => a.DeviceGroup)?.Where(a => a != null).Distinct()?.ToList(); } async Task SaveDeviceImportAsync(Dictionary data) { await _serviceScope.ServiceProvider.GetService().ImportAsync(data); await DatatableQueryAsync(); _importExcel.IsShowImport = false; await _mainLayout.StateHasChangedAsync(); } }