using AntDesign; using AntDesign.TableModels; using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.DataProtection.KeyManagement; using SqlSugar; using System.Linq.Expressions; using System.Threading.Tasks; using VideoAnalysisCore.Common; using VideoAnalysisCore.Enum; using VideoAnalysisCore.Model; using VideoAnalysisCore.Model.Dto; namespace Learn.VideoAnalysis.Components.Pages { public partial class VideoTaskPage : ComponentBase { [Inject] private ConfirmService ComfirmService { get; set; } = default!; [Inject] private Repository taskDB { get; set; } = default!; IEnumerable _selectedRows = []; ITable _table; List _dataSource = null; RefAsync _total = 0; bool tableLoading = false; /// /// 重试 /// /// async void ReStart(VideoTaskDto query) { var lastEnum = (await RedisExpand.Redis.HMGetAsync(RedisExpandKey.Task(query.Id), "LastEnum")).FirstOrDefault() ; await taskDB.UpdateAsync(s => new VideoTask() { ErrorMessage = string.Empty },s => s.Id == query.Id); RedisExpand.InsertChannel(lastEnum, query.Id); } /// /// 分页 查询 筛选 时 /// /// async void OnChange(QueryModel query) { tableLoading = true; List where = default!; if (query.FilterModel != null && ((query.FilterModel?.Count() ?? 0) > 0)) { where = query.ToSqlSugerWhere(); } _dataSource = await taskDB.AsQueryable() .Where(where) .Select() .ToPageListAsync(query.PageIndex - 1, query.PageSize, _total); foreach (var item in _dataSource) { if (!string.IsNullOrEmpty(item.ErrorMessage) || item.LastEnum == RedisChannelEnum.EndTask) continue; item.Progress = RedisExpand.Redis.HMGet(RedisExpandKey.Task(item.Id), "Progress").FirstOrDefault(); } tableLoading = false; StateHasChanged(); } private static System.Timers.Timer _timer; public void StartTimer(Object source, System.Timers.ElapsedEventArgs e) { if (_dataSource is null) return; foreach (var item in _dataSource) { if (!string.IsNullOrEmpty(item.ErrorMessage) || item.LastEnum == RedisChannelEnum.EndTask) continue; item.Progress = RedisExpand.Redis.HMGet(RedisExpandKey.Task(item.Id), "Progress").FirstOrDefault(); } StateHasChanged(); } /// /// 初始化 /// protected override void OnInitialized() { _timer = new System.Timers.Timer(2000); _timer.Elapsed += StartTimer; _timer.Enabled = true; } private async Task Comfirm(string message) { return await ComfirmService.Show(message, "提示", ConfirmButtons.YesNo, ConfirmIcon.Warning) == ConfirmResult.Yes; } } }