AdoS8OrderReviewKpiDtos.cs 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. namespace Admin.NET.Plugin.AiDOP.Dto.S8.OrderFlow;
  2. /// <summary>S8 Stage-1「订单评审」耗时列表查询条件。注意:不含 tenantId —— 租户只从 JWT 解析。</summary>
  3. public class AdoS8OrderReviewKpiQueryDto
  4. {
  5. /// <summary>订单号模糊过滤。</summary>
  6. public string? OrderNo { get; set; }
  7. /// <summary>按计算状态过滤:OK / IN_PROGRESS / NO_START / INVALID / INVALID_TIME_SEQUENCE。</summary>
  8. public string? CalculationStatus { get; set; }
  9. public int Page { get; set; } = 1;
  10. public int PageSize { get; set; } = 20;
  11. }
  12. /// <summary>单张订单的 Stage-1 评审耗时事实(全部来自 dwd_order_review_kpi)。</summary>
  13. public class AdoS8OrderReviewKpiRowDto
  14. {
  15. /// <summary>销售订单头ID(crm_seorder.Id),归因权威。</summary>
  16. public long SalesOrderId { get; set; }
  17. /// <summary>销售订单号(展示用)。</summary>
  18. public string? SalesOrderNo { get; set; }
  19. /// <summary>评审开始时刻。</summary>
  20. public DateTime? ReviewStartTime { get; set; }
  21. /// <summary>评审结束时刻。</summary>
  22. public DateTime? ReviewEndTime { get; set; }
  23. /// <summary>实际耗时(自然 elapsed 小时,2 位小数)。未闭环时为 null —— 不伪造 0。</summary>
  24. public decimal? ActualHours { get; set; }
  25. /// <summary>OK / IN_PROGRESS / NO_START / INVALID / INVALID_TIME_SEQUENCE。</summary>
  26. public string CalculationStatus { get; set; } = "";
  27. public int ReviewSuccessCount { get; set; }
  28. public int ConfirmSuccessCount { get; set; }
  29. public int ReviewFailedCount { get; set; }
  30. public int ConfirmFailedCount { get; set; }
  31. /// <summary>被采纳的评审事件ID(可追溯到 mdp_std_action_event)。</summary>
  32. public long? ReviewActionRunId { get; set; }
  33. /// <summary>被采纳的交期确认事件ID。</summary>
  34. public long? ConfirmActionRunId { get; set; }
  35. /// <summary>最近一次重算时刻。</summary>
  36. public DateTime? CalcTime { get; set; }
  37. }
  38. /// <summary>分页结果。</summary>
  39. public class AdoS8OrderReviewKpiListDto
  40. {
  41. public List<AdoS8OrderReviewKpiRowDto> List { get; set; } = [];
  42. public int Total { get; set; }
  43. public int Page { get; set; }
  44. public int PageSize { get; set; }
  45. }
  46. /// <summary>Stage-1 评审耗时汇总。本批不含 TargetHours / 达成率 / 红黄绿。</summary>
  47. public class AdoS8OrderReviewKpiSummaryDto
  48. {
  49. /// <summary>有评审动作记录的订单总数。</summary>
  50. public int TotalOrders { get; set; }
  51. /// <summary>已闭环(OK)订单数 —— 只有这些有 ActualHours。</summary>
  52. public int OkCount { get; set; }
  53. public int InProgressCount { get; set; }
  54. public int NoStartCount { get; set; }
  55. public int InvalidCount { get; set; }
  56. public int InvalidTimeSequenceCount { get; set; }
  57. /// <summary>OK 订单的平均实际耗时(小时)。OkCount=0 时为 null,不返回 0。</summary>
  58. public decimal? AvgActualHours { get; set; }
  59. /// <summary>OK 订单的最短 / 最长实际耗时(小时)。</summary>
  60. public decimal? MinActualHours { get; set; }
  61. public decimal? MaxActualHours { get; set; }
  62. /// <summary>KPI 表最近一次重算时刻。null 表示该租户从未跑过链路。</summary>
  63. public DateTime? LastCalcTime { get; set; }
  64. }
  65. /// <summary>手动刷新链路的返回。</summary>
  66. public class AdoS8OrderReviewKpiRefreshResultDto
  67. {
  68. public string BatchId { get; set; } = "";
  69. public int StageRows { get; set; }
  70. public int StageRepulledRunning { get; set; }
  71. public int StandardRows { get; set; }
  72. public int KpiRows { get; set; }
  73. }