Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 

81 строка
2.3 KiB

  1. #!/usr/bin/env python3
  2. """
  3. Fetch job orders from FPSMS backend by plan date.
  4. Uses the public API GET /py/job-orders (no login required).
  5. Usage:
  6. python fetch_job_orders.py # today
  7. python fetch_job_orders.py 2026-02-24 # specific date
  8. python fetch_job_orders.py --date 2026-02-24
  9. """
  10. import argparse
  11. import os
  12. import sys
  13. from datetime import date
  14. from typing import List, Optional
  15. import requests
  16. DEFAULT_BASE_URL = os.environ.get("FPSMS_BASE_URL", "http://localhost:8090/api")
  17. def fetch_job_orders(base_url: str, plan_start: Optional[date]) -> List[dict]:
  18. """Call GET /py/job-orders and return the JSON list."""
  19. url = f"{base_url.rstrip('/')}/py/job-orders"
  20. params = {}
  21. if plan_start is not None:
  22. params["planStart"] = plan_start.isoformat()
  23. resp = requests.get(url, params=params, timeout=30)
  24. resp.raise_for_status()
  25. return resp.json()
  26. def main() -> None:
  27. parser = argparse.ArgumentParser(description="Fetch job orders from FPSMS by plan date")
  28. parser.add_argument(
  29. "date",
  30. nargs="?",
  31. type=str,
  32. default=None,
  33. help="Plan date (yyyy-MM-dd). Default: today",
  34. )
  35. parser.add_argument(
  36. "--date",
  37. dest="date_alt",
  38. type=str,
  39. default=None,
  40. help="Plan date (yyyy-MM-dd)",
  41. )
  42. parser.add_argument(
  43. "--base-url",
  44. type=str,
  45. default=DEFAULT_BASE_URL,
  46. help=f"Backend base URL (default: {DEFAULT_BASE_URL})",
  47. )
  48. args = parser.parse_args()
  49. plan_str = args.date_alt or args.date
  50. if plan_str:
  51. try:
  52. plan_start = date.fromisoformat(plan_str)
  53. except ValueError:
  54. print(f"Invalid date: {plan_str}. Use yyyy-MM-dd.", file=sys.stderr)
  55. sys.exit(1)
  56. else:
  57. plan_start = date.today()
  58. try:
  59. data = fetch_job_orders(args.base_url, plan_start)
  60. except requests.RequestException as e:
  61. print(f"Request failed: {e}", file=sys.stderr)
  62. sys.exit(1)
  63. print(f"Job orders for planStart={plan_start} ({len(data)} items)")
  64. for jo in data:
  65. print(f" id={jo.get('id')} code={jo.get('code')} itemCode={jo.get('itemCode')} itemName={jo.get('itemName')} reqQty={jo.get('reqQty')}")
  66. if __name__ == "__main__":
  67. main()