using System.Collections.ObjectModel; using Seyounth.Hyosung.Data.Models; using Seyounth.Hyosung.Data.Services; using Seyounth.Hyosung.Runtime; using Wpf.Ui; using Wpf.Ui.Controls; namespace Seyounth.Hyosung.UI.ViewModels.Pages { public partial class DashboardViewModel : ObservableObject, INavigationAware { [ObservableProperty] private ObservableCollection _varieties; [ObservableProperty] private Variety _selectedVariety; [ObservableProperty] private List _yarnCarTypes; [ObservableProperty] private List _yarnCarSideType; [ObservableProperty] private int _selectedYarnCarTypeIndex; [ObservableProperty] private int _selectedYarnCarSideTypeIndex; private readonly IVarietyService _varietyService; private readonly IPalletService _palletService; private readonly ISnackbarService _snackbarService; private readonly IHyosungRuntime _runtime; public DashboardViewModel(IVarietyService varietyService, ISnackbarService snackbarService, IHyosungRuntime runtime) { _runtime = runtime; SelectedYarnCarTypeIndex = 0; SelectedYarnCarSideTypeIndex = 0; _varietyService = varietyService; _snackbarService = snackbarService; Varieties = new ObservableCollection(varietyService.GetAll()); YarnCarTypes = [ "A", "B", "C", "D" ]; YarnCarSideType = [ "正面", "反面" ]; } public void OnNavigatedTo() { Varieties = new ObservableCollection(_varietyService.GetAll()); } public void OnNavigatedFrom() { } [RelayCommand] private void OnChangeVariety() { try { SelectedVariety.YarnCarType = SelectedYarnCarTypeIndex + 1; SelectedVariety.YarnCarSide = SelectedYarnCarSideTypeIndex + 1; _runtime.SendVarietyToPlcAsync(SelectedVariety); _snackbarService.Show("切换成功", $"当前产品为: {SelectedVariety.Name}", ControlAppearance.Success, new SymbolIcon(SymbolRegular.ArrowCircleUp24), TimeSpan.FromSeconds(5)); } catch (Exception e) { _snackbarService.Show("切换异常", e.Message, ControlAppearance.Danger, new SymbolIcon(SymbolRegular.ArrowCircleUp24), TimeSpan.FromSeconds(5)); } } [RelayCommand] private void OnChangeVarietyLastNo() { if (SelectedVariety.LastNo != null) { _varietyService.SetLastNo(SelectedVariety.Id, SelectedVariety.LastNo.Value); _snackbarService.Show("保存成功", "当前控制号保存成功", ControlAppearance.Success, new SymbolIcon(SymbolRegular.Save24), TimeSpan.FromSeconds(5)); } else { _snackbarService.Show("保存失败", "当前控制号为空", ControlAppearance.Danger, new SymbolIcon(SymbolRegular.Save24), TimeSpan.FromSeconds(5)); } } } }