|
- #!/usr/bin/env python3
- """
- Fetch job orders from FPSMS backend by plan date.
- Uses the public API GET /py/job-orders (no login required).
-
- Usage:
- python fetch_job_orders.py # today
- python fetch_job_orders.py 2026-02-24 # specific date
- python fetch_job_orders.py --date 2026-02-24
- """
-
- import argparse
- import os
- import sys
- from datetime import date
- from typing import List, Optional
-
- import requests
-
- DEFAULT_BASE_URL = os.environ.get("FPSMS_BASE_URL", "http://localhost:8090/api")
-
-
- def fetch_job_orders(base_url: str, plan_start: Optional[date]) -> List[dict]:
- """Call GET /py/job-orders and return the JSON list."""
- url = f"{base_url.rstrip('/')}/py/job-orders"
- params = {}
- if plan_start is not None:
- params["planStart"] = plan_start.isoformat()
- resp = requests.get(url, params=params, timeout=30)
- resp.raise_for_status()
- return resp.json()
-
-
- def main() -> None:
- parser = argparse.ArgumentParser(description="Fetch job orders from FPSMS by plan date")
- parser.add_argument(
- "date",
- nargs="?",
- type=str,
- default=None,
- help="Plan date (yyyy-MM-dd). Default: today",
- )
- parser.add_argument(
- "--date",
- dest="date_alt",
- type=str,
- default=None,
- help="Plan date (yyyy-MM-dd)",
- )
- parser.add_argument(
- "--base-url",
- type=str,
- default=DEFAULT_BASE_URL,
- help=f"Backend base URL (default: {DEFAULT_BASE_URL})",
- )
- args = parser.parse_args()
-
- plan_str = args.date_alt or args.date
- if plan_str:
- try:
- plan_start = date.fromisoformat(plan_str)
- except ValueError:
- print(f"Invalid date: {plan_str}. Use yyyy-MM-dd.", file=sys.stderr)
- sys.exit(1)
- else:
- plan_start = date.today()
-
- try:
- data = fetch_job_orders(args.base_url, plan_start)
- except requests.RequestException as e:
- print(f"Request failed: {e}", file=sys.stderr)
- sys.exit(1)
-
- print(f"Job orders for planStart={plan_start} ({len(data)} items)")
- for jo in data:
- print(f" id={jo.get('id')} code={jo.get('code')} itemCode={jo.get('itemCode')} itemName={jo.get('itemName')} reqQty={jo.get('reqQty')}")
-
-
- if __name__ == "__main__":
- main()
|