NumberRuleServiceBusinessNumberProvider.cs 1.4 KB

12345678910111213141516171819202122232425
  1. using Admin.NET.Plugin.AiDOP.Supply;
  2. namespace Admin.NET.Plugin.AiDOP.MaterialWarehouse.InventoryPosting.Numbering;
  3. /// <summary>
  4. /// 生产取号 provider:复用既有 <see cref="NumberRuleService"/>(NbrControl 规则行 FOR UPDATE + NbrDayInfo 计数器读改写,
  5. /// 生产已用于 M8/PR 取号;规避 PurOrdNumberGenerator 的首单 gap 重号缺陷)。委托其「在既有事务内」取号方法,
  6. /// 以便与 Phase 5 库存过账写库同事务。
  7. ///
  8. /// ⚠️ Phase 4B(未在本轮实库验证):使用前需先在 aidopdev 播种对应 NbrControl 规则行(NbrType=ruleCode)。
  9. /// 目标库口径已确认 = aidopdev(ConfigId 1300000000001)。**不得声称跨实例实证通过**,待 Phase 4B 补真实并发验证。
  10. /// </summary>
  11. public sealed class NumberRuleServiceBusinessNumberProvider : IBusinessNumberProvider, ITransient
  12. {
  13. private readonly NumberRuleService _numberRuleService;
  14. public NumberRuleServiceBusinessNumberProvider(NumberRuleService numberRuleService)
  15. {
  16. _numberRuleService = numberRuleService;
  17. }
  18. /// <summary>在调用方既有事务内取号(与库存过账写库同事务,异常整体回滚)。</summary>
  19. public Task<IReadOnlyList<string>> NextBatchAsync(string ruleCode, string domain, int count, string operatorNo)
  20. => _numberRuleService.NextBatchInCurrentTransactionAsync(ruleCode, domain, count, operatorNo);
  21. }