Administrator 2 months ago
parent
commit
0b2d726287
  1. 4
      Class/DataReceived.cs
  2. 57
      InfoChemicalStatistics.xaml
  3. 73
      InfoChemicalStatistics.xaml.cs
  4. 4
      InfoPage.xaml.cs
  5. 3
      SunlightAggregationTerminal.csproj

4
Class/DataReceived.cs

@ -137,6 +137,10 @@ namespace SunlightAggregationTerminal.Class
//发送消息
WeakReferenceMessenger.Default.Send(new object());
}
if (data.TryGetValue("ChemicalStatistics", out val) && val != null)//查询接受
{
InfoChemicalStatistics.Total_data(val.ToString()!);
}
if (data.TryGetValue("Query", out val) && val != null)//查询接受
{
QueryPage.Query_data(val.ToString()!);

57
InfoChemicalStatistics.xaml

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="SunlightAggregationTerminal.InfoChemicalStatistics"
Title="耗用统计">
<Grid>
<Grid>
<CollectionView x:Name="CardCollectionView">
<!-- 保持滚动条 -->
<CollectionView.ItemTemplate>
<DataTemplate>
<!-- 这里定义单个卡片的 UI 结构 -->
<Border BackgroundColor="White" Stroke="#CCCCCC"
StrokeThickness="2" Margin="10,0,10,10"
StrokeShape="RoundRectangle 10">
<VerticalStackLayout>
<!-- 设备信息 -->
<HorizontalStackLayout>
<Label Text="原料: " FontAttributes="Bold"
FontSize="22" TextColor="Black"/>
<Label Text="{Binding ProductName}" FontAttributes="Bold"
FontSize="22" TextColor="Black"/>
</HorizontalStackLayout>
<HorizontalStackLayout>
<Label Text="代码: " FontAttributes="Bold"
FontSize="22" TextColor="Black"/>
<Label Text="{Binding ProductCode}" FontAttributes="Bold"
FontSize="22" TextColor="Black"/>
</HorizontalStackLayout>
<HorizontalStackLayout>
<Label Text="用量(kg): " FontAttributes="Bold"
FontSize="22" TextColor="Black"/>
<Label Text="{Binding TotalDispenseGrams}" FontAttributes="Bold"
FontSize="22" TextColor="Black"/>
</HorizontalStackLayout>
</VerticalStackLayout>
</Border>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</Grid>
<!-- 查询中动画页面 -->
<Grid x:Name="LoadingIndicator" BackgroundColor="Gray"
IsVisible="False" Opacity="0.9">
<VerticalStackLayout Padding="30" Spacing="10"
VerticalOptions="Center"
HorizontalOptions="Center">
<ActivityIndicator IsRunning="True"
Color="#512BD4"
HorizontalOptions="Center"
VerticalOptions="Center" />
<Label Text="查询中..." FontAttributes="Bold"
FontSize="24" TextColor="Black"/>
</VerticalStackLayout>
</Grid>
</Grid>
</ContentPage>

73
InfoChemicalStatistics.xaml.cs

@ -0,0 +1,73 @@
using SunlightAggregationTerminal.Class;
using SunlightAggregationTerminal.Models;
using System.Collections.ObjectModel;
using System.Reflection;
using System.Text.Json;
using TouchSocket.Core;
namespace SunlightAggregationTerminal;
public partial class InfoChemicalStatistics : ContentPage
{
public class ChemicalTotal
{
public string? ProductName { get; set; }
public string? ProductCode { get; set; }
public float? TotalDispenseGrams { get; set; }
}
public static ObservableCollection<ChemicalTotal> ChemicalTotals { get; set; } = new();
public InfoChemicalStatistics()
{
InitializeComponent();
Dictionary<string, object> Dictionary = new Dictionary<string, object>();
Dictionary.Add("Command", "ChemicalStatistics");
Total_Command(Dictionary.ToJsonString());
}
public async void Total_Command(string dat)
{
LoadingIndicator.IsVisible = true;
ChemicalTotals.Clear();
DataReceived.Transmit(dat);
// 创建一个 15 秒的延时任务
Task delayTask = Task.Delay(15000);
// 创建一个监测任务,不断检查变量
Task monitorTask = Task.Run(async () =>
{
while (ChemicalTotals.Count == 0)
{
// 每隔 100 毫秒检查一次,避免 CPU 占用过高
await Task.Delay(100);
}
});
// 使用 Task.WhenAny 等待任意一个任务完成
await Task.WhenAny(delayTask, monitorTask);
CardCollectionView.ItemsSource = ChemicalTotals;
LoadingIndicator.IsVisible = false;
}
public static void Total_data(string dat)
{
try
{
var data = JsonSerializer.Deserialize<List<ChemicalTotal>>(dat);
if (data != null)
{
foreach (var item in data)
{
item.TotalDispenseGrams = item.TotalDispenseGrams / 1000;
ChemicalTotals.Add(item);
}
}
}
catch (Exception)
{
}
}
}

4
InfoPage.xaml.cs

@ -46,9 +46,9 @@ public partial class InfoPage : ContentPage
};
}
private void TapGestureRecognizer_ChemicalStatistics(object sender, TappedEventArgs e)
private async void TapGestureRecognizer_ChemicalStatistics(object sender, TappedEventArgs e)
{
await Navigation.PushAsync(new InfoChemicalStatistics());
}
private void HandleUITrigger()

3
SunlightAggregationTerminal.csproj

@ -102,6 +102,9 @@
</ItemGroup>
<ItemGroup>
<MauiXaml Update="InfoChemicalStatistics.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>
<MauiXaml Update="InfoDetail.xaml">
<Generator>MSBuild:Compile</Generator>
</MauiXaml>

Loading…
Cancel
Save