AidopPoCompletionOptions.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using Furion.ConfigurableOptions;
  2. namespace Admin.NET.Plugin.AiDOP;
  3. /// <summary>
  4. /// S8 Stage-3 采购完成态数据源绑定。配置节 <c>AiDOP:PoCompletion</c>。
  5. ///
  6. /// <para>承担的角色是 <b>S8_PO_COMPLETION_SOURCE</b>:接收 Ai-DOP 推送的采购单、执行收货、
  7. /// 并维护 <c>PurOrdDetail.Status</c>(<c>'C'</c>=收完关闭)。该角色由 WMS/MES 承担,
  8. /// 与建单方(本库)是两个系统。</para>
  9. ///
  10. /// <para><b>为什么源编码必须留在配置里</b>:仓库现有代码把 <c>DOPDEMORQ_SQLSERVER</c>
  11. /// 硬编码进了 9+ 处业务服务,导致换环境必须改代码。本选项沿用
  12. /// <see cref="AidopInventoryOptions"/> 已在生产使用的配置驱动绑定模式,
  13. /// 业务 Service 内不出现任何具体源编码字面量。</para>
  14. ///
  15. /// <para><b>非开发环境必须显式绑定真实 WMS 源</b>:默认值指向开发/UAT 实例,
  16. /// <see cref="DevOnlySourceCodes"/> 中的编码在非开发环境会被 fail-closed 拒绝,
  17. /// 绝不静默使用。</para>
  18. /// </summary>
  19. [OptionsSettings("AiDOP:PoCompletion")]
  20. public sealed class AidopPoCompletionOptions : IConfigurableOptions
  21. {
  22. /// <summary>承担 S8_PO_COMPLETION_SOURCE 角色的 <c>mdp_source.source_code</c>。</summary>
  23. public string SourceCode { get; set; } = "DOPDEMORQ_SQLSERVER";
  24. /// <summary>
  25. /// 仅限开发/UAT 使用的源编码。非开发环境命中其中任意一个即拒绝运行(fail-closed),
  26. /// 防止把测试库的执行态当成生产采购完成事实。
  27. /// </summary>
  28. public string[] DevOnlySourceCodes { get; set; } = new[] { "DOPDEMORQ_SQLSERVER" };
  29. /// <summary>
  30. /// 入账范围:只消费该 Potype 的采购行。与 <c>PurOrdWmsPushService</c> 的自建单推送口径
  31. /// (<c>Potype='po'</c>)对齐 —— 没被推过去的单据,WMS 侧的状态不属于本角色。
  32. /// </summary>
  33. public string SourcePotype { get; set; } = "po";
  34. /// <summary>单轮从源侧读取的行数上限,防止异常配置下拉爆内存。</summary>
  35. public int MaxSourceRows { get; set; } = 50000;
  36. /// <summary>UPSERT 分片大小。</summary>
  37. public int UpsertBatchSize { get; set; } = 200;
  38. }