新增MES库区管理功能,包含免密接口、数据处理逻辑及相关控制器、服务和实体的实现。支持库区的增删改查操作,优化用户体验并增强系统的实时数据同步能力。
This commit is contained in:
@@ -0,0 +1,113 @@
|
||||
using HandyControl.Controls;
|
||||
using HandyControl.Tools.Extension;
|
||||
using YY.Admin.Core;
|
||||
using YY.Admin.Core.Entity;
|
||||
using YY.Admin.Core.Services;
|
||||
|
||||
namespace YY.Admin.ViewModels.WarehouseArea;
|
||||
|
||||
public class WarehouseAreaEditDialogViewModel : BaseViewModel, IDialogResultable<bool>
|
||||
{
|
||||
private readonly IWarehouseAreaService _warehouseAreaService;
|
||||
|
||||
private MesXslWarehouseArea? _area;
|
||||
public MesXslWarehouseArea? Area
|
||||
{
|
||||
get => _area;
|
||||
set => SetProperty(ref _area, value);
|
||||
}
|
||||
|
||||
public bool IsAddMode => string.IsNullOrWhiteSpace(Area?.Id);
|
||||
public string DialogTitle => IsAddMode ? "新增库区" : "编辑库区";
|
||||
|
||||
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 WarehouseAreaEditDialogViewModel(
|
||||
IWarehouseAreaService warehouseAreaService,
|
||||
IContainerExtension container,
|
||||
IRegionManager regionManager) : base(container, regionManager)
|
||||
{
|
||||
_warehouseAreaService = warehouseAreaService;
|
||||
SaveCommand = new DelegateCommand(async () => await SaveAsync());
|
||||
CancelCommand = new DelegateCommand(() => CloseAction?.Invoke());
|
||||
}
|
||||
|
||||
public void InitializeForAdd()
|
||||
{
|
||||
Area = new MesXslWarehouseArea { Status = "0" };
|
||||
RaisePropertyChanged(nameof(IsAddMode));
|
||||
RaisePropertyChanged(nameof(DialogTitle));
|
||||
}
|
||||
|
||||
public void InitializeForEdit(MesXslWarehouseArea area)
|
||||
{
|
||||
Area = new MesXslWarehouseArea
|
||||
{
|
||||
Id = area.Id,
|
||||
AreaCode = area.AreaCode,
|
||||
AreaName = area.AreaName,
|
||||
WarehouseId = area.WarehouseId,
|
||||
WarehouseName = area.WarehouseName,
|
||||
WarehouseCategory = area.WarehouseCategory,
|
||||
WarehouseCategoryName = area.WarehouseCategoryName,
|
||||
MaxCapacity = area.MaxCapacity,
|
||||
ActualCapacity = area.ActualCapacity,
|
||||
Remark = area.Remark,
|
||||
Status = area.Status,
|
||||
TenantId = area.TenantId,
|
||||
};
|
||||
RaisePropertyChanged(nameof(IsAddMode));
|
||||
RaisePropertyChanged(nameof(DialogTitle));
|
||||
}
|
||||
|
||||
private async Task SaveAsync()
|
||||
{
|
||||
if (Area == null) return;
|
||||
|
||||
if (string.IsNullOrWhiteSpace(Area.AreaCode))
|
||||
{
|
||||
MessageBox.Warning("库区编码不能为空!");
|
||||
return;
|
||||
}
|
||||
|
||||
var codeAvailable = await _warehouseAreaService.CheckAreaCodeAsync(Area.AreaCode.Trim(), Area.Id);
|
||||
if (!codeAvailable)
|
||||
{
|
||||
MessageBox.Warning("该库区编码已存在,请更换!");
|
||||
return;
|
||||
}
|
||||
|
||||
Area.AreaCode = Area.AreaCode.Trim();
|
||||
if (string.IsNullOrWhiteSpace(Area.AreaName))
|
||||
Area.AreaName = Area.AreaCode;
|
||||
|
||||
try
|
||||
{
|
||||
bool ok;
|
||||
if (IsAddMode)
|
||||
{
|
||||
ok = await _warehouseAreaService.AddAsync(Area);
|
||||
if (ok) Growl.Success("新增库区成功!");
|
||||
else { Growl.Error("新增失败,请重试!"); return; }
|
||||
}
|
||||
else
|
||||
{
|
||||
ok = await _warehouseAreaService.EditAsync(Area);
|
||||
if (ok) Growl.Success("编辑库区成功!");
|
||||
else { Growl.Error("编辑失败,请重试!"); return; }
|
||||
}
|
||||
|
||||
Result = true;
|
||||
CloseAction?.Invoke();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Growl.Error($"保存失败:{ex.Message}");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user