_probe_module_data.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. # -*- coding: utf-8 -*-
  2. """验证各模块 KpiMaster + LayoutItem + kpi_value_l*_day 数据"""
  3. from __future__ import annotations
  4. import sys
  5. import pymysql
  6. sys.stdout.reconfigure(encoding='utf-8')
  7. CONN = dict(
  8. host='123.60.180.165', port=3306,
  9. user='aidopremote', password='1234567890aiDOP#',
  10. database='aidopdev', charset='utf8mb4', autocommit=True,
  11. )
  12. MODULES = ["S1", "S2", "S3", "S4", "S5", "S6", "S7", "S9"]
  13. TENANTS = [1300000000001, 1300000000888]
  14. FACTORY_ID = 1
  15. def main() -> None:
  16. conn = pymysql.connect(**CONN)
  17. with conn.cursor(pymysql.cursors.DictCursor) as cur:
  18. for tid in TENANTS:
  19. print(f"\n=== 租户 {tid} ===")
  20. print(f"{'模块':<6}{'KpiMaster':<12}{'LayoutItem(L1/L2+)':<22}{'L1日值':<10}{'L2日值':<10}{'L3日值':<10}")
  21. print("-" * 72)
  22. for m in MODULES:
  23. cur.execute(
  24. "SELECT COUNT(*) AS c FROM ado_smart_ops_kpi_master "
  25. "WHERE TenantId=%s AND ModuleCode=%s AND IsEnabled=1",
  26. (tid, m),
  27. )
  28. km = cur.fetchone()['c']
  29. cur.execute(
  30. "SELECT SUM(CASE WHEN MetricLevel=1 THEN 1 ELSE 0 END) AS l1, "
  31. "SUM(CASE WHEN MetricLevel>=2 THEN 1 ELSE 0 END) AS l2p "
  32. "FROM ado_smart_ops_layout_item "
  33. "WHERE TenantId=%s AND FactoryId=%s AND ModuleCode=%s AND IsEnabled=1",
  34. (tid, FACTORY_ID, m),
  35. )
  36. lr = cur.fetchone()
  37. layout = f"{lr['l1'] or 0}/{lr['l2p'] or 0}"
  38. vals = {}
  39. for lvl in ('l1', 'l2', 'l3'):
  40. cur.execute(
  41. f"SELECT COUNT(*) AS c FROM ado_s9_kpi_value_{lvl}_day "
  42. "WHERE tenant_id=%s AND factory_id=%s AND module_code=%s AND is_deleted=0",
  43. (tid, FACTORY_ID, m),
  44. )
  45. vals[lvl] = cur.fetchone()['c']
  46. print(f"{m:<6}{km:<12}{layout:<22}{vals['l1']:<10}{vals['l2']:<10}{vals['l3']:<10}")
  47. conn.close()
  48. if __name__ == "__main__":
  49. main()