| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- """读取 DMS 申勤相关模型的字段定义(只读),输出到 output/dms_models_fields.json。"""
- from __future__ import annotations
- import json
- import sys
- import urllib.request
- sys.stdout.reconfigure(encoding="utf-8")
- TOKEN = ("eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9."
- "eyJyb2xlSWQiOiIwLDEsMiwxMiIsImV4cCI6MTc4NjU2NjU0NCwidXNlcklkIjoyNzQs"
- "InVzZXJuYW1lIjoidXNlcl93YW5neGkifQ."
- "FHjT1Bi_gYW3wAfdqTXpMFfmzW2L8V-gYJ0On1PnWq0")
- BASE = "http://121.43.55.7:10081/dms/model/getModelById"
- IDS = {
- "sq_employee(申勤员工)": 1793,
- "sq_project(申勤项目数据)": 1794,
- "file1da77(申勤物业项目清单)": 1795,
- "sq_xq(续签表)": 1950,
- "xzbm(行政编码及片区)": 1902,
- "sq_personnel_certificate(人员证书)": 1890,
- "sq_position_salary(岗位区域薪资)": 1900,
- "shenqin_zbb(招标表)": 1853,
- "shenqin_txb(投续标表)": 1852,
- "shenqin_project_annual_stat(年化数据统计)": 1836,
- "sq_project_period(项目期次)": 1876,
- "sq_shenqin_project(项目主数据)": 1896,
- "sq_yt_column(申勤业态表)": 1909,
- "sq_tender_intent(招标意向)": 1954,
- "sq_tender_notice(招标公告)": 1955,
- "sq_tender_result(结果公告)": 1956,
- }
- def fetch(mid: int) -> dict:
- url = BASE + "?modelId=" + str(mid)
- req = urllib.request.Request(
- url, data=b"{}",
- headers={"token": TOKEN, "Content-Type": "application/json"})
- with urllib.request.urlopen(req, timeout=30) as r:
- return json.loads(r.read().decode("utf-8", "replace"))
- def main() -> None:
- out = {}
- for name, mid in IDS.items():
- try:
- data = fetch(mid)
- content = data.get("content") or {}
- fields = content.get("fieldList") or "{}"
- if isinstance(fields, str):
- fields = json.loads(fields)
- names = []
- if isinstance(fields, dict):
- for k, v in fields.items():
- alias = v.get("alias") if isinstance(v, dict) else (v if isinstance(v, str) else str(v))
- names.append((k, alias))
- elif isinstance(fields, list):
- for v in fields:
- if isinstance(v, dict):
- names.append((v.get("name"), v.get("alias")))
- else:
- names.append((str(v), str(v)))
- out[name] = {"modelId": mid, "modelName": content.get("modelName"),
- "fields": names}
- print(f"== {name} [{content.get('modelName')}] 字段数={len(names)}")
- for n, a in names:
- print(f" {n} | {a}")
- except Exception as e: # noqa: BLE001
- print(f"== {name} ERR {e}")
- with open(r"E:\CODE\knowledge_agent\output\dms_models_fields.json", "w", encoding="utf-8") as f:
- json.dump(out, f, ensure_ascii=False, indent=1)
- if __name__ == "__main__":
- main()
|