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