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; }
}