| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- @page "/warning_day"
- @using EasyTemplate.Tool.Entity.App
- @using EasyTemplate.Service
- @inject WarningService WarningService
- @inject NavigationManager Navigation
- <PageTitle>预警告统计</PageTitle>
- <div class="container-fluid">
- <div class="card">
- <div class="card-header">
- <h5 class="mb-0"><i class="fas fa-chart-line"></i> 预警告统计(35 天累计)</h5>
- </div>
- <div class="card-body">
- @* 筛选条件 *@
- <div class="row mb-3">
- <div class="col-md-3">
- <label class="form-label">油枪 ID</label>
- <AntDesign.InputNumber Placeholder="请输入油枪 ID" @bind-Value="@selectedNozzleId" Style="width: 100%" />
- </div>
- <div class="col-md-3">
- <label class="form-label">开始日期</label>
- <DatePicker @bind-Value="@startDate" Format="yyyy-MM-dd" Style="width: 100%" />
- </div>
- <div class="col-md-3">
- <label class="form-label">结束日期</label>
- <DatePicker @bind-Value="@endDate" Format="yyyy-MM-dd" Style="width: 100%" />
- </div>
- <div class="col-md-3 d-flex align-items-end">
- <button class="btn btn-primary me-2" @onclick="LoadDataAsync">
- <i class="fas fa-search"></i> 查询
- </button>
- <button class="btn btn-secondary" @onclick="ResetFilter">
- <i class="fas fa-redo"></i> 重置
- </button>
- </div>
- </div>
- @* 统计信息 *@
- @if (statisticsList.Count > 0)
- {
- <div class="alert alert-info">
- <i class="fas fa-info-circle"></i>
- 共查询到 @statisticsList.Count 条记录,统计范围:@startDate?.ToString("yyyy-MM-dd") 至 @endDate?.ToString("yyyy-MM-dd")
- </div>
- }
- @* 数据表格 *@
- <Spin Spinning="@loading">
- <Table TItem="WarningStatistics" DataSource="@statisticsList" ScrollY="600px" Bordered="true" Size="TableSize.Small">
- <ColumnDefinitions Context="row">
- <PropertyColumn TItem="WarningStatistics" TProp="int" Align="ColumnAlign.Center" Property="c=>c.nozzle" Title="油枪 ID" Width="80" />
- <PropertyColumn TItem="WarningStatistics" TProp="DateOnly" Align="ColumnAlign.Center" Property="c=>c.statistics_date" Title="统计日期" Width="100">
- @{ var statDate = row.statistics_date.ToString("yyyy-MM-dd"); }
- @statDate
- </PropertyColumn>
- <PropertyColumn TItem="WarningStatistics" TProp="int" Align="ColumnAlign.Center" Property="c=>c.daily_overproof_alert" Title="严重超标" Width="90" />
- <PropertyColumn TItem="WarningStatistics" TProp="int" Align="ColumnAlign.Center" Property="c=>c.daily_overproof" Title="超标" Width="80" />
- <PropertyColumn TItem="WarningStatistics" TProp="int" Align="ColumnAlign.Center" Property="c=>c.daily_total" Title="有效" Width="80" />
- <PropertyColumn TItem="WarningStatistics" TProp="int" Align="ColumnAlign.Center" Title="严重超标率" Width="100">
- @{
- var dailyAlertRate = row.daily_overproofrate_alert;
- }
- @dailyAlertRate%
- </PropertyColumn>
- <PropertyColumn TItem="WarningStatistics" TProp="int" Align="ColumnAlign.Center" Title="超标率" Width="90">
- @{ var dailyRate = row.daily_overproofrate; }
- @dailyRate%
- </PropertyColumn>
- <PropertyColumn TItem="WarningStatistics" TProp="int" Align="ColumnAlign.Center" Property="c=>c.total_overproof_alert" Title="累计严重超标" Width="90" />
- <PropertyColumn TItem="WarningStatistics" TProp="int" Align="ColumnAlign.Center" Property="c=>c.total_overproof" Title="累计超标" Width="80" />
- <PropertyColumn TItem="WarningStatistics" TProp="int" Align="ColumnAlign.Center" Property="c=>c.total_count" Title="累计有效" Width="120">
- @{
- var isAccumulated = row.is_accumulated;
- var totalCount = row.total_count;
- }
- <span class="@(isAccumulated ? "text-success fw-bold" : "text-warning")">
- @totalCount
- </span>
- </PropertyColumn>
- <PropertyColumn TItem="WarningStatistics" TProp="int" Align="ColumnAlign.Center" Title="累计严重超标率" Width="100">
- @{
- var totalAlertRate = row.total_overproofrate_alert;
- }
- @totalAlertRate%
- </PropertyColumn>
- <PropertyColumn TItem="WarningStatistics" TProp="int" Align="ColumnAlign.Center" Title="累计超标率" Width="90">
- @{ var totalRate = row.total_overproofrate; }
- <span class="fw-bold">@totalRate%</span>
- </PropertyColumn>
- <PropertyColumn TItem="WarningStatistics" TProp="int" Align="ColumnAlign.Center" Property="c=>c.continue_days" Title="累计天数" Width="80">
- @{
- var accDays = row.continue_days;
- }
- @accDays 天
- </PropertyColumn>
- <PropertyColumn TItem="WarningStatistics" TProp="int" Align="ColumnAlign.Center" Property="c=>c.daily_overproof_2" Title="超标2" Width="90" />
- <PropertyColumn TItem="WarningStatistics" TProp="int" Align="ColumnAlign.Center" Property="c=>c.total_overproof_2" Title="累计超标 2" Width="90" />
- <PropertyColumn TItem="WarningStatistics" TProp="int" Align="ColumnAlign.Center" Title="超标率2" Width="100">
- @{
- var dailyRate2 = row.daily_overproofrate_2;
- }
- @dailyRate2%
- </PropertyColumn>
- <PropertyColumn TItem="WarningStatistics" TProp="int" Align="ColumnAlign.Center" Title="累计超标率2" Width="100">
- @{ var totalRate2 = row.total_overproofrate_2; }
- @totalRate2%
- </PropertyColumn>
- </ColumnDefinitions>
- </Table>
- </Spin>
- </div>
- </div>
- </div>
- @code {
- private List<WarningStatistics> statisticsList = new();
- private bool loading = false;
-
- private int? selectedNozzleId;
- private DateOnly? startDate;
- private DateOnly? endDate;
- protected override async Task OnInitializedAsync()
- {
- // 初始化默认日期范围为最近 35 天
- endDate = DateOnly.FromDateTime(DateTime.Today);
- startDate = endDate?.AddDays(-34);
-
- await LoadDataAsync();
- }
- private void ResetFilter()
- {
- selectedNozzleId = null;
- endDate = DateOnly.FromDateTime(DateTime.Today);
- startDate = endDate?.AddDays(-34);
- }
- private async Task LoadDataAsync()
- {
- if (startDate == null || endDate == null)
- {
- return;
- }
- loading = true;
- StateHasChanged();
- try
- {
- var query = new WarningStatisticsQuery
- {
- NozzleId = selectedNozzleId,
- StartDate = startDate,
- EndDate = endDate,
- PageIndex = 1,
- PageSize = 1000
- };
- statisticsList = await WarningService.GetStatisticsByFilterAsync(query);
-
- // 按日期和油枪排序
- statisticsList = statisticsList
- .OrderBy(s => s.nozzle)
- .ThenByDescending(s => s.statistics_date)
- .ToList();
- }
- catch (Exception ex)
- {
- Console.WriteLine($"加载统计数据失败:{ex.Message}");
- }
- finally
- {
- loading = false;
- StateHasChanged();
- }
- }
- }
|