run_uat_delivery_schedule_fact_seed.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #!/usr/bin/env python3
  2. """Complete UAT delivery-schedule business dates before S3/S4 rebuilds."""
  3. from __future__ import annotations
  4. import argparse
  5. import json
  6. from apply_sql_file import connect
  7. TENANTS = (838257186181189, 838257212780613, 838257237606469)
  8. def apply() -> dict[str, int]:
  9. conn = connect()
  10. counts: dict[str, int] = {}
  11. try:
  12. conn.begin()
  13. with conn.cursor() as cursor:
  14. for index, tenant_id in enumerate(TENANTS):
  15. cursor.execute(
  16. """
  17. UPDATE srm_polist_ds
  18. SET requestdate = DATE_SUB(NOW(), INTERVAL (5 + MOD(Id, 20)) DAY),
  19. submitdate = DATE_ADD(
  20. DATE_SUB(NOW(), INTERVAL (5 + MOD(Id, 20)) DAY),
  21. INTERVAL (1 + MOD(Id, 3)) DAY
  22. ),
  23. lastsentdate = DATE_ADD(
  24. DATE_SUB(NOW(), INTERVAL (5 + MOD(Id, 20)) DAY),
  25. INTERVAL (1 + MOD(Id, 3)) DAY
  26. ),
  27. sentqty = ROUND(schedqty * %s, 5),
  28. lastsentqty = ROUND(schedqty * %s, 5),
  29. restqty = GREATEST(schedqty - ROUND(schedqty * %s, 5), 0),
  30. status = 'S',
  31. remarks = CASE
  32. WHEN IFNULL(remarks,'') LIKE '%%UAT_GENERATOR:交货计划已发布%%' THEN remarks
  33. ELSE CONCAT(
  34. CASE WHEN IFNULL(remarks,'')='' THEN '' ELSE CONCAT(remarks, ';') END,
  35. 'UAT_GENERATOR:交货计划已发布'
  36. )
  37. END,
  38. updateuser = 'UAT_GENERATOR',
  39. updatetime = NOW()
  40. WHERE tenant_id = %s
  41. AND isactive = 1
  42. """,
  43. (
  44. ("0.85", "0.70", "0.92")[index],
  45. ("0.85", "0.70", "0.92")[index],
  46. ("0.85", "0.70", "0.92")[index],
  47. tenant_id,
  48. ),
  49. )
  50. counts[str(tenant_id)] = cursor.rowcount
  51. conn.commit()
  52. except Exception:
  53. conn.rollback()
  54. raise
  55. finally:
  56. conn.close()
  57. return counts
  58. def main() -> int:
  59. parser = argparse.ArgumentParser()
  60. parser.add_argument("--apply", action="store_true")
  61. args = parser.parse_args()
  62. result = {"mode": "dry-run", "tenants": list(TENANTS)}
  63. if args.apply:
  64. result = {"mode": "apply", "updated": apply()}
  65. print(json.dumps(result, ensure_ascii=False, indent=2))
  66. return 0
  67. if __name__ == "__main__":
  68. raise SystemExit(main())