移除历史状态归一化及相关遗留逻辑
- 移除 LegacyStatusNormalizationMigrator,仅保留 AreaLayoutModeDefaultMigrator - 删除 WmsDispatchStatus 枚举、常量和全局 using - 统一所有 DbContext 注入为 MiGuDbContext,移除 PlatformDbContext - 服务实体操作统一用 IEditableRepository<T>,移除本地实现 - 移除 WmsService 的 MigrateLegacyAsync 方法 - 精简接口模型,移除部分字段和请求体 - 前端保存容器时 status 字段取自已有数据,移除写死默认值 - 更新文档,去除旧说明,统一数据库初始化流程
This commit is contained in:
@@ -29,35 +29,16 @@ public sealed class SimpleFieldsCarTypeBackfillMigrator : IDataMigrator
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 把库内旧状态字符串刷成规范枚举名(Available/Idle→Empty,Occupied→FullContainer)。
|
||||
/// 仅 Sqlite 表名/列名;绕过枚举 HasConversion(ExecuteUpdate + 字符串比较会 InvalidCast)。
|
||||
/// </summary>
|
||||
public sealed class LegacyStatusNormalizationMigrator : IDataMigrator
|
||||
/// <summary>库区 LayoutMode 空值补 Flat(raw UPDATE,避开枚举 converter)。</summary>
|
||||
public sealed class AreaLayoutModeDefaultMigrator : IDataMigrator
|
||||
{
|
||||
public int Order => 15;
|
||||
public string Name => "Wms.LegacyStatusNormalization";
|
||||
public string Name => "Wms.AreaLayoutModeDefault";
|
||||
|
||||
public async Task MigrateAsync(DbContext db, CancellationToken ct = default)
|
||||
{
|
||||
if (db is not MiGuDbContext) return;
|
||||
|
||||
await db.Database.ExecuteSqlRawAsync(
|
||||
"""
|
||||
UPDATE wms_storages
|
||||
SET Status = 'Empty'
|
||||
WHERE Status IN ('Available', 'Idle')
|
||||
""",
|
||||
ct);
|
||||
|
||||
await db.Database.ExecuteSqlRawAsync(
|
||||
"""
|
||||
UPDATE wms_storages
|
||||
SET Status = 'FullContainer'
|
||||
WHERE Status = 'Occupied'
|
||||
""",
|
||||
ct);
|
||||
|
||||
await db.Database.ExecuteSqlRawAsync(
|
||||
"""
|
||||
UPDATE wms_areas
|
||||
@@ -98,7 +79,7 @@ public static class DataMigratorRegistration
|
||||
public static IServiceCollection AddMiGuDataMigrators(this IServiceCollection services)
|
||||
{
|
||||
services.AddSingleton<IDataMigrator, SimpleFieldsCarTypeBackfillMigrator>();
|
||||
services.AddSingleton<IDataMigrator, LegacyStatusNormalizationMigrator>();
|
||||
services.AddSingleton<IDataMigrator, AreaLayoutModeDefaultMigrator>();
|
||||
services.AddSingleton<IDataMigrator, ContainerLocationStorageIdBackfillMigrator>();
|
||||
return services;
|
||||
}
|
||||
|
||||
@@ -96,9 +96,3 @@ public static class WmsReservationStatuses
|
||||
public const WmsReservationStatus Released = WmsReservationStatus.Released;
|
||||
public const WmsReservationStatus Expired = WmsReservationStatus.Expired;
|
||||
}
|
||||
|
||||
public static class WmsDispatchStatuses
|
||||
{
|
||||
public const WmsDispatchStatus Dispatched = WmsDispatchStatus.Dispatched;
|
||||
public const WmsDispatchStatus Failed = WmsDispatchStatus.Failed;
|
||||
}
|
||||
|
||||
@@ -27,9 +27,3 @@ public enum WmsReservationStatus
|
||||
Released,
|
||||
Expired
|
||||
}
|
||||
|
||||
public enum WmsDispatchStatus
|
||||
{
|
||||
Dispatched,
|
||||
Failed
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ namespace MiGu.DB.Domains.Wms;
|
||||
|
||||
/// <summary>
|
||||
/// WMS 状态/类型枚举。列以字符串存储(见约定 HasConversion<string>),成员名即库内合法值。
|
||||
/// 旧别名(Available/Idle/Occupied 等)不进入枚举,由 LegacyStatusNormalizationMigrator 刷库。
|
||||
/// </summary>
|
||||
public enum AreaLayoutMode
|
||||
{
|
||||
|
||||
@@ -33,17 +33,8 @@ public static class StorageStatuses
|
||||
public static readonly HashSet<StorageStatus> All = new()
|
||||
{ Empty, EmptyContainer, FullContainer, Disabled };
|
||||
|
||||
/// <summary>
|
||||
/// 写路径归一:兼容历史字符串 Available/Idle/Occupied。
|
||||
/// 库内残留旧值须靠 DataMigrator 刷掉,不能依赖 converter 读侧归一(WHERE 会漏行)。
|
||||
/// </summary>
|
||||
public static StorageStatus Normalize(string? status) => status switch
|
||||
{
|
||||
"Available" or "Idle" => Empty,
|
||||
"Occupied" => FullContainer,
|
||||
_ when Enum.TryParse<StorageStatus>(status, true, out var e) && All.Contains(e) => e,
|
||||
_ => Empty
|
||||
};
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user