using Prism.Commands; using Prism.Ioc; using Prism.Mvvm; using Prism.Services.Dialogs; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Windows; using TeamAAS_VP.Core; using TeamAAS_VP.Interfaces; using TeamAAS_VP.Models; namespace TeamAAS_VP.ViewModels.Home { public class ChangeHeaderViewModel : BindableBase, IDialogAware { ISystemDatabaseService _systemDatabaseService; IContainerProvider _container; private string _currentHeadBatchNumber; private int _currentLockCount; private string _lastChangeTime; private string _newHeadBatchNumber; public ChangeHeaderViewModel(ISystemDatabaseService systemDatabaseService, IContainerProvider containerProvider) { _systemDatabaseService = systemDatabaseService; _container = containerProvider; ReplaceCommand = new DelegateCommand(ExecuteReplaceCommand, ()=>string.IsNullOrEmpty(NewHeadBatchNumber)).ObservesProperty(() => NewHeadBatchNumber); CloseCommand = new DelegateCommand(ExecuteCloseCommand); } public DelegateCommand ReplaceCommand { get; } public DelegateCommand CloseCommand { get; } public string CurrentHeadBatchNumber { get => _currentHeadBatchNumber; set => SetProperty(ref _currentHeadBatchNumber, value); } public int CurrentLockCount { get => _currentLockCount; set => SetProperty(ref _currentLockCount, value); } public string LastChangeTime { get => _lastChangeTime; set => SetProperty(ref _lastChangeTime, value); } public string NewHeadBatchNumber { get => _newHeadBatchNumber; set => SetProperty(ref _newHeadBatchNumber, value); } public string Title => "更换披头"; public event Action RequestClose; public bool CanCloseDialog() { return true; } public void OnDialogClosed() { } public async void OnDialogOpened(IDialogParameters parameters) { var latestRecord = await _systemDatabaseService.GetLatestHeadChangeRecordAsync(); if (latestRecord != null) { CurrentHeadBatchNumber = latestRecord.HeadBatchNumber; CurrentLockCount = latestRecord.CurrentLockCount; LastChangeTime = latestRecord.ChangeTime.ToString("yyyy-MM-dd HH:mm:ss"); } } private void ExecuteCloseCommand() { RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel, null)); } private async void ExecuteReplaceCommand() { try { //当前用户 var currentUser = await _systemDatabaseService.GetCurrentUserAsync(); //当前用户名 string operatorName = currentUser != null ? currentUser.UserName : "未知用户"; await _systemDatabaseService.RecordHeadChangeAsync(new HeadChangeRecord() { HeadBatchNumber = NewHeadBatchNumber, ChangeTime = DateTime.Now, CurrentLockCount = 0, OperatorName = operatorName }); Management management= _container.Resolve(); management.NumStatistics.HeaderNum = 0; RequestClose?.Invoke(new DialogResult(ButtonResult.OK, null)); } catch (Exception ex) { LogHelper.WriteLogError("更换披头时出错!", ex); MessageBox.Show("更换披头时出错!"+ex.Message, "AAS", MessageBoxButton.OK, MessageBoxImage.Error); } } } }