EnterpriseReplenishmentPolicy.php 1.2 KB

123456789101112131415161718192021222324252627282930
  1. <?php
  2. declare(strict_types=1);
  3. namespace plugin\saiadmin\app\service\enterprise;
  4. /** Resolve per-SKU risk first, then prioritize unhandled risks across the enterprise. */
  5. final class EnterpriseReplenishmentPolicy
  6. {
  7. public const LABELS = ['healthy'=>'正常', 'urgent'=>'紧急', 'pending'=>'待补货', 'ordered'=>'已建单', 'unconfigured'=>'未建账户', 'disabled'=>'已停用'];
  8. private ?\plugin\saiadmin\app\service\alerts\ReplenishmentPolicy $policy = null;
  9. public function alertExpression(): string
  10. {
  11. return ($this->policy ??= new \plugin\saiadmin\app\service\alerts\ReplenishmentPolicy())->alertExpression();
  12. }
  13. public function urgentExpression(): string
  14. {
  15. return ($this->policy ??= new \plugin\saiadmin\app\service\alerts\ReplenishmentPolicy())->urgentExpression();
  16. }
  17. public function resolve(array $row): string
  18. {
  19. if ((int)$row['status'] !== 1) return 'disabled';
  20. if ((int)$row['urgent_count'] > 0) return 'urgent';
  21. if ((int)$row['pending_count'] > 0) return 'pending';
  22. if ((int)$row['active_deliveries'] > 0) return 'ordered';
  23. return (int)$row['enabled_accounts'] > 0 ? 'healthy' : 'unconfigured';
  24. }
  25. }