AdoS8OrderFlowController.cs 4.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. using Admin.NET.Plugin.AiDOP.Infrastructure.S8;
  2. using Admin.NET.Plugin.AiDOP.Const.S8;
  3. using Admin.NET.Plugin.AiDOP.Dto.S8.OrderFlow;
  4. using Admin.NET.Plugin.AiDOP.Service.S8.OrderFlow;
  5. namespace Admin.NET.Plugin.AiDOP.Controllers.S8;
  6. /// <summary>
  7. /// ORDER-FLOW-S8-INTEGRATED-DOMAIN-RESET-1 t3d:S8 订单执行链路只读 API。
  8. /// 仅 GET endpoint;调用 S8OrderFlowService 5 个方法暴露。
  9. /// 路由:api/aidop/s8/order-flow/*。
  10. /// </summary>
  11. [ApiController]
  12. [Route("api/aidop/s8/order-flow")]
  13. [NonUnify]
  14. public class AdoS8OrderFlowController : ControllerBase
  15. {
  16. private readonly S8OrderFlowService _svc;
  17. public AdoS8OrderFlowController(S8OrderFlowService svc)
  18. {
  19. _svc = svc;
  20. }
  21. /// <summary>订单档案列表(不分页,当前 baseline 20 单)。</summary>
  22. [HttpGet("orders")]
  23. [S8Permission(S8PermissionCatalog.DashboardRead)]
  24. public async Task<IActionResult> OrdersAsync([FromQuery] AdoS8OrderFlowOrderQueryDto query)
  25. => Ok(await _svc.GetOrdersAsync(query));
  26. /// <summary>单订单详情(含 lifecycle 5 阶段,不含 substep/unit)。</summary>
  27. [HttpGet("orders/{orderCode}")]
  28. [S8Permission(S8PermissionCatalog.DashboardRead)]
  29. public async Task<IActionResult> OrderDetailAsync(string orderCode)
  30. => Ok(await _svc.GetOrderAsync(orderCode));
  31. /// <summary>订单链路(含 lifecycle + L2 substeps + L3 units;ProcurementPivot 留待后续切片注入)。</summary>
  32. [HttpGet("orders/{orderCode}/chain")]
  33. [S8Permission(S8PermissionCatalog.DashboardRead)]
  34. public async Task<IActionResult> ChainAsync(string orderCode)
  35. => Ok(await _svc.GetChainAsync(orderCode));
  36. /// <summary>链路聚合视图:BASELINE_PPT 走 snapshot;CURRENT_FILTERED 走实时聚合。</summary>
  37. [HttpGet("aggregate")]
  38. [S8Permission(S8PermissionCatalog.DashboardRead)]
  39. public async Task<IActionResult> AggregateAsync([FromQuery] AdoS8OrderFlowAggregateQueryDto query)
  40. => Ok(await _svc.GetAggregateAsync(query));
  41. /// <summary>采购透视:BASELINE_PPT 读 procurement_pivot 表 baseline 行。</summary>
  42. [HttpGet("procurement-pivot")]
  43. [S8Permission(S8PermissionCatalog.DashboardRead)]
  44. public async Task<IActionResult> ProcurementPivotAsync([FromQuery] AdoS8OrderFlowProcurementPivotQueryDto query)
  45. => Ok(await _svc.GetProcurementPivotAsync(query));
  46. /// <summary>
  47. /// S8-ORDER-CHAIN-PRODUCT-DESIGN-DRAWING-PERSIST-1:产品设计图号粒度聚合。
  48. /// orderCodes 为空时默认聚合全 20 单(scope=BASELINE_PPT);非空时按订单子集聚合(scope=CURRENT_FILTERED)。
  49. /// productType 仅过滤 drawings 明细列表,summary.categories 始终返回常规/非标/合计三档。
  50. /// </summary>
  51. [HttpGet("product-design/drawings")]
  52. [S8Permission(S8PermissionCatalog.DashboardRead)]
  53. public async Task<IActionResult> ProductDesignDrawingsAsync(
  54. [FromQuery] AdoS8OrderFlowProductDesignDrawingsQueryDto query)
  55. => Ok(await _svc.GetProductDesignDrawingsAsync(query));
  56. /// <summary>
  57. /// S8-ORDER-CHAIN-BODY-PRODUCTION-ORDER-LEVEL-SEED-FIX-1:本体生产透视。
  58. /// scope=BASELINE_PPT 读三表 baseline 行;scope=CURRENT_FILTERED 按 orderCodes CSV 取订单级行并聚合。
  59. /// orderCodes 为空(CURRENT_FILTERED)时返回空骨架,不静默 fallback baseline。
  60. /// </summary>
  61. [HttpGet("manufacturing-pivot")]
  62. [S8Permission(S8PermissionCatalog.DashboardRead)]
  63. public async Task<IActionResult> ManufacturingPivotAsync(
  64. [FromQuery] AdoS8OrderFlowManufacturingPivotQueryDto query)
  65. => Ok(await _svc.GetManufacturingPivotAsync(query));
  66. /// <summary>
  67. /// S8-ORDER-CHAIN-ASSEMBLY-DELIVERY-DATA-LINEAGE-AUDIT-1:总装发货透视。
  68. /// scope=BASELINE_PPT 读两表 baseline 行(5 门禁 + 4 并行准备);
  69. /// scope=CURRENT_FILTERED 按 orderCodes CSV 取订单级行并聚合,
  70. /// 末位门禁 SHIPMENT_CONFIRMATION 守恒为 stage.actual_days;
  71. /// pending 单不参与聚合;orderCodes 为空时返回空骨架,不 fallback baseline。
  72. /// 与 aggregate.finalAssemblyCollabSummary 通道并存:本 API 给门禁 KPI / 实际 / 偏差 / 齐套率,
  73. /// collabSummary 留作 exception 派生补充。
  74. /// </summary>
  75. [HttpGet("final-assembly-pivot")]
  76. [S8Permission(S8PermissionCatalog.DashboardRead)]
  77. public async Task<IActionResult> FinalAssemblyPivotAsync(
  78. [FromQuery] AdoS8FinalAssemblyPivotQueryDto query)
  79. => Ok(await _svc.GetFinalAssemblyPivotAsync(query));
  80. }