新增MES库区管理功能,包含免密接口、数据处理逻辑及相关控制器、服务和实体的实现。支持库区的增删改查操作,优化用户体验并增强系统的实时数据同步能力。

This commit is contained in:
geht
2026-05-12 14:06:07 +08:00
parent cffe32d896
commit b737dddb2a
74 changed files with 4937 additions and 174 deletions

View File

@@ -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}");
}
}
}