_tmp_status_literals.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. # -*- coding: utf-8 -*-
  2. import re
  3. import pyodbc
  4. CONN = (
  5. "DRIVER={ODBC Driver 17 for SQL Server};"
  6. "SERVER=123.60.180.165,1433;DATABASE=dopdemorq;"
  7. "UID=dopsa;PWD=5h3n9)uN;TrustServerCertificate=yes"
  8. )
  9. PROCS = [
  10. "pr_SFM_SaveWorkOrdChooseByOpData",
  11. "pr_SFM_EndWorkOrdByOp",
  12. "pr_MES_CloseWorkOrders",
  13. "pr_WMS_SavePrepareMaterial",
  14. "pr_WMS_SaveWorkOrdMaterialIssue",
  15. "pr_SFM_InventoryMesCartonTransactionProcessingByOp",
  16. "pr_SFM_SaveEmployeeWorkStatus",
  17. "pr_SFM_LinePlanedStart",
  18. "pr_SFM_LinePlanedEnd",
  19. ]
  20. def main() -> None:
  21. conn = pyodbc.connect(CONN, timeout=60)
  22. cur = conn.cursor()
  23. for name in PROCS:
  24. cur.execute("SELECT OBJECT_DEFINITION(OBJECT_ID(?))", name)
  25. text = cur.fetchone()[0] or ""
  26. print("====", name)
  27. for m in re.finditer(r"(?i)Status\s*=\s*N?'([^']{1,20})'", text):
  28. i = m.start()
  29. ctx = re.sub(r"\s+", " ", text[max(0, i - 90) : i + 50])
  30. if any(
  31. t in ctx
  32. for t in (
  33. "WorkOrd",
  34. "Nbr",
  35. "Missed",
  36. "LineStatus",
  37. "Period",
  38. "Employee",
  39. "Routing",
  40. )
  41. ):
  42. print(" ", ctx[-140:])
  43. for m in re.finditer(r"(?i)WorkStatus\s*=\s*N?'([^']{1,30})'", text):
  44. i = m.start()
  45. ctx = re.sub(r"\s+", " ", text[max(0, i - 70) : i + 40])
  46. print(" WS", ctx)
  47. conn.close()
  48. if __name__ == "__main__":
  49. main()