Files
Migu2.0/MiGu.DB/Domains/Wms/WmsStatusHelpers.cs
T
wei.wu 125372b157 移除历史状态归一化及相关遗留逻辑
- 移除 LegacyStatusNormalizationMigrator,仅保留 AreaLayoutModeDefaultMigrator
- 删除 WmsDispatchStatus 枚举、常量和全局 using
- 统一所有 DbContext 注入为 MiGuDbContext,移除 PlatformDbContext
- 服务实体操作统一用 IEditableRepository<T>,移除本地实现
- 移除 WmsService 的 MigrateLegacyAsync 方法
- 精简接口模型,移除部分字段和请求体
- 前端保存容器时 status 字段取自已有数据,移除写死默认值
- 更新文档,去除旧说明,统一数据库初始化流程
2026-08-03 09:41:03 +08:00

108 lines
5.1 KiB
C#

namespace MiGu.DB.Domains.Wms;
/// <summary>
/// 枚举辅助类(复数命名):承接 API/DTO 的字符串入参,解析为实体上的枚举。
/// 与同名枚举分离,避免「属性 LocationKind 初始值引用实例属性」一类编译冲突。
/// Server 侧通过 global using 别名(如 StorageStatuses)引用本文件类型。
/// </summary>
public static class AreaLayoutModes
{
public static readonly HashSet<AreaLayoutMode> All = new() { AreaLayoutMode.Flat, AreaLayoutMode.Grid };
public static AreaLayoutMode ParseOr(string? value, AreaLayoutMode fallback = AreaLayoutMode.Flat) =>
Enum.TryParse<AreaLayoutMode>(value, true, out var e) && All.Contains(e) ? e : fallback;
}
public static class LocationKinds
{
public const LocationKind Grid = LocationKind.Grid;
public const LocationKind Station = LocationKind.Station;
public static readonly HashSet<LocationKind> All = new() { Grid, Station };
public static LocationKind ParseOr(string? value, LocationKind fallback = LocationKind.Station) =>
Enum.TryParse<LocationKind>(value, true, out var e) && All.Contains(e) ? e : fallback;
}
public static class StorageStatuses
{
public const StorageStatus Empty = StorageStatus.Empty;
public const StorageStatus EmptyContainer = StorageStatus.EmptyContainer;
public const StorageStatus FullContainer = StorageStatus.FullContainer;
public const StorageStatus Disabled = StorageStatus.Disabled;
public static readonly HashSet<StorageStatus> All = new()
{ Empty, EmptyContainer, FullContainer, Disabled };
public static StorageStatus ParseOr(string? value, StorageStatus fallback = StorageStatus.Empty) =>
Enum.TryParse<StorageStatus>(value, true, out var e) && All.Contains(e) ? e : fallback;
}
public static class ContainerStatuses
{
public const ContainerStatus EmptyMaterial = ContainerStatus.EmptyMaterial;
public const ContainerStatus FullMaterial = ContainerStatus.FullMaterial;
public static readonly HashSet<ContainerStatus> All = new() { EmptyMaterial, FullMaterial };
public static ContainerStatus ParseOr(string? value, ContainerStatus fallback = ContainerStatus.EmptyMaterial) =>
Enum.TryParse<ContainerStatus>(value, true, out var e) && All.Contains(e) ? e : fallback;
}
public static class ContainerLocationTypes
{
public const ContainerLocationType Storage = ContainerLocationType.Storage;
public const ContainerLocationType Car = ContainerLocationType.Car;
public static readonly HashSet<ContainerLocationType> All = new() { Storage, Car };
public static bool IsDefined(string? value) =>
Enum.TryParse<ContainerLocationType>(value, true, out var e) && All.Contains(e);
public static ContainerLocationType ParseOr(string? value, ContainerLocationType fallback = ContainerLocationType.Storage) =>
Enum.TryParse<ContainerLocationType>(value, true, out var e) && All.Contains(e) ? e : fallback;
public static bool EqualsString(ContainerLocationType value, string? other) =>
Enum.TryParse<ContainerLocationType>(other, true, out var e) && e == value;
}
public static class ContainerLocationStatuses
{
public const ContainerLocationStatus Active = ContainerLocationStatus.Active;
public const ContainerLocationStatus Locked = ContainerLocationStatus.Locked;
public const ContainerLocationStatus Exception = ContainerLocationStatus.Exception;
public static readonly HashSet<ContainerLocationStatus> All = new() { Active, Locked, Exception };
public static bool IsDefined(string? value) =>
Enum.TryParse<ContainerLocationStatus>(value, true, out var e) && All.Contains(e);
public static ContainerLocationStatus ParseOr(string? value, ContainerLocationStatus fallback = ContainerLocationStatus.Active) =>
Enum.TryParse<ContainerLocationStatus>(value, true, out var e) && All.Contains(e) ? e : fallback;
}
public static class ContainerMaterialStatuses
{
public const ContainerMaterialStatus Bound = ContainerMaterialStatus.Bound;
public const ContainerMaterialStatus Loaded = ContainerMaterialStatus.Loaded;
public const ContainerMaterialStatus Unloaded = ContainerMaterialStatus.Unloaded;
public const ContainerMaterialStatus Adjusted = ContainerMaterialStatus.Adjusted;
public const ContainerMaterialStatus Frozen = ContainerMaterialStatus.Frozen;
public static readonly HashSet<ContainerMaterialStatus> ActiveBind = new()
{ Bound, Loaded, Adjusted, Frozen };
}
public static class MaterialLifecycles
{
public const MaterialLifecycle Active = MaterialLifecycle.Active;
public const MaterialLifecycle Archived = MaterialLifecycle.Archived;
public static readonly HashSet<MaterialLifecycle> All = new() { Active, Archived };
public static MaterialLifecycle ParseOr(string? value, MaterialLifecycle fallback = MaterialLifecycle.Active) =>
Enum.TryParse<MaterialLifecycle>(value, true, out var e) && All.Contains(e) ? e : fallback;
}
public static class StockEventTypes
{
public const StockEventType Bind = StockEventType.Bind;
public const StockEventType Unbind = StockEventType.Unbind;
public const StockEventType ContainerMove = StockEventType.ContainerMove;
}