161 lines
5.8 KiB
C#
161 lines
5.8 KiB
C#
|
|
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,
|
||
|
|
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}");
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|