Files
qhmes/yy-admin-master/YY.Admin/ViewModels/RawMaterialCard/RawMaterialCardEditDialogViewModel.cs

163 lines
5.9 KiB
C#
Raw Normal View History

using HandyControl.Controls;
using HandyControl.Tools.Extension;
using System.Collections.ObjectModel;
using YY.Admin.Core;
using YY.Admin.Core.Entity;
using YY.Admin.Core.Services;
using YY.Admin.Services.Service;
namespace YY.Admin.ViewModels.RawMaterialCard;
public class RawMaterialCardEditDialogViewModel : BaseViewModel, IDialogResultable<bool>
{
private readonly IRawMaterialCardService _cardService;
private readonly IJeecgDictSyncService _dictSyncService;
private MesXslRawMaterialCard? _card;
public MesXslRawMaterialCard? Card
{
get => _card;
set => SetProperty(ref _card, value);
}
public bool IsAddMode => string.IsNullOrWhiteSpace(Card?.Id);
public string DialogTitle => IsAddMode ? "新增原材料卡片" : "编辑原材料卡片";
public ObservableCollection<KeyValuePair<string, string>> StatusOptions { get; } = new();
public ObservableCollection<KeyValuePair<string, string>> TestResultOptions { get; } = new();
private bool _result;
public bool Result { get => _result; set => SetProperty(ref _result, value); }
public Action? CloseAction { get; set; }
public DelegateCommand SaveCommand { get; }
public DelegateCommand CancelCommand { get; }
public RawMaterialCardEditDialogViewModel(
IRawMaterialCardService cardService,
IJeecgDictSyncService dictSyncService,
IContainerExtension container,
IRegionManager regionManager) : base(container, regionManager)
{
_cardService = cardService;
_dictSyncService = dictSyncService;
SaveCommand = new DelegateCommand(async () => await SaveAsync());
CancelCommand = new DelegateCommand(() => CloseAction?.Invoke());
_ = LoadDictOptionsAsync();
}
private async Task LoadDictOptionsAsync()
{
try
{
var statusOpts = await _dictSyncService.GetDictOptionsAsync("xslmes_card_status");
var testResultOpts = await _dictSyncService.GetDictOptionsAsync("xslmes_test_result");
StatusOptions.Clear();
foreach (var item in statusOpts) StatusOptions.Add(item);
if (StatusOptions.Count == 0)
{
StatusOptions.Add(new KeyValuePair<string, string>("正常", "1"));
StatusOptions.Add(new KeyValuePair<string, string>("异常", "0"));
}
TestResultOptions.Clear();
foreach (var item in testResultOpts) TestResultOptions.Add(item);
if (TestResultOptions.Count == 0)
{
TestResultOptions.Add(new KeyValuePair<string, string>("未检", "0"));
TestResultOptions.Add(new KeyValuePair<string, string>("合格", "1"));
TestResultOptions.Add(new KeyValuePair<string, string>("不合格", "2"));
}
}
catch
{
StatusOptions.Clear();
StatusOptions.Add(new KeyValuePair<string, string>("正常", "1"));
StatusOptions.Add(new KeyValuePair<string, string>("异常", "0"));
TestResultOptions.Clear();
TestResultOptions.Add(new KeyValuePair<string, string>("未检", "0"));
TestResultOptions.Add(new KeyValuePair<string, string>("合格", "1"));
TestResultOptions.Add(new KeyValuePair<string, string>("不合格", "2"));
}
}
public void InitializeForAdd()
{
Card = new MesXslRawMaterialCard
{
Status = "1",
TestResult = "0",
PriorityPickup = "0",
EntryDate = DateTime.Today
};
RaisePropertyChanged(nameof(IsAddMode));
RaisePropertyChanged(nameof(DialogTitle));
}
public void InitializeForEdit(MesXslRawMaterialCard card)
{
Card = new MesXslRawMaterialCard
{
Id = card.Id,
Barcode = card.Barcode,
BatchNo = card.BatchNo,
EntryDate = card.EntryDate,
MaterialId = card.MaterialId,
MaterialName = card.MaterialName,
MaterialDesc = card.MaterialDesc,
SupplierId = card.SupplierId,
SupplierName = card.SupplierName,
ManufacturerMaterialName = card.ManufacturerMaterialName,
ShelfLife = card.ShelfLife,
TotalWeight = card.TotalWeight,
PackagingTare = card.PackagingTare,
PalletWeight = card.PalletWeight,
RemainingWeight = card.RemainingWeight,
RemainingQuantity = card.RemainingQuantity,
Status = card.Status,
TestResult = card.TestResult,
WarehouseArea = card.WarehouseArea,
UnloadOperator = card.UnloadOperator,
PriorityPickup = card.PriorityPickup,
TenantId = card.TenantId,
UpdateTime = card.UpdateTime
};
RaisePropertyChanged(nameof(IsAddMode));
RaisePropertyChanged(nameof(DialogTitle));
}
private async Task SaveAsync()
{
if (Card == null) return;
if (string.IsNullOrWhiteSpace(Card.MaterialName))
{
HandyControl.Controls.MessageBox.Warning("物料名称不能为空!");
return;
}
try
{
bool ok;
if (IsAddMode)
{
ok = await _cardService.AddAsync(Card);
if (ok) HandyControl.Controls.MessageBox.Success("新增原材料卡片成功!");
else { HandyControl.Controls.MessageBox.Error("新增原材料卡片失败!"); return; }
}
else
{
ok = await _cardService.EditAsync(Card);
if (!ok) { HandyControl.Controls.MessageBox.Error("编辑原材料卡片失败!"); return; }
}
Result = ok;
CloseAction?.Invoke();
}
catch (Exception ex)
{
HandyControl.Controls.MessageBox.Error($"操作失败:{ex.Message}");
}
}
}