using Admin.NET.Plugin.AiDOP.MaterialWarehouse.InventoryPosting.Entity; namespace Admin.NET.Plugin.AiDOP.MaterialWarehouse.InventoryPosting.Idempotency; /// IQC 入库过账幂等认领结果分类。 public enum IqcPostingClaimOutcome { /// 首次处理:本调用成功占用(DB UNIQUE 插入成功),可继续过账。 FirstProcess = 1, /// 已处理完成:既有记录 POSTED,返回既有结果,不得重复过账。 AlreadyProcessed = 2, /// 处理中/冲突:既有记录 PROCESSING 或 PENDING,另一路正在处理,当前不得并发过账。 Processing = 3, /// 可重试失败:既有记录 FAILED,允许后续重试过账。 FailedRetryable = 4, } /// 幂等认领结果。 public sealed class IqcPostingClaimResult { public IqcPostingClaimOutcome Outcome { get; set; } /// 当前生效的过账头(FirstProcess=本次新建;其余=既有)。 public AdoIqcInventoryPosting Posting { get; set; } /// 是否本调用新建(true 仅当 FirstProcess)。 public bool IsNew { get; set; } } /// store 层插入结果(依赖 DB UNIQUE 判定,而非先查后插)。 public sealed class PostingInsertResult { /// 是否本调用成功插入(UNIQUE 未冲突)。 public bool Inserted { get; set; } /// 冲突时的既有记录(Inserted=false 时可能已带出)。 public AdoIqcInventoryPosting Existing { get; set; } }