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