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

99 lines
4.6 KiB
C#

using System.ComponentModel.DataAnnotations;
using MiGu.DB.Kernel.Entities;
namespace MiGu.DB.Domains.Transport;
// 运输规则/任务/预占实体。状态字段为枚举;复数 *Statuses 辅助类供 Server 解析 DTO 字符串。
public sealed class WmsTransportRule : AggregateRoot
{
[MaxLength(64)] public string Code { get; set; } = "";
[MaxLength(128)] public string Name { get; set; } = "";
public WmsTransportTriggerType TriggerType { get; set; } = WmsTransportTriggerType.MaterialCall;
public bool Enabled { get; set; } = true;
public int Priority { get; set; }
public string SourceSelectorJson { get; set; } = "{}";
public string TargetSelectorJson { get; set; } = "{}";
public string TaskOptionsJson { get; set; } = "{}";
}
public sealed class WmsTransportTask : AggregateRoot
{
[MaxLength(64)] public string BusinessType { get; set; } = "";
public Guid? RuleId { get; set; }
public Guid SourceStorageId { get; set; }
public Guid TargetStorageId { get; set; }
public Guid ContainerId { get; set; }
public Guid? MaterialId { get; set; }
public decimal? Quantity { get; set; }
public WmsTransportTaskStatus Status { get; set; } = WmsTransportTaskStatus.Pending;
[MaxLength(64)] public string DispatchMissionId { get; set; } = "";
[MaxLength(64)] public string DeliveryId { get; set; } = "";
[MaxLength(32)] public string DispatchStatus { get; set; } = "";
[MaxLength(500)] public string Reason { get; set; } = "";
public string SnapshotJson { get; set; } = "{}";
[MaxLength(1000)] public string ErrorMessage { get; set; } = "";
public int TaskPriority { get; set; }
}
public sealed class WmsTransportReservation : AggregateRoot
{
public Guid TaskId { get; set; }
public Guid ContainerId { get; set; }
public Guid SourceStorageId { get; set; }
public Guid TargetStorageId { get; set; }
public WmsReservationStatus Status { get; set; } = WmsReservationStatus.Active;
public DateTimeOffset? ExpiresAt { get; set; }
}
public sealed class WmsTransportTaskHistory : Entity<Guid>
{
public Guid TaskId { get; set; }
[MaxLength(32)] public string FromStatus { get; set; } = "";
[MaxLength(32)] public string ToStatus { get; set; } = "";
[MaxLength(128)] public string Operator { get; set; } = "";
public DateTimeOffset OperatedAt { get; set; }
[MaxLength(500)] public string Reason { get; set; } = "";
[MaxLength(1000)] public string ErrorMessage { get; set; } = "";
public string SnapshotJson { get; set; } = "{}";
}
public static class WmsTransportTriggerTypes
{
// 复数辅助类:与枚举分离,避免与属性/类型同名冲突,并提供 ParseOr / All
public const WmsTransportTriggerType MaterialCall = WmsTransportTriggerType.MaterialCall;
public const WmsTransportTriggerType FinishedGoodsOffline = WmsTransportTriggerType.FinishedGoodsOffline;
public const WmsTransportTriggerType AutoTransfer = WmsTransportTriggerType.AutoTransfer;
public static readonly HashSet<WmsTransportTriggerType> All = new()
{ MaterialCall, FinishedGoodsOffline, AutoTransfer };
public static bool IsDefined(string? value) =>
Enum.TryParse<WmsTransportTriggerType>(value, true, out var e) && All.Contains(e);
public static WmsTransportTriggerType ParseOr(string? value, WmsTransportTriggerType fallback = WmsTransportTriggerType.MaterialCall) =>
Enum.TryParse<WmsTransportTriggerType>(value, true, out var e) && All.Contains(e) ? e : fallback;
}
public static class WmsTransportTaskStatuses
{
public const WmsTransportTaskStatus Pending = WmsTransportTaskStatus.Pending;
public const WmsTransportTaskStatus Reserved = WmsTransportTaskStatus.Reserved;
public const WmsTransportTaskStatus Dispatched = WmsTransportTaskStatus.Dispatched;
public const WmsTransportTaskStatus InTransit = WmsTransportTaskStatus.InTransit;
public const WmsTransportTaskStatus Completed = WmsTransportTaskStatus.Completed;
public const WmsTransportTaskStatus Failed = WmsTransportTaskStatus.Failed;
public const WmsTransportTaskStatus Cancelled = WmsTransportTaskStatus.Cancelled;
public static readonly HashSet<WmsTransportTaskStatus> Active = new()
{ Pending, Reserved, Dispatched, InTransit };
public static readonly HashSet<WmsTransportTaskStatus> All = new()
{ Pending, Reserved, Dispatched, InTransit, Completed, Failed, Cancelled };
}
public static class WmsReservationStatuses
{
public const WmsReservationStatus Active = WmsReservationStatus.Active;
public const WmsReservationStatus Released = WmsReservationStatus.Released;
public const WmsReservationStatus Expired = WmsReservationStatus.Expired;
}