From 2d8c1ea8f9755d399579fa933f432ac4b4a94d3e Mon Sep 17 00:00:00 2001 From: # Date: Sun, 14 Jun 2026 17:47:15 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=89=B9=E9=87=8F=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=90=84=E7=B1=BB=E5=B7=A5=E5=85=B7=E8=84=9A=E6=9C=AC=E4=B8=8E?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 新增音频录制、下载、上传相关脚本 2. 新增数据库操作、API调用工具 3. 新增Excel数据处理脚本 4. 新增弱密码检测脚本 --- .gitignore | 4 + RTSP录制音频.py | 90 + ai/test.py | 137 + audio_recorder.py | 221 ++ audio_recorder_centos.py | 232 ++ download_audio.py | 10 + oss_upload.py | 58 + test/port.py | 76 - test/port.spec | 50 - 大模型/demo.ipynb | 114 + 大模型/graph.ipynb | 208 ++ 大模型/question | 30 + 大模型/test.js | 184 ++ 大模型/test.py | 108 + 持续录制音频.py | 58 + 数据库/本地/杂项.ipynb | 111 +- 数据库/本地/测试数据库.ipynb | 116 + 数据库/本地/测试数据库.py | 46 + 数据库/本地/课程表时间加7.ipynb | 4 +- 数据库/线上/Untitled-1.py | 206 ++ 数据库/线上/demo.py | 2108 +++++++++++++++ 数据库/线上/恢复学生数据.ipynb | 1453 ++++++++--- 数据库/线上/线上数据库.ipynb | 2287 ++++++++++++++++- 新平台/login.py | 15 + 新平台/pctoken.py | 2 +- 新平台/test.ipynb | 270 +- 智慧校园/同文/班牌机.ipynb | 1640 ++++++++++++ 智慧校园/同文/班牌机mqtt.ipynb | 46 +- 智慧校园/本地/api.py | 65 +- 智慧校园/本地/api1.py | 35 + 智慧校园/本地/demo.ipynb | 98 +- 智慧校园/本地/test.py | 17 + 智慧校园/本地/批量添加学生请假x信息.py | 288 +++ 智慧校园/本地/批量添加学生请假x信息线上.py | 288 +++ 智慧校园/本地/生成本周课程表.ipynb | 128 + 智慧校园/本部/demo.ipynb | 785 +++++- 智慧校园/本部/mysql_online.py | 27 + 智慧校园/本部/学生消费数据.ipynb | 0 智慧校园/本部/消费数据/24-26消费信息/demo.py | 216 ++ .../本部/消费数据/学生消费信息/Untitled-1.py | 89 + .../本部/消费数据/学生消费信息/demo.ipynb | 25 + .../本部/消费数据/学生消费信息/read_excel.py | 38 + .../学生消费信息/read_excel_simple.py | 24 + .../本部/消费数据/学生消费信息/read_tables.py | 17 + .../消费数据/学生消费信息/整理消费数据.py | 140 + 智慧校园/本部/生成单个学生课表.ipynb | 309 +++ 46 files changed, 11644 insertions(+), 829 deletions(-) create mode 100644 RTSP录制音频.py create mode 100644 ai/test.py create mode 100644 audio_recorder.py create mode 100644 audio_recorder_centos.py create mode 100644 download_audio.py create mode 100644 oss_upload.py delete mode 100644 test/port.py delete mode 100644 test/port.spec create mode 100644 大模型/demo.ipynb create mode 100644 大模型/graph.ipynb create mode 100644 大模型/question create mode 100644 大模型/test.js create mode 100644 大模型/test.py create mode 100644 持续录制音频.py create mode 100644 数据库/本地/测试数据库.ipynb create mode 100644 数据库/本地/测试数据库.py create mode 100644 数据库/线上/Untitled-1.py create mode 100644 数据库/线上/demo.py create mode 100644 新平台/login.py create mode 100644 智慧校园/同文/班牌机.ipynb create mode 100644 智慧校园/本地/api1.py create mode 100644 智慧校园/本地/test.py create mode 100644 智慧校园/本地/批量添加学生请假x信息.py create mode 100644 智慧校园/本地/批量添加学生请假x信息线上.py create mode 100644 智慧校园/本地/生成本周课程表.ipynb create mode 100644 智慧校园/本部/mysql_online.py create mode 100644 智慧校园/本部/学生消费数据.ipynb create mode 100644 智慧校园/本部/消费数据/24-26消费信息/demo.py create mode 100644 智慧校园/本部/消费数据/学生消费信息/Untitled-1.py create mode 100644 智慧校园/本部/消费数据/学生消费信息/demo.ipynb create mode 100644 智慧校园/本部/消费数据/学生消费信息/read_excel.py create mode 100644 智慧校园/本部/消费数据/学生消费信息/read_excel_simple.py create mode 100644 智慧校园/本部/消费数据/学生消费信息/read_tables.py create mode 100644 智慧校园/本部/消费数据/学生消费信息/整理消费数据.py create mode 100644 智慧校园/本部/生成单个学生课表.ipynb diff --git a/.gitignore b/.gitignore index 146daa8..4177b2c 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,10 @@ dist/ *.egg-info *.pyc *.jar +*.csv +*.wav +*.json +*/output/ build/ out/ __pycache__/ \ No newline at end of file diff --git a/RTSP录制音频.py b/RTSP录制音频.py new file mode 100644 index 0000000..6fa4a35 --- /dev/null +++ b/RTSP录制音频.py @@ -0,0 +1,90 @@ +import subprocess +import time +from datetime import datetime +import os + +# RTSP 流地址 +rtsp_url = "rtsp://10.68.66.174/audio" + +# 录制时长(分钟) +duration_minutes = 60 +output_filename = f"rtsp_recording_{datetime.now().strftime('%Y%m%d_%H%M%S')}.wav" + +print(f"开始录制 RTSP 音频流...") +print(f"RTSP 地址: {rtsp_url}") +print(f"录制时长: {duration_minutes} 分钟") +print(f"保存路径: {output_filename}") +print(f"按 Ctrl+C 停止录制") +print("-" * 50) + +# 转换为秒 +duration_seconds = duration_minutes * 60 + +try: + # 使用 ffmpeg 录制 RTSP 流 + # -rtsp_transport tcp 使用 TCP 协议,更稳定 + # -t 指定录制时长 + # -acodec pcm_s16le 输出 PCM WAV 格式 + cmd = [ + 'ffmpeg', + '-rtsp_transport', 'tcp', + '-i', rtsp_url, + '-t', str(duration_seconds), + '-acodec', 'pcm_s16le', + '-ar', '16000', # 采样率 + '-ac', '1', # 单声道 + '-y', # 覆盖已存在的文件 + output_filename + ] + + print(f"执行命令: {' '.join(cmd)}") + print("开始录制...") + + # 执行 ffmpeg 命令 + process = subprocess.Popen( + cmd, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + universal_newlines=True + ) + + # 用于跟踪进度的变量 + start_time = time.time() + last_size = 0 + + # 实时输出 ffmpeg 的日志 + for line in iter(process.stdout.readline, ''): + if line: + # 检查文件大小变化 + if os.path.exists(output_filename): + current_size = os.path.getsize(output_filename) + if current_size != last_size: + elapsed = time.time() - start_time + size_mb = current_size / (1024 * 1024) + progress = (elapsed / duration_seconds) * 100 if duration_seconds > 0 else 0 + print(f"进度: {int(elapsed)}秒 / {duration_seconds}秒 ({progress:.1f}%), 大小: {size_mb:.2f}MB", end='\r') + last_size = current_size + + process.wait() + + # 录制完成 + elapsed = time.time() - start_time + if os.path.exists(output_filename): + size_mb = os.path.getsize(output_filename) / (1024 * 1024) + print(f"\n\n录制完成!") + print(f"总时长: {int(elapsed)}秒 ({elapsed/60:.1f}分钟)") + print(f"文件大小: {size_mb:.2f}MB") + print(f"保存路径: {os.path.abspath(output_filename)}") + else: + print("\n录制失败,文件未生成") + +except KeyboardInterrupt: + print(f"\n\n录制已手动停止") + if os.path.exists(output_filename): + size_mb = os.path.getsize(output_filename) / (1024 * 1024) + elapsed = time.time() - start_time + print(f"已录制: {int(elapsed)}秒") + print(f"文件大小: {size_mb:.2f}MB") + print(f"保存路径: {os.path.abspath(output_filename)}") +except Exception as e: + print(f"\n错误: {e}") diff --git a/ai/test.py b/ai/test.py new file mode 100644 index 0000000..db7d28e --- /dev/null +++ b/ai/test.py @@ -0,0 +1,137 @@ +from langchain_openai import ChatOpenAI +from langchain_mcp_adapters.client import MultiServerMCPClient +from langchain_core.tools import StructuredTool, Tool +from langchain.agents import create_agent +import asyncio + +def normalize_base_url(url): + """标准化base_url,移除反引号和首尾空格,去除末尾斜杠""" + if url: + url = url.strip().strip('`').rstrip('/') + return url + +# OpenAI配置 +api_key = "sk-8d657b8b7efe0cb6c141a30d9cee97f726efb9b18ea72bb1e8cfb080b42c140d" +base_url = normalize_base_url("https://console.pivotbak.cfd/v1") +model_name = "MiniMax-M2.7-highspeed" + +# MCP配置 +mcp_server_url = normalize_base_url("http://192.168.0.10:9999/admin/mcp/sse") + +# 全局参数 - 每次对话都要传递 +team_id = 19 +token = "f1d23a59-479c-44a8-94b5-2344e4672ffd" + +# 初始化LLM,每次请求都会携带teamId和token +llm = ChatOpenAI( + model=model_name, + openai_api_key=api_key, + openai_api_base=base_url, + temperature=0.7, + max_tokens=4096, + extra_body={ + "teamId": team_id, + "token": token + } +) + +# 示例工具函数 +def get_current_time(): + """获取当前时间""" + from datetime import datetime + return datetime.now().strftime("%Y-%m-%d %H:%M:%S") + +def calculate(a: float, b: float, operation: str = "add") -> float: + """ + 简单计算器 + :param a: 第一个数 + :param b: 第二个数 + :param operation: 操作类型,可选 add, sub, mul, div + """ + if operation == "add": + return a + b + elif operation == "sub": + return a - b + elif operation == "mul": + return a * b + elif operation == "div": + if b == 0: + return "错误:除数不能为零" + return a / b + else: + return f"未知操作: {operation}" + +# 定义工具 +tools = [ + Tool( + name="get_current_time", + func=get_current_time, + description="获取当前时间" + ), + StructuredTool.from_function(calculate) +] + +# 从MCP加载工具 +async def load_mcp_tools(): + mcp_client = MultiServerMCPClient( + {"server": {"url": mcp_server_url, "transport": "sse"}} + ) + try: + mcp_tools = await mcp_client.get_tools() + print(f"从MCP服务器加载到 {len(mcp_tools)} 个工具:") + for tool in mcp_tools: + print(f" - {tool.name}: {tool.description}") + return mcp_tools + except Exception as e: + print(f"连接MCP服务器失败: {e}") + print("将继续使用本地工具") + return [] + +# 创建Agent +def create_my_agent(all_tools): + agent = create_agent( + model=llm, + tools=all_tools, + system_prompt="你是一个有用的助手,使用提供的工具来回答问题。" + ) + return agent + +# 测试示例 +async def main(): + print("=" * 60) + print("LangChain + MCP 测试") + print(f"模型: {model_name}") + print(f"API地址: {base_url}") + print(f"MCP地址: {mcp_server_url}") + print(f"Team ID: {team_id}") + print(f"Token: {token[:10]}..." if len(token) > 10 else token) + print("=" * 60) + + # 加载MCP工具 + mcp_tools = await load_mcp_tools() + all_tools = tools + mcp_tools + + # 创建Agent + agent = create_my_agent(all_tools) + + # 测试1: 直接对话 + print("\n--- 测试1: 直接对话 ---") + response = llm.invoke("你好,介绍一下自己") + print(response.content) + + # 测试2: 使用工具 + print("\n--- 测试2: 使用工具 - 获取当前时间 ---") + result = await agent.ainvoke({ + "messages": [("user", "现在几点了?")] + }) + print(result["messages"][-1].content) + + # 测试3: 使用计算器 + print("\n--- 测试3: 使用工具 - 计算 ---") + result = await agent.ainvoke({ + "messages": [("user", "计算 100 乘以 50 等于多少?")] + }) + print(result["messages"][-1].content) + +if __name__ == "__main__": + asyncio.run(main()) \ No newline at end of file diff --git a/audio_recorder.py b/audio_recorder.py new file mode 100644 index 0000000..f6fc0de --- /dev/null +++ b/audio_recorder.py @@ -0,0 +1,221 @@ +from flask import Flask, jsonify, request +import subprocess +import threading +import time +import os +from datetime import datetime +import schedule + +app = Flask(__name__) + +# 配置参数 +RTSP_URL = "rtsp://10.68.66.174/audio" +RECORD_DURATION_MINUTES = 60 # 录制时长(分钟) +REST_DURATION_MINUTES = 20 # 休息时长(分钟) +START_HOUR = 8 # 开始时间(小时) +END_HOUR = 20 # 结束时间(小时) +OUTPUT_DIR = "./" # 输出目录 + +# 录制状态 +recording_state = { + "is_recording": False, + "current_file": None, + "start_time": None, + "total_recorded": 0, + "schedule_next": None +} + +def get_output_path(): + """生成带时间戳的文件名""" + timestamp = datetime.now().strftime('%Y%m%d_%H%M%S') + return os.path.join(OUTPUT_DIR, f"rtsp_{timestamp}.wav") + +def is_within_schedule(): + """检查当前是否在有效时间段内""" + current_hour = datetime.now().hour + return START_HOUR <= current_hour < END_HOUR + +def record_audio(): + """执行音频录制""" + if recording_state["is_recording"]: + print(f"[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] 正在录制中,跳过本次录制") + return + + if not is_within_schedule(): + print(f"[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] 不在有效时间段内(8:00-20:00),跳过本次录制") + return + + output_file = get_output_path() + print(f"[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] 开始录制: {output_file}") + + recording_state["is_recording"] = True + recording_state["current_file"] = output_file + recording_state["start_time"] = datetime.now() + + try: + # 使用 ffmpeg 录制 + cmd = [ + 'ffmpeg', + '-rtsp_transport', 'tcp', + '-i', RTSP_URL, + '-t', str(RECORD_DURATION_MINUTES * 60), + '-acodec', 'pcm_s16le', + '-ar', '16000', + '-ac', '1', + '-y', + output_file + ] + + process = subprocess.Popen( + cmd, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + universal_newlines=True + ) + + # 监控录制进度 + start_time = time.time() + while process.poll() is None: + if os.path.exists(output_file): + size_mb = os.path.getsize(output_file) / (1024 * 1024) + elapsed = time.time() - start_time + print(f"\r进度: {int(elapsed)}秒 / {RECORD_DURATION_MINUTES * 60}秒, 大小: {size_mb:.2f}MB", end='') + time.sleep(1) + + print() # 换行 + + # 录制完成 + if os.path.exists(output_file): + size_mb = os.path.getsize(output_file) / (1024 * 1024) + recording_state["total_recorded"] += 1 + print(f"[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] 录制完成: {output_file} ({size_mb:.2f}MB)") + else: + print(f"[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] 录制失败") + + except Exception as e: + print(f"[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] 录制错误: {e}") + finally: + recording_state["is_recording"] = False + recording_state["current_file"] = None + recording_state["start_time"] = None + + # 录制完成后,在有效时间段内等待 REST_DURATION_MINUTES 分钟 + if is_within_schedule(): + print(f"[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] 进入休息模式,等待 {REST_DURATION_MINUTES} 分钟...") + time.sleep(REST_DURATION_MINUTES * 60) + print(f"[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] 休息结束") + else: + # 不在有效时间段,等待到下一个有效时间段 + now = datetime.now() + if now.hour >= END_HOUR: + # 等待到明天早上 8 点 + from datetime import timedelta + next_day = now + timedelta(days=1) + target = next_day.replace(hour=START_HOUR, minute=0, second=0, microsecond=0) + else: + # 等待到今天早上 8 点 + target = now.replace(hour=START_HOUR, minute=0, second=0, microsecond=0) + + wait_seconds = (target - now).total_seconds() + print(f"[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] 不在有效时间段,等待 {wait_seconds/3600:.1f} 小时...") + time.sleep(wait_seconds) + +def schedule_recording(): + """定时录制任务""" + thread = threading.Thread(target=record_audio, daemon=True) + thread.start() + +def run_scheduler(): + """运行定时器""" + # 设置定时任务:每小时整点录制 + schedule.every().hour.at(":00").do(schedule_recording) + + print(f"[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] 定时录制服务已启动") + print(f" - 录制时长: {RECORD_DURATION_MINUTES} 分钟") + print(f" - 休息时长: {REST_DURATION_MINUTES} 分钟") + print(f" - 有效时段: {START_HOUR}:00 - {END_HOUR}:00") + print("-" * 50) + + while True: + schedule.run_pending() + time.sleep(1) + +# Flask 路由 +@app.route('/') +def index(): + """主页""" + return jsonify({ + "service": "RTSP Audio Recorder", + "status": "running" if recording_state["is_recording"] else "idle", + "config": { + "rtsp_url": RTSP_URL, + "record_duration": f"{RECORD_DURATION_MINUTES} minutes", + "rest_duration": f"{REST_DURATION_MINUTES} minutes", + "schedule": f"{START_HOUR}:00 - {END_HOUR}:00" + } + }) + +@app.route('/status') +def status(): + """获取录制状态""" + return jsonify({ + "is_recording": recording_state["is_recording"], + "current_file": recording_state["current_file"], + "start_time": recording_state["start_time"].isoformat() if recording_state["start_time"] else None, + "total_recorded": recording_state["total_recorded"], + "current_time": datetime.now().strftime('%Y-%m-%d %H:%M:%S'), + "is_in_schedule": is_within_schedule() + }) + +@app.route('/start') +def start_recording(): + """手动开始录制""" + if recording_state["is_recording"]: + return jsonify({"status": "error", "message": "正在录制中"}) + + thread = threading.Thread(target=record_audio, daemon=True) + thread.start() + + return jsonify({"status": "success", "message": "开始录制"}) + +@app.route('/stop') +def stop_recording(): + """手动停止录制(终止 ffmpeg 进程)""" + if not recording_state["is_recording"]: + return jsonify({"status": "error", "message": "当前没有在录制"}) + + # 查找并终止 ffmpeg 进程 + try: + subprocess.run(['taskkill', '/f', '/im', 'ffmpeg.exe'], capture_output=True) + recording_state["is_recording"] = False + return jsonify({"status": "success", "message": "已停止录制"}) + except Exception as e: + return jsonify({"status": "error", "message": str(e)}) + +@app.route('/files') +def list_files(): + """列出已录制的文件""" + files = [] + for f in os.listdir(OUTPUT_DIR): + if f.endswith('.wav') and f.startswith('rtsp_'): + path = os.path.join(OUTPUT_DIR, f) + files.append({ + "name": f, + "size": os.path.getsize(path), + "modified": datetime.fromtimestamp(os.path.getmtime(path)).isoformat() + }) + return jsonify({"files": files}) + +if __name__ == '__main__': + # 确保输出目录存在 + os.makedirs(OUTPUT_DIR, exist_ok=True) + + # 启动定时器线程 + scheduler_thread = threading.Thread(target=run_scheduler, daemon=True) + scheduler_thread.start() + + # 启动 Flask 服务 + print(f"\n{'='*50}") + print(f"RTSP 音频录制服务") + print(f"{'='*50}") + app.run(host='0.0.0.0', port=5000, debug=False, use_reloader=False) diff --git a/audio_recorder_centos.py b/audio_recorder_centos.py new file mode 100644 index 0000000..a9196ca --- /dev/null +++ b/audio_recorder_centos.py @@ -0,0 +1,232 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import subprocess +import threading +import time +import os +import sys +from datetime import datetime, timedelta + +# 配置参数 +RTSP_URL = "rtsp://10.68.66.174/audio" +RECORD_DURATION_MINUTES = 60 # 录制时长(分钟) +REST_DURATION_MINUTES = 20 # 休息时长(分钟) +START_HOUR = 8 # 开始时间(小时) +END_HOUR = 20 # 结束时间(小时) +OUTPUT_DIR = "./" # 输出目录 + +# 录制状态 +recording_state = { + "is_recording": False, + "current_file": None, + "start_time": None, + "total_recorded": 0 +} + +def log(msg): + """带时间戳的日志输出""" + print(f"[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] {msg}") + sys.stdout.flush() + +def check_dependencies(): + """检查依赖是否满足""" + errors = [] + + # 检查 Python 版本 + if sys.version_info[0] < 3: + errors.append("需要 Python 3.x") + + # 检查 ffmpeg + try: + result = subprocess.run(['ffmpeg', '-version'], capture_output=True, text=True, timeout=5) + if result.returncode != 0: + errors.append("ffmpeg 未正确安装") + else: + log("ffmpeg 已安装: " + result.stdout.split('\n')[0]) + except FileNotFoundError: + errors.append("未找到 ffmpeg,请安装: yum install ffmpeg 或 apt install ffmpeg") + except Exception as e: + errors.append(f"检查 ffmpeg 时出错: {e}") + + return errors + +def get_output_path(): + """生成带时间戳的文件名""" + timestamp = datetime.now().strftime('%Y%m%d_%H%M%S') + return os.path.join(OUTPUT_DIR, f"rtsp_{timestamp}.wav") + +def is_within_schedule(): + """检查当前是否在有效时间段内""" + current_hour = datetime.now().hour + return START_HOUR <= current_hour < END_HOUR + +def do_record(output_file): + """执行 ffmpeg 录制""" + cmd = [ + 'ffmpeg', + '-rtsp_transport', 'tcp', + '-i', RTSP_URL, + '-t', str(RECORD_DURATION_MINUTES * 60), + '-acodec', 'pcm_s16le', + '-ar', '16000', + '-ac', '1', + '-y', + output_file + ] + + log(f"执行命令: {' '.join(cmd)}") + + process = subprocess.Popen( + cmd, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + universal_newlines=True + ) + + # 监控录制进度 + start_time = time.time() + last_size = 0 + + while process.poll() is None: + if os.path.exists(output_file): + current_size = os.path.getsize(output_file) + if current_size != last_size: + size_mb = current_size / (1024 * 1024) + elapsed = time.time() - start_time + progress = (elapsed / (RECORD_DURATION_MINUTES * 60)) * 100 + print(f"\r进度: {int(elapsed)}秒 / {RECORD_DURATION_MINUTES * 60}秒 ({progress:.1f}%), 大小: {size_mb:.2f}MB", end='') + sys.stdout.flush() + last_size = current_size + time.sleep(1) + + print() # 换行 + + # 检查进程返回码 + if process.returncode != 0: + log(f"ffmpeg 返回错误码: {process.returncode}") + remaining = process.stdout.read() + if remaining: + log(f"ffmpeg 输出: {remaining[:500]}") + + return process.returncode, output_file + +def record_audio(check_schedule=True): + """执行音频录制 + check_schedule: 是否检查时间段限制 + """ + if recording_state["is_recording"]: + log("正在录制中,跳过本次录制") + return + + if check_schedule and not is_within_schedule(): + log(f"不在有效时间段内({START_HOUR}:00-{END_HOUR}:00),跳过本次录制") + return + + output_file = get_output_path() + log(f"开始录制: {output_file}") + + recording_state["is_recording"] = True + recording_state["current_file"] = output_file + recording_state["start_time"] = datetime.now() + + try: + returncode, file_path = do_record(output_file) + + # 录制完成 + if os.path.exists(file_path): + size_mb = os.path.getsize(file_path) / (1024 * 1024) + recording_state["total_recorded"] += 1 + log(f"录制完成: {file_path} ({size_mb:.2f}MB)") + else: + log("录制失败,文件未生成") + + except FileNotFoundError as e: + log(f"命令未找到: {e}") + log("请确保 ffmpeg 已安装并可在 PATH 中访问") + except Exception as e: + log(f"录制错误: {e}") + import traceback + traceback.print_exc() + finally: + recording_state["is_recording"] = False + recording_state["current_file"] = None + recording_state["start_time"] = None + +def handle_rest(): + """处理休息时间""" + if is_within_schedule(): + log(f"进入休息模式,等待 {REST_DURATION_MINUTES} 分钟...") + time.sleep(REST_DURATION_MINUTES * 60) + log("休息结束") + else: + # 计算到下一个有效时间段 + now = datetime.now() + if now.hour >= END_HOUR: + next_day = now + timedelta(days=1) + target = next_day.replace(hour=START_HOUR, minute=0, second=0, microsecond=0) + else: + target = now.replace(hour=START_HOUR, minute=0, second=0, microsecond=0) + + wait_seconds = (target - now).total_seconds() + log(f"不在有效时间段,等待 {wait_seconds/3600:.1f} 小时到 {START_HOUR}:00...") + time.sleep(wait_seconds) + +def run_scheduler(): + """运行定时器""" + log("定时录制服务已启动") + log(f" - 录制时长: {RECORD_DURATION_MINUTES} 分钟") + log(f" - 休息时长: {REST_DURATION_MINUTES} 分钟") + log(f" - 有效时段: {START_HOUR}:00 - {END_HOUR}:00") + log("-" * 50) + + # 启动时立即开始录制(无视时间段) + log("启动脚本,立即开始录制(本次无视时间段)") + record_audio(check_schedule=False) + + # 录制完成后处理休息 + if recording_state["total_recorded"] > 0: + handle_rest() + + while True: + now = datetime.now() + + # 检查是否在有效时间段内 + if is_within_schedule(): + # 每小时整点开始录制 + if now.minute == 0 and now.second == 0: + log("整点时间到,开始录制") + record_audio(check_schedule=True) + + time.sleep(1) + +def main(): + """主函数""" + print("=" * 50) + print("RTSP 音频录制服务") + print("=" * 50) + + # 检查依赖 + log("检查系统依赖...") + errors = check_dependencies() + + if errors: + log("发现以下问题:") + for error in errors: + log(f" - {error}") + log("请修复上述问题后重试") + sys.exit(1) + + # 确保输出目录存在 + os.makedirs(OUTPUT_DIR, exist_ok=True) + log(f"输出目录: {os.path.abspath(OUTPUT_DIR)}") + + # 启动定时器 + try: + run_scheduler() + except KeyboardInterrupt: + log("收到停止信号,正在退出...") + sys.exit(0) + +if __name__ == '__main__': + main() diff --git a/download_audio.py b/download_audio.py new file mode 100644 index 0000000..f20bcf3 --- /dev/null +++ b/download_audio.py @@ -0,0 +1,10 @@ +from requests import get + +url = "http://10.68.66.174/mix.wav" +output_path = "mix.wav" + +response = get(url) +with open(output_path, "wb") as f: + f.write(response.content) + +print(f"文件已下载到: {output_path}") diff --git a/oss_upload.py b/oss_upload.py new file mode 100644 index 0000000..31bedfb --- /dev/null +++ b/oss_upload.py @@ -0,0 +1,58 @@ +import oss2 +from pathlib import Path + + +class AliyunOSSUploader: + def __init__(self): + self.access_key_id = "LTAI5tGTySgnmBWAzQMtKDSS" + self.secret_access_key = "V3c7TI4KfK9ks8ReZGhSbADjX6avT0" + self.endpoint = "oss-cn-beijing.aliyuncs.com" + self.bucket_name = "remote-xtl" + + auth = oss2.Auth(self.access_key_id, self.secret_access_key) + self.bucket = oss2.Bucket(auth, self.endpoint, self.bucket_name) + + def _progress_callback(self, consumed_bytes, total_bytes): + if total_bytes: + rate = int(consumed_bytes * 100 / total_bytes) + print(f"\r上传进度: {rate}% ({consumed_bytes}/{total_bytes} bytes)", end="") + + def upload(self, file_path, oss_object_name=None): + file_path = Path(file_path) + + if not file_path.exists(): + raise FileNotFoundError(f"文件不存在: {file_path}") + + if oss_object_name is None: + oss_object_name = file_path.name + + print(f"正在上传: {file_path}") + print(f"目标: oss://{self.bucket_name}/{oss_object_name}") + + self.bucket.put_object_from_file( + oss_object_name, + str(file_path), + progress_callback=self._progress_callback + ) + + print(f"\n上传成功!") + url = f"https://{self.bucket_name}.{self.endpoint}/{oss_object_name}" + print(f"访问地址: {url}") + return url + + +if __name__ == "__main__": + uploader = AliyunOSSUploader() + + print("=" * 50) + print("阿里云 OSS 文件上传工具") + print("=" * 50) + + file_path = input("\n请输入文件绝对路径: ").strip().strip('"').strip("'") + + try: + uploader.upload(file_path) + except FileNotFoundError as e: + print(f"\n错误: {e}") + except Exception as e: + print(f"\n上传失败: {e}") diff --git a/test/port.py b/test/port.py deleted file mode 100644 index 970901d..0000000 --- a/test/port.py +++ /dev/null @@ -1,76 +0,0 @@ -import socket -import threading -from queue import Queue -import time - -# 定义要检查的IP范围和端口 -IP_BASE = "192.168.10." -START_IP = 1 -END_IP = 255 -TARGET_PORT = 5555 - -# 线程数量,可根据需要调整 -THREAD_COUNT = 30 - - -def check_port(ip, port, result_queue): - """检查指定IP的端口是否开放""" - try: - # 创建socket对象 - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - # 设置超时时间为1秒 - sock.settimeout(1) - # 尝试连接 - result = sock.connect_ex((ip, port)) - if result == 0: - result_queue.put(ip) - sock.close() - except Exception: - pass - - -def worker(ip_queue, result_queue): - """工作线程,从队列中获取IP并检查端口""" - while not ip_queue.empty(): - ip = ip_queue.get() - check_port(ip, TARGET_PORT, result_queue) - ip_queue.task_done() - - -if __name__ == "__main__": - start_time = time.time() - print(f"开始扫描 {IP_BASE}{START_IP} 到 {IP_BASE}{END_IP} 的 {TARGET_PORT} 端口...") - - # 创建IP队列 - ip_queue = Queue() - for i in range(START_IP, END_IP + 1): - ip = f"{IP_BASE}{i}" - ip_queue.put(ip) - - # 创建存储开放端口IP的队列 - result_queue = Queue() - - # 创建并启动线程 - threads = [] - for _ in range(THREAD_COUNT): - thread = threading.Thread(target=worker, args=(ip_queue, result_queue)) - thread.start() - threads.append(thread) - - # 等待所有IP都被处理 - ip_queue.join() - - # 收集结果 - open_ips = [] - while not result_queue.empty(): - open_ips.append(result_queue.get()) - - # 排序结果 - open_ips.sort(key=lambda x: int(x.split(".")[-1])) - - # 输出结果 - print("\n扫描完成!") - print(f"耗时: {time.time() - start_time:.2f} 秒") - print(f"发现 {len(open_ips)} 个设备的 {TARGET_PORT} 端口开放:") - for ip in open_ips: - print(f" {ip}:{TARGET_PORT}") diff --git a/test/port.spec b/test/port.spec deleted file mode 100644 index e6741d0..0000000 --- a/test/port.spec +++ /dev/null @@ -1,50 +0,0 @@ -# -*- mode: python ; coding: utf-8 -*- - - -block_cipher = None - - -a = Analysis( - ['port.py'], - pathex=[], - binaries=[], - datas=[], - hiddenimports=[], - hookspath=[], - hooksconfig={}, - runtime_hooks=[], - excludes=[], - win_no_prefer_redirects=False, - win_private_assemblies=False, - cipher=block_cipher, - noarchive=False, -) -pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) - -exe = EXE( - pyz, - a.scripts, - [], - exclude_binaries=True, - name='port', - debug=False, - bootloader_ignore_signals=False, - strip=False, - upx=True, - console=True, - disable_windowed_traceback=False, - argv_emulation=False, - target_arch=None, - codesign_identity=None, - entitlements_file=None, -) -coll = COLLECT( - exe, - a.binaries, - a.zipfiles, - a.datas, - strip=False, - upx=True, - upx_exclude=[], - name='port', -) diff --git a/大模型/demo.ipynb b/大模型/demo.ipynb new file mode 100644 index 0000000..08380e4 --- /dev/null +++ b/大模型/demo.ipynb @@ -0,0 +1,114 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "fee9c5bf", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "401\n", + "{'code': 'INVALID_API_KEY', 'message': 'Invalid API key'}\n" + ] + } + ], + "source": [ + "import requests\n", + "\n", + "base_url = \"https://console.pivotbak.cfd/v1\"\n", + "api_key = \"sk-e5246cf15eed1c8c1b94f172c95115de3ae5413eaa5b0366810fa7842de6ada1\"\n", + "\n", + "resp = requests.get(\n", + " f\"{base_url}/models\",\n", + " headers={\n", + " \"Authorization\": f\"Bearer {api_key}\",\n", + " \"Content-Type\": \"application/json\",\n", + " },\n", + " timeout=30,\n", + ")\n", + "\n", + "print(resp.status_code)\n", + "print(resp.json())" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "c479e82c", + "metadata": {}, + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'curl_cffi'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[11], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mos\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mcurl_cffi\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m requests\n\u001b[0;32m 4\u001b[0m BASE_URL \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhttps://console.pivotbak.cfd/v1\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 5\u001b[0m API_KEY \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msk-e5246cf15eed1c8c1b94f172c95115de3ae5413eaa5b0366810fa7842de6ada1\u001b[39m\u001b[38;5;124m\"\u001b[39m\n", + "\u001b[1;31mModuleNotFoundError\u001b[0m: No module named 'curl_cffi'" + ] + } + ], + "source": [ + "import os\n", + "from curl_cffi import requests\n", + "\n", + "BASE_URL = \"https://console.pivotbak.cfd/v1\"\n", + "API_KEY = \"sk-e5246cf15eed1c8c1b94f172c95115de3ae5413eaa5b0366810fa7842de6ada1\"\n", + "\n", + "headers = {\n", + " \"Authorization\": f\"Bearer {API_KEY}\",\n", + " \"x-api-key\": API_KEY,\n", + " \"Accept\": \"*/*\",\n", + " \"Content-Type\": \"application/json\",\n", + " \"sec-ch-ua-platform\": '\"Windows\"',\n", + " \"sec-ch-ua\": '\"Not-A.Brand\";v=\"24\", \"Chromium\";v=\"146\"',\n", + " \"sec-ch-ua-mobile\": \"?0\",\n", + " \"x-title\": \"Cherry Studio\",\n", + " \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) CherryStudio/1.9.9 Chrome/146.0.7680.188 Electron/41.2.1 Safari/537.36\",\n", + " \"HTTP-Referer\": \"https://cherry-ai.com\",\n", + " \"Sec-Fetch-Site\": \"cross-site\",\n", + " \"Sec-Fetch-Mode\": \"cors\",\n", + " \"Sec-Fetch-Dest\": \"empty\",\n", + " \"Accept-Encoding\": \"gzip, deflate, br, zstd\",\n", + " \"Accept-Language\": \"zh-CN\",\n", + " \"Priority\": \"u=1, i\",\n", + "}\n", + "\n", + "resp = requests.get(\n", + " f\"{BASE_URL}/models\",\n", + " headers=headers,\n", + " impersonate=\"chrome136\",\n", + " timeout=30,\n", + ")\n", + "\n", + "print(\"status:\", resp.status_code)\n", + "print(resp.text)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/大模型/graph.ipynb b/大模型/graph.ipynb new file mode 100644 index 0000000..a72c445 --- /dev/null +++ b/大模型/graph.ipynb @@ -0,0 +1,208 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "01e26d34", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "用户: 北京今天天气怎么样?\n", + "助手: 您好!很抱歉,我无法获取实时的天气数据,因此无法告诉您北京今天的具体天气情况。\n", + "\n", + "建议您可以通过以下方式查询北京今天的天气:\n", + "\n", + "1. **手机天气应用** - 如墨迹天气、天气通等\n", + "2. **搜索引擎...\n", + "--------------------------------------------------\n", + "\n", + "用户: 帮我写一个 Python 快速排序\n", + "助手: # Python 快速排序实现\n", + "\n", + "## 方法一:原地排序(经典版本)\n", + "\n", + "```python\n", + "def quick_sort(arr, left, right):\n", + " \"\"\"原地快速排序\"\"\"\n", + " ...\n", + "--------------------------------------------------\n", + "\n", + "用户: 你好,介绍一下你自己\n", + "助手: 你好!我是 MiniMax AI,一个由 MiniMax 公司开发的人工智能助手。\n", + "\n", + "我可以帮助你:\n", + "\n", + "- 回答各种问题\n", + "- 进行对话和交流\n", + "- 协助写作、编程、翻译等任务\n", + "- 提供信息和知识\n", + "\n", + "有什...\n", + "--------------------------------------------------\n", + "\n", + "用户: 再见啦!\n", + "助手: 再见!期待下次与你交流。...\n", + "--------------------------------------------------\n" + ] + } + ], + "source": [ + "import os\n", + "from dotenv import load_dotenv\n", + "from langgraph.graph import StateGraph, START, END, MessagesState\n", + "from langchain_openai import ChatOpenAI\n", + "from langchain_core.messages import SystemMessage, HumanMessage\n", + "\n", + "load_dotenv()\n", + "\n", + "# 初始化 LLM\n", + "llm = ChatOpenAI(\n", + " model=\"MiniMax-M2.7-highspeed\",\n", + " openai_api_key=\"sk-8d657b8b7efe0cb6c141a30d9cee97f726efb9b18ea72bb1e8cfb080b42c140d\",\n", + " openai_api_base=\"https://console.pivotbak.cfd/v1\",\n", + " temperature=0.5\n", + ")\n", + "\n", + "# 路由函数\n", + "def classify_intent(state: MessagesState) -> str:\n", + " \"\"\"根据用户意图路由到不同的 Agent\"\"\"\n", + " last_message = state[\"messages\"][-1]\n", + " content = last_message.content.lower()\n", + " \n", + " if \"天气\" in content or \"温度\" in content:\n", + " return \"weather_agent\"\n", + " elif \"代码\" in content or \"编程\" in content:\n", + " return \"code_agent\"\n", + " elif \"再见\" in content or \"退出\" in content:\n", + " return \"farewell\"\n", + " else:\n", + " return \"general_agent\"\n", + "\n", + "# 定义各个 Agent 节点\n", + "def router_node(state: MessagesState) -> dict:\n", + " \"\"\"路由节点:不做处理,只用于触发路由判断\"\"\"\n", + " return {}\n", + "\n", + "def weather_node(state: MessagesState) -> dict:\n", + " \"\"\"天气 Agent\"\"\"\n", + " response = llm.invoke([\n", + " SystemMessage(content=\"你是一个天气助手,友好地回答天气相关问题。如果没有实时数据,可以给出一般性建议。\"),\n", + " *state[\"messages\"]\n", + " ])\n", + " return {\"messages\": [response]}\n", + "\n", + "def code_node(state: MessagesState) -> dict:\n", + " \"\"\"代码 Agent\"\"\"\n", + " response = llm.invoke([\n", + " SystemMessage(content=\"你是一个编程助手,擅长解答代码问题并给出清晰的代码示例。\"),\n", + " *state[\"messages\"]\n", + " ])\n", + " return {\"messages\": [response]}\n", + "\n", + "def general_node(state: MessagesState) -> dict:\n", + " \"\"\"通用 Agent\"\"\"\n", + " response = llm.invoke([\n", + " SystemMessage(content=\"你是一个友善的 AI 助手,可以回答各种问题。\"),\n", + " *state[\"messages\"]\n", + " ])\n", + " return {\"messages\": [response]}\n", + "\n", + "def farewell_node(state: MessagesState) -> dict:\n", + " \"\"\"告别节点\"\"\"\n", + " return {\"messages\": [{\"role\": \"assistant\", \"content\": \"再见!期待下次与你交流。\"}]}\n", + "\n", + "# 构建图\n", + "builder = StateGraph(MessagesState)\n", + "\n", + "# 添加节点\n", + "builder.add_node(\"router\", router_node)\n", + "builder.add_node(\"weather_agent\", weather_node)\n", + "builder.add_node(\"code_agent\", code_node)\n", + "builder.add_node(\"general_agent\", general_node)\n", + "builder.add_node(\"farewell\", farewell_node)\n", + "\n", + "# 添加边\n", + "builder.add_edge(START, \"router\")\n", + "builder.add_conditional_edges(\n", + " \"router\",\n", + " classify_intent,\n", + " {\n", + " \"weather_agent\": \"weather_agent\",\n", + " \"code_agent\": \"code_agent\",\n", + " \"general_agent\": \"general_agent\",\n", + " \"farewell\": \"farewell\",\n", + " }\n", + ")\n", + "\n", + "# 所有 agent 节点处理完后结束\n", + "for node in [\"weather_agent\", \"code_agent\", \"general_agent\", \"farewell\"]:\n", + " builder.add_edge(node, END)\n", + "\n", + "# 编译图\n", + "graph = builder.compile()\n", + "\n", + "# 测试不同意图\n", + "test_inputs = [\n", + " \"北京今天天气怎么样?\",\n", + " \"帮我写一个 Python 快速排序\",\n", + " \"你好,介绍一下你自己\",\n", + " \"再见啦!\"\n", + "]\n", + "\n", + "for user_input in test_inputs:\n", + " print(f\"\\n用户: {user_input}\")\n", + " result = graph.invoke({\"messages\": [HumanMessage(content=user_input)]})\n", + " print(f\"助手: {result['messages'][-1].content[:100]}...\")\n", + " print(\"-\" * 50)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "fbee2a39", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import Image\n", + "Image(graph.get_graph().draw_mermaid_png())" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/大模型/question b/大模型/question new file mode 100644 index 0000000..2ca7f12 --- /dev/null +++ b/大模型/question @@ -0,0 +1,30 @@ +"input": "最近一次考试是什么?", +"input": "最近一次数学考试的成绩情况", +"input": "最近一次英语考试各班考得怎么样", +"input": "最近一次语文考试全年级的平均分", +"input": "最近一次考试是谁发布的?", +"input": "帮我查一下期中相关的成绩批次", +"input": "帮我看看最近一次数学考试的数据结构", +"input": "帮我分析最近一次数学考试各班成绩情况", +"input": "帮我看看最近一次数学考试整个年级的成绩概况", +"input": "帮我分析最近一次数学考试的分数分布情况", +"input": "帮我对比分析最近一次考试语文数学英语三个科目的成绩情况", +"input": "帮我查一下白若耶是哪位学生", +"input": "帮我看看白若耶最近整体成绩怎么样", +"input": "把白若耶最近几次数学成绩列出来", +"input": "白若耶最近10次数学考试的成绩趋势怎么样", +"input": "只分析语文数学英语这三科,帮我看白若耶哪科强哪科弱", +"input": "只看语文数学英语三科,白若耶偏科吗?", +"input": "白若耶最近有没有退步预警?", +"input": "帮我看看白若耶最近一次考试的成绩详情", +"input": "先给我看看趋势分析有哪些可用参数和批次", +"input": "帮我看一班最近几次数学考试的均分走势", +"input": "帮我看最近几次数学考试整体均分变化", +"input": "白若耶这次考试比上次是进步还是退步?", +"input": "白若耶最近一次考试排第几名?", +"input": "最近一次数学考试分段分析有哪些可用配置?", +"input": "帮我看最近一次数学考试各分段人数分布", +"input": "帮我看最近一次数学考试高分段有哪些学生", +"input": "帮我比较最近两次数学考试各分数段人数变化", +"input": "帮我对比分析语文数学英语三个科目在不同批次的成绩情况,按班级分组", +"input": "帮我对比分析白若耶在语文数学英语三个科目的跨批次成绩" \ No newline at end of file diff --git a/大模型/test.js b/大模型/test.js new file mode 100644 index 0000000..1a964e4 --- /dev/null +++ b/大模型/test.js @@ -0,0 +1,184 @@ +const BASE_URL = process.env.LANGGRAPH_URL || "http://192.168.0.100:2026"; +const ASSISTANT_ID = process.env.ASSISTANT_ID || "student_score"; +const QUESTION = process.env.QUESTION || "白若耶最近10次数学考试的成绩趋势怎么样"; + +const CONTEXT = { + team_id: process.env.TEAM_ID || "19", + env: process.env.AGENT_ENV || "dev", +}; + +function parseJson(text) { + try { + return JSON.parse(text); + } catch { + return text; + } +} + +async function createThread() { + const response = await fetch(`${BASE_URL}/threads`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({}), + }); + + if (!response.ok) { + throw new Error(`create thread failed: ${response.status} ${await response.text()}`); + } + + const thread = await response.json(); + return thread.thread_id; +} + +function pickFinalAnswer(data) { + if (!data || typeof data !== "object" || Array.isArray(data)) { + return ""; + } + + const renderAnswer = data.render_answer; + if (renderAnswer && typeof renderAnswer.answer === "string") { + return renderAnswer.answer; + } + + if (typeof data.answer === "string") { + return data.answer; + } + + return ""; +} + +function pickReasoning(data) { + if (!data || typeof data !== "object" || Array.isArray(data)) { + return ""; + } + + const renderAnswer = data.render_answer; + if (renderAnswer && typeof renderAnswer.reasoning === "string") { + return renderAnswer.reasoning; + } + + if (typeof data.reasoning === "string") { + return data.reasoning; + } + + return ""; +} + +function handleEvent(eventName, dataText, answerParts, finalAnswers) { + const data = parseJson(dataText); + + if (eventName === "updates") { + const finalAnswer = pickFinalAnswer(data); + const reasoning = pickReasoning(data); + if (data && typeof data === "object" && !Array.isArray(data)) { + console.log(`\n[updates] ${Object.keys(data).join(", ")}`); + } else { + console.log("\n[updates]", data); + } + if (reasoning) { + console.log("\n[reasoning]"); + console.log(reasoning); + } + if (finalAnswer) { + finalAnswers.push(finalAnswer); + console.log("\n[final.answer]"); + console.log(finalAnswer); + } + return; + } + + if (eventName === "messages") { + const messageChunk = Array.isArray(data) ? data[0] : undefined; + const content = messageChunk && typeof messageChunk.content === "string" ? messageChunk.content : ""; + if (content) { + answerParts.push(content); + process.stdout.write(content); + } + return; + } + + if (eventName) { + console.log(`\n[${eventName}]`, data); + } +} + +async function readSse(response) { + if (!response.body) { + throw new Error("response body is empty"); + } + + const reader = response.body.getReader(); + const decoder = new TextDecoder("utf-8"); + const answerParts = []; + const finalAnswers = []; + let buffer = ""; + + while (true) { + const { value, done } = await reader.read(); + if (done) break; + + buffer += decoder.decode(value, { stream: true }); + const events = buffer.split(/\r?\n\r?\n/); + buffer = events.pop() || ""; + + for (const rawEvent of events) { + let eventName = ""; + const dataLines = []; + + for (const line of rawEvent.split(/\r?\n/)) { + if (line.startsWith("event:")) { + eventName = line.slice("event:".length).trim(); + } else if (line.startsWith("data:")) { + dataLines.push(line.slice("data:".length).trimStart()); + } + } + + handleEvent(eventName, dataLines.join("\n"), answerParts, finalAnswers); + } + } + + if (buffer.trim()) { + handleEvent("", buffer.trim(), answerParts, finalAnswers); + } + + return finalAnswers.at(-1) || answerParts.join(""); +} + +async function main() { + const threadId = await createThread(); + const endpoint = `${BASE_URL}/threads/${threadId}/runs/stream`; + const started = Date.now(); + + console.log("=== LangGraph fetch stream test ==="); + console.log(`base_url: ${BASE_URL}`); + console.log(`assistant_id: ${ASSISTANT_ID}`); + console.log(`thread_id: ${threadId}`); + console.log(""); + + const response = await fetch(endpoint, { + method: "POST", + headers: { + "Content-Type": "application/json", + Accept: "text/event-stream", + }, + body: JSON.stringify({ + assistant_id: ASSISTANT_ID, + input: { question: QUESTION }, + context: CONTEXT, + stream_mode: ["updates", "messages-tuple"], + }), + }); + + if (!response.ok) { + throw new Error(`stream request failed: ${response.status} ${await response.text()}`); + } + + const answer = await readSse(response); + const elapsed = ((Date.now() - started) / 1000).toFixed(2); + console.log(`\n\n=== done: ${elapsed}s, answer length: ${answer.length} ===`); +} + +main().catch((error) => { + console.error(error); + process.exitCode = 1; +}); diff --git a/大模型/test.py b/大模型/test.py new file mode 100644 index 0000000..eb17327 --- /dev/null +++ b/大模型/test.py @@ -0,0 +1,108 @@ +from __future__ import annotations + +import asyncio +import os +import sys +from typing import Any + +from langgraph_sdk import get_client + + +BASE_URL = os.getenv("LANGGRAPH_URL", "http://192.168.0.100:2026") +ASSISTANT_ID = "student_score" +QUESTION = "帮我看看白若耶同学的信息" +CONTEXT = { + "team_id": "19", + "env": "dev", +} + + +if hasattr(sys.stdout, "reconfigure"): + sys.stdout.reconfigure(encoding="utf-8") + + +def event_data(event: Any) -> Any: + if isinstance(event, dict): + return event.get("data") + return getattr(event, "data", None) + + +def event_name(event: Any) -> str: + if isinstance(event, dict): + return str(event.get("event") or "") + return str(getattr(event, "event", "")) + + +def pick_final_answer(data: Any) -> str: + if not isinstance(data, dict): + return "" + render_answer = data.get("render_answer") + if isinstance(render_answer, dict) and isinstance(render_answer.get("answer"), str): + return render_answer["answer"] + answer = data.get("answer") + return answer if isinstance(answer, str) else "" + + +def pick_answer_source(data: Any) -> str: + if not isinstance(data, dict): + return "" + render_answer = data.get("render_answer") + if isinstance(render_answer, dict) and isinstance(render_answer.get("answer_source"), str): + return render_answer["answer_source"] + answer_source = data.get("answer_source") + return answer_source if isinstance(answer_source, str) else "" + + +async def main() -> None: + client = get_client(url=BASE_URL) + thread = await client.threads.create() + answer_parts: list[str] = [] + final_answers: list[str] = [] + + print("=== LangGraph updates + messages-tuple 流式调用 ===", flush=True) + print("[updates] 节点进度;[messages] 最终 Markdown token。", flush=True) + print("", flush=True) + + async for event in client.runs.stream( + thread_id=thread["thread_id"], + assistant_id=ASSISTANT_ID, + input={"question": QUESTION}, + context=CONTEXT, + stream_mode=["updates", "messages-tuple"], + ): + name = event_name(event) + data = event_data(event) + + if name == "updates": + final_answer = pick_final_answer(data) + answer_source = pick_answer_source(data) + if isinstance(data, dict): + print(f"\n[updates] {', '.join(data.keys())}", flush=True) + render_answer = data.get("render_answer") + if isinstance(render_answer, dict): + print(f"[render_answer.keys] {', '.join(render_answer.keys())}", flush=True) + else: + print(f"\n[updates] {data}", flush=True) + if answer_source: + print(f"[answer_source] {answer_source}", flush=True) + if final_answer: + final_answers.append(final_answer) + print("\n[final.answer]", flush=True) + print(final_answer, flush=True) + continue + + if name == "messages": + if isinstance(data, list) and data: + message_chunk = data[0] + content = message_chunk.get("content") if isinstance(message_chunk, dict) else "" + if isinstance(content, str) and content: + answer_parts.append(content) + print(content, end="", flush=True) + continue + + print("\n\n=== 最终 Markdown 长度 ===", flush=True) + print(len(final_answers[-1] if final_answers else "".join(answer_parts)), flush=True) + + +if __name__ == "__main__": + asyncio.run(main()) diff --git a/持续录制音频.py b/持续录制音频.py new file mode 100644 index 0000000..4f87370 --- /dev/null +++ b/持续录制音频.py @@ -0,0 +1,58 @@ +import requests +import time +from datetime import datetime + +url = "http://10.68.66.174/mix.wav" +duration_minutes = 60 # 录制时长(分钟) +output_file = f"recording_{datetime.now().strftime('%Y%m%d_%H%M%S')}.wav" + +duration_seconds = duration_minutes * 60 +print(f"开始录制音频流...") +print(f"录制时长: {duration_minutes} 分钟") +print(f"保存路径: {output_file}") + +start_time = time.time() +chunk_size = 8192 +total_bytes = 0 +last_print_time = 0 + +try: + response = requests.get(url, stream=True, timeout=60) + response.raise_for_status() + + with open(output_file, 'wb') as f: + for chunk in response.iter_content(chunk_size=chunk_size): + if chunk: + f.write(chunk) + total_bytes += len(chunk) + + elapsed = time.time() - start_time + + # 每10秒打印一次进度 + if int(elapsed) - last_print_time >= 10: + last_print_time = int(elapsed) + size_mb = total_bytes / (1024 * 1024) + remaining = int(duration_seconds - elapsed) + print(f"已录制: {int(elapsed)}秒 / {duration_seconds}秒 ({elapsed/duration_seconds*100:.1f}%), 大小: {size_mb:.2f}MB, 剩余: {remaining}秒") + + # 达到指定时长后自动停止 + if elapsed >= duration_seconds: + print(f"\n已达到指定录制时长 {duration_minutes} 分钟") + break + + elapsed = time.time() - start_time + size_mb = total_bytes / (1024 * 1024) + print(f"\n录制完成!") + print(f"总时长: {int(elapsed)}秒 ({elapsed/60:.1f}分钟)") + print(f"文件大小: {size_mb:.2f}MB") + print(f"保存路径: {output_file}") + +except KeyboardInterrupt: + elapsed = time.time() - start_time + size_mb = total_bytes / (1024 * 1024) + print(f"\n录制已手动停止") + print(f"总时长: {int(elapsed)}秒 ({elapsed/60:.1f}分钟)") + print(f"文件大小: {size_mb:.2f}MB") + print(f"保存路径: {output_file}") +except Exception as e: + print(f"错误: {e}") diff --git a/数据库/本地/杂项.ipynb b/数据库/本地/杂项.ipynb index ae9f58c..31b0d09 100644 --- a/数据库/本地/杂项.ipynb +++ b/数据库/本地/杂项.ipynb @@ -20,7 +20,7 @@ "port=3306,\n", "user='root',\n", "password='Abcd@123456',\n", - "database='hongxx_video',\n", + "database='hongxx',\n", "charset='utf8'\n", ")\n", "# 创建游标对象\n", @@ -50,17 +50,17 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 26, "id": "b717043a", "metadata": {}, "outputs": [], "source": [ - "sql = 'select * from video_info'" + "sql = 'select * from sys_user where dept_id=100'\n" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 27, "id": "b4b373b8", "metadata": {}, "outputs": [], @@ -72,46 +72,103 @@ }, { "cell_type": "code", - "execution_count": 8, - "id": "84652b4b", + "execution_count": 28, + "id": "394495d3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[2,\n", + " 3,\n", + " 4,\n", + " 6,\n", + " 24,\n", + " 31,\n", + " 308,\n", + " 909,\n", + " 917,\n", + " 918,\n", + " 1145,\n", + " 3690,\n", + " 3698,\n", + " 3828,\n", + " 3842,\n", + " 3843,\n", + " 3844,\n", + " 3895,\n", + " 3899,\n", + " 3912,\n", + " 3913,\n", + " 3935,\n", + " 3936,\n", + " 3988,\n", + " 5440,\n", + " 5492,\n", + " 7696,\n", + " 7713,\n", + " 7714,\n", + " 7723,\n", + " 7728,\n", + " 2059454179031199746]" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[i[\"user_id\"] for i in result]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "325e4664", "metadata": {}, "outputs": [], "source": [ - "result\n", - "# http://192.168.0.244:88/record/original-files/video/522e4c55fc804decafdd0a62e5a1bf74.mp4\n", "for item in result:\n", - " if item[\"video_url\"].startswith(\"http://192.168.0.244:88\"):\n", - " video_url = item[\"video_url\"].replace(\"http://192.168.0.244:88\",\"/mp4\")\n", - " sql = f\"update video_info set video_url='{video_url}' where id={item['id']}\"\n", - " cursor.execute(sql)" + " userid = item[\"user_id\"]\n", + " \n", + " sql2 = f\"update sys_user set dept_id=100, team_user_type ='BACKEND' where user_id={userid}\"\n", + " cursor.execute(sql2)\n", + "connection.commit()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "f62b4e7d", + "metadata": {}, + "outputs": [], + "source": [ + "for item in result:\n", + " userid = item[\"user_id\"]\n", + " sql2 = f\"update sys_user_dept set dept_id=100, person_type='hx_sys' where user_id={userid}\"\n", + " cursor.execute(sql2)\n", + "connection.commit()\n" ] }, { "cell_type": "code", "execution_count": null, - "id": "0b4381f4", + "id": "7dcf47b8", "metadata": {}, - "outputs": [ - { - "ename": "", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[1;31m在当前单元格或上一个单元格中执行代码时 Kernel 崩溃。\n", - "\u001b[1;31m请查看单元格中的代码,以确定故障的可能原因。\n", - "\u001b[1;31m单击此处了解详细信息。\n", - "\u001b[1;31m有关更多详细信息,请查看 Jupyter log。" - ] - } - ], + "outputs": [], "source": [ + "for item in result:\n", + " userid = item[\"user_id\"]\n", + " sql2 = f\"update sys_user_role set dept_id=100 where user_id={userid}\"\n", + " cursor.execute(sql2)\n", "connection.commit()" ] } ], "metadata": { "kernelspec": { - "display_name": "base", + "display_name": "Python 3", "language": "python", "name": "python3" }, diff --git a/数据库/本地/测试数据库.ipynb b/数据库/本地/测试数据库.ipynb new file mode 100644 index 0000000..a1ddcba --- /dev/null +++ b/数据库/本地/测试数据库.ipynb @@ -0,0 +1,116 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "id": "42e17205", + "metadata": {}, + "outputs": [], + "source": [ + "# %%\n", + "import pymysql\n", + "\n", + "# %%\n", + "\n", + "# 创建数据库连接\n", + "connection = pymysql.connect(\n", + "host='192.168.0.244',\n", + "port=3300,\n", + "user='root',\n", + "password='hxyd1109',\n", + "database='school_server',\n", + "charset='utf8'\n", + ")\n", + "cursor = connection.cursor()\n", + "# %%\n", + "def create_table(cursor,result):\n", + " \n", + " data = []\n", + " for i in result:\n", + " list_list = list(i)\n", + " des=cursor.description # 获取表详情,字段名,长度,属性等\n", + " t = \",\".join([item[0] for item in des])\n", + " table_head = t.split(',') # # 查询表列名 用,分割\n", + " \n", + " dict_result = dict(zip(table_head, list_list)) # 打包为元组的列表 再转换为字典\n", + " data.append(dict_result) # 将字典添加到list_result中\n", + " return data\n", + "\n", + "# %%\n", + "\n", + "# %%\n", + "\n", + "# %%\n", + "sql1 = \"select * from teacher where id=828\"\n", + "cursor.execute(sql1)\n", + "result=cursor.fetchall()\n", + "table_app = create_table(cursor,result)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "54db4116", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'id': 828,\n", + " 'tea_name': '彭兰英',\n", + " 'sex': 2,\n", + " 'phone': '15198039323',\n", + " 'type': 6,\n", + " 'grade_id': None,\n", + " 'class_id': None,\n", + " 'user_name': 'ptszxbr9023',\n", + " 'team_id': '110',\n", + " 'pid': None,\n", + " 'serial_no': '1336827486',\n", + " 'openid': None,\n", + " 'tea_no': 'ptszxbr9023',\n", + " 'wx_phone': '15198039323',\n", + " 'user_id': None,\n", + " 'department_id': None,\n", + " 'zt_teacher_uuid': None,\n", + " 'hire': '职工',\n", + " 'power': '门卫安保',\n", + " 'class_type_name': None,\n", + " 'hire_id': 98,\n", + " 'flag': None,\n", + " 'state': 1,\n", + " 'sync_source': 'local'}]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "table_app" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/数据库/本地/测试数据库.py b/数据库/本地/测试数据库.py new file mode 100644 index 0000000..ff5efa1 --- /dev/null +++ b/数据库/本地/测试数据库.py @@ -0,0 +1,46 @@ +import pymysql +import random +import datetime +import random +# 创建数据库连接 +connection = pymysql.connect( +host='192.168.0.244', +port=3300, +user='root', +password='hxyd1109', +database='school_server', +charset='utf8' +) +# 创建游标对象 +cursor = connection.cursor() +orgianl = {'id': 828, + 'tea_name': '彭兰英', + 'sex': 2, + 'phone': '15198039323', + 'type': 6, + 'grade_id': None, + 'class_id': None, + 'user_name': 'ptszxbr9023', + 'team_id': '110', + 'pid': None, + 'serial_no': '1336827486', + 'openid': None, + 'tea_no': 'ptszxbr9023', + 'wx_phone': '15198039323', + 'user_id': None, + 'department_id': None, + 'zt_teacher_uuid': None, + 'hire': '职工', + 'power': '门卫安保', + 'class_type_name': None, + 'hire_id': 98, + 'flag': None, + 'state': 1, + 'sync_source': 'local'} +sql = f""" +UPDATE `school_server`.`teacher` SET `tea_name` = '彭兰英' WHERE `id` = 828; +""" +cursor.execute(sql) +connection.commit() +cursor.close() +connection.close() diff --git a/数据库/本地/课程表时间加7.ipynb b/数据库/本地/课程表时间加7.ipynb index 0fdaa6c..6cd8d27 100644 --- a/数据库/本地/课程表时间加7.ipynb +++ b/数据库/本地/课程表时间加7.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 4, + "execution_count": 1, "id": "b82fd271", "metadata": {}, "outputs": [], @@ -27,7 +27,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 2, "id": "759c550a", "metadata": {}, "outputs": [], diff --git a/数据库/线上/Untitled-1.py b/数据库/线上/Untitled-1.py new file mode 100644 index 0000000..ce0b806 --- /dev/null +++ b/数据库/线上/Untitled-1.py @@ -0,0 +1,206 @@ +# %% +import pymysql +import pandas as pd +import snowflake +import random + +# %% + +# 创建数据库连接 +connection = pymysql.connect( +host='100.64.0.36', +user='root', +password='@HXYD1109mysql', +database='school_server', +charset='utf8' +) +# 创建游标对象 +cursor = connection.cursor() +sql="select id,stu_name from student where team_id=19" +cursor.execute(sql) +result=cursor.fetchall() + +# %% +def create_table(cursor,result): + + data = [] + for i in result: + list_list = list(i) + des=cursor.description # 获取表详情,字段名,长度,属性等 + t = ",".join([item[0] for item in des]) + table_head = t.split(',') # # 查询表列名 用,分割 + + dict_result = dict(zip(table_head, list_list)) # 打包为元组的列表 再转换为字典 + data.append(dict_result) # 将字典添加到list_result中 + return data + +# %% +table = create_table(cursor,result) + +# %% + +# %% +sql1 = "select user_name from account" +cursor.execute(sql1) +result=cursor.fetchall() +table_app = create_table(cursor,result) + +# %% + + +# %% +from requests import get,post +import pandas as pd +import time +from concurrent.futures import ThreadPoolExecutor, as_completed +import threading + +# %% + +# 常用弱密码列表 +WEAK_PASSWORDS = [ + "123456a", + "123456", + "admin123", + "password", + "admin@123", + "root123", + "12345678", + "123456789", + "888888", + "666666", + "123123", + "111111", + "qwerty", + "abc123", + "1q2w3e", + "1qaz2wsx", + "a123456", + "Aa123456", + "@123456", + "Abcd1234", + "Abcd@123", + "admin", + "123321", + "000000", + "1234", + "12345", + "test123", + "pass123", + "1234567", + "1234567890", +] + +BASE_URL = "http://band.hxzhxy.cn" + +# 先用一个已知弱密码账号验证接口是否通畅 +print("=" * 50) +print("验证接口是否通畅...") +test_param = { + "username": "zhongwei", + "password": "123456a", + "client_id": "client", + "grant_type": "password", + "client_secret": "123456", +} +try: + test_resp = get(url=f"{BASE_URL}/oauth/token", params=test_param, timeout=10).json() + if "access_token" in test_resp: + print("接口通畅,已获取测试 token") + else: + print(f"接口返回: {test_resp}") +except Exception as e: + print(f"接口请求异常: {e}") + +# %% + +# 线程安全的检测结果 +weak_accounts = [] +total_attempts = [0] +lock = threading.Lock() + +def try_account_password(account_idx, username): + """尝试单个账号的所有弱密码,返回找到的弱密码或 None""" + for pwd in WEAK_PASSWORDS: + param = { + "username": username, + "password": pwd, + "client_id": "client", + "grant_type": "password", + "client_secret": "123456", + } + with lock: + total_attempts[0] += 1 + attempt = total_attempts[0] + + try: + resp = get(url=f"{BASE_URL}/oauth/token", params=param, timeout=10) + data = resp.json() + + if "access_token" in data: + print(f"[弱密码] 账号#{account_idx}: {username} | 密码: {pwd} | token: {data['access_token'][:20]}...") + return { + "username": username, + "password": pwd, + "token": data["access_token"], + } + except Exception as e: + print(f" [异常] #{account_idx} {username} / {pwd} -> {e}") + + return None + +print("=" * 50) +print(f"开始检测 {len(table_app)} 个账号的弱密码...") +print(f"弱密码列表 ({len(WEAK_PASSWORDS)} 个): {WEAK_PASSWORDS}") +print(f"线程数: 3") +print("-" * 50) + +start_time = time.time() +completed = [0] + +with ThreadPoolExecutor(max_workers=3) as executor: + futures = {} + for i, account in enumerate(table_app, 1): + username = account['user_name'] + future = executor.submit(try_account_password, i, username) + futures[future] = i + + for future in as_completed(futures): + result = future.result() + with lock: + completed[0] += 1 + if completed[0] % 10 == 0: + elapsed = time.time() - start_time + print(f"[进度] 已检测 {completed[0]}/{len(table_app)} | 用时 {elapsed:.1f}s | 发现弱密码: {len(weak_accounts)} 个") + + if result: + with lock: + weak_accounts.append(result) + +elapsed_total = time.time() - start_time + +# %% + +# 输出检测结果 +print("=" * 50) +print("检测完成!") +print(f"累计尝试 {total_attempts[0]} 次请求") +print(f"耗时: {elapsed_total:.1f} 秒") +print(f"发现 {len(weak_accounts)} 个弱密码账号:") +print("=" * 50) + +if weak_accounts: + df_weak = pd.DataFrame(weak_accounts) + # token 太长,截断显示 + df_weak["token_preview"] = df_weak["token"].str[:30] + "..." + df_display = df_weak[["username", "password", "token_preview"]] + print(df_display.to_string(index=False)) + + # 可选:导出到 Excel + # df_weak.to_excel("weak_password_accounts.xlsx", index=False) + # print("\n结果已导出到 weak_password_accounts.xlsx") +else: + print("未发现弱密码账号") + + + diff --git a/数据库/线上/demo.py b/数据库/线上/demo.py new file mode 100644 index 0000000..bdda467 --- /dev/null +++ b/数据库/线上/demo.py @@ -0,0 +1,2108 @@ +import pandas as pd +data = [ + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 117, + "mac": "98CC4D1245B2", + "areaName": "金沙校区", + "switchName": "514空调", + "psSum": 0, + "classRoom": "514", + "id": 256, + "TYPE": None, + "remoteState": 0, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011244", + "modelState": 1, + "mainType": "教室", + "nno": 2, + "switchRoomId": 78, + "airType": 0, + "areaId": 9, + "tierId": 20, + "regionId": 25, + "tierName": "5楼", + "teamId": 19, + "airState": 1, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 147, + "mac": "98CC4D1245B2", + "areaName": "金沙校区", + "switchName": "516空调", + "psSum": 0, + "classRoom": "516", + "id": 255, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20010682", + "modelState": 1, + "mainType": "教室", + "nno": 1, + "switchRoomId": 79, + "airType": 0, + "areaId": 9, + "tierId": 20, + "regionId": 25, + "tierName": "5楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 60, + "mac": "98CC4D1245B2", + "areaName": "金沙校区", + "switchName": "515空调", + "psSum": 0, + "classRoom": "515", + "id": 257, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011252", + "modelState": 1, + "mainType": "教室", + "nno": 3, + "switchRoomId": 80, + "airType": 0, + "areaId": 9, + "tierId": 20, + "regionId": 25, + "tierName": "5楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 63, + "mac": "98CC4D1245B2", + "areaName": "金沙校区", + "switchName": "520空调", + "psSum": 0, + "classRoom": "520", + "id": 260, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011242", + "modelState": 1, + "mainType": "教室", + "nno": 6, + "switchRoomId": 82, + "airType": 0, + "areaId": 9, + "tierId": 20, + "regionId": 25, + "tierName": "5楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 61, + "mac": "98CC4D1245B2", + "areaName": "金沙校区", + "switchName": "518空调", + "psSum": 0, + "classRoom": "518", + "id": 259, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011280", + "modelState": 1, + "mainType": "教室", + "nno": 5, + "switchRoomId": 83, + "airType": 0, + "areaId": 9, + "tierId": 20, + "regionId": 25, + "tierName": "5楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 12, + "mac": "98CC4D1245B2", + "areaName": "金沙校区", + "switchName": "521空调", + "psSum": 0, + "classRoom": "521", + "id": 261, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011272", + "modelState": 1, + "mainType": "教室", + "nno": 7, + "switchRoomId": 84, + "airType": 0, + "areaId": 9, + "tierId": 20, + "regionId": 25, + "tierName": "5楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 62, + "mac": "98CC4D1245B2", + "areaName": "金沙校区", + "switchName": "519空调", + "psSum": 0, + "classRoom": "519", + "id": 262, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011243", + "modelState": 1, + "mainType": "教室", + "nno": 8, + "switchRoomId": 85, + "airType": 0, + "areaId": 9, + "tierId": 20, + "regionId": 25, + "tierName": "5楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 64, + "mac": "98CC4D1245B2", + "areaName": "金沙校区", + "switchName": "522空调", + "psSum": 0, + "classRoom": "522", + "id": 263, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011271", + "modelState": 1, + "mainType": "教室", + "nno": 9, + "switchRoomId": 86, + "airType": 0, + "areaId": 9, + "tierId": 20, + "regionId": 25, + "tierName": "5楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 65, + "mac": "98CC4D1245B2", + "areaName": "金沙校区", + "switchName": "523空调", + "psSum": 0, + "classRoom": "523", + "id": 264, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011233", + "modelState": 1, + "mainType": "教室", + "nno": 10, + "switchRoomId": 87, + "airType": 0, + "areaId": 9, + "tierId": 20, + "regionId": 25, + "tierName": "5楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 138, + "mac": "98CC4D1245B2", + "areaName": "金沙校区", + "switchName": "524前空调", + "psSum": 0, + "classRoom": "524", + "id": 265, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011292", + "modelState": 1, + "mainType": "教室", + "nno": 11, + "switchRoomId": 129, + "airType": 0, + "areaId": 9, + "tierId": 20, + "regionId": 25, + "tierName": "5楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 2, + "mac": "98CC4D1233C4", + "areaName": "金沙校区", + "switchName": "401前空调", + "psSum": 0, + "classRoom": "401", + "id": 297, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011264", + "modelState": 1, + "mainType": "教室", + "nno": 1, + "switchRoomId": 132, + "airType": 0, + "areaId": 9, + "tierId": 13, + "regionId": 16, + "tierName": "4楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 67, + "mac": "98CC4D1233C4", + "areaName": "金沙校区", + "switchName": "402后空调", + "psSum": 0, + "classRoom": "402", + "id": 298, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20010686", + "modelState": 1, + "mainType": "教室", + "nno": 2, + "switchRoomId": 133, + "airType": 0, + "areaId": 9, + "tierId": 13, + "regionId": 16, + "tierName": "4楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 43, + "mac": "98CC4D1233C4", + "areaName": "金沙校区", + "switchName": "402前空调", + "psSum": 0, + "classRoom": "402", + "id": 299, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011245", + "modelState": 1, + "mainType": "教室", + "nno": 3, + "switchRoomId": 134, + "airType": 0, + "areaId": 9, + "tierId": 13, + "regionId": 16, + "tierName": "4楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 46, + "mac": "98CC4D1233C4", + "areaName": "金沙校区", + "switchName": "403空调", + "psSum": 0, + "classRoom": "403", + "id": 301, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20010696", + "modelState": 1, + "mainType": "教室", + "nno": 5, + "switchRoomId": 136, + "airType": 0, + "areaId": 9, + "tierId": 13, + "regionId": 16, + "tierName": "4楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 197, + "mac": "98CC4D1233C4", + "areaName": "金沙校区", + "switchName": "406空调", + "psSum": 0, + "classRoom": "406", + "id": 304, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011263", + "modelState": 1, + "mainType": "教室", + "nno": 8, + "switchRoomId": 139, + "airType": 0, + "areaId": 9, + "tierId": 13, + "regionId": 16, + "tierName": "4楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 73, + "mac": "98CC4D1233C4", + "areaName": "金沙校区", + "switchName": "410空调", + "psSum": 0, + "classRoom": "410", + "id": 309, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011231", + "modelState": 1, + "mainType": "教室", + "nno": 13, + "switchRoomId": 144, + "airType": 0, + "areaId": 9, + "tierId": 13, + "regionId": 16, + "tierName": "4楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 74, + "mac": "98CC4D1233C4", + "areaName": "金沙校区", + "switchName": "411空调", + "psSum": 0, + "classRoom": "411", + "id": 311, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011229", + "modelState": 1, + "mainType": "教室", + "nno": 15, + "switchRoomId": 146, + "airType": 0, + "areaId": 9, + "tierId": 13, + "regionId": 16, + "tierName": "4楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 77, + "mac": "98CC4D1233C4", + "areaName": "金沙校区", + "switchName": "413空调", + "psSum": 0, + "classRoom": "413", + "id": 312, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011293", + "modelState": 1, + "mainType": "教室", + "nno": 16, + "switchRoomId": 147, + "airType": 0, + "areaId": 9, + "tierId": 13, + "regionId": 16, + "tierName": "4楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 25, + "mac": "98CC4D12463C", + "areaName": "金沙校区", + "switchName": "302空调", + "psSum": 0, + "classRoom": "302", + "id": 317, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011278", + "modelState": 1, + "mainType": "教室", + "nno": 1, + "switchRoomId": 180, + "airType": 0, + "areaId": 9, + "tierId": 22, + "regionId": 28, + "tierName": "3楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 24, + "mac": "98CC4D12463C", + "areaName": "金沙校区", + "switchName": "301空调", + "psSum": 0, + "classRoom": "301", + "id": 318, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011296", + "modelState": 1, + "mainType": "教室", + "nno": 2, + "switchRoomId": 184, + "airType": 0, + "areaId": 9, + "tierId": 22, + "regionId": 28, + "tierName": "3楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 26, + "mac": "98CC4D12463C", + "areaName": "金沙校区", + "switchName": "303空调", + "psSum": 0, + "classRoom": "303", + "id": 319, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011299", + "modelState": 1, + "mainType": "教室", + "nno": 3, + "switchRoomId": 185, + "airType": 0, + "areaId": 9, + "tierId": 22, + "regionId": 28, + "tierName": "3楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 28, + "mac": "98CC4D12463C", + "areaName": "金沙校区", + "switchName": "306空调", + "psSum": 0, + "classRoom": "306", + "id": 321, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011273", + "modelState": 1, + "mainType": "教室", + "nno": 5, + "switchRoomId": 187, + "airType": 0, + "areaId": 9, + "tierId": 22, + "regionId": 28, + "tierName": "3楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 29, + "mac": "98CC4D12463C", + "areaName": "金沙校区", + "switchName": "307空调", + "psSum": 0, + "classRoom": "307", + "id": 322, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011232", + "modelState": 1, + "mainType": "教室", + "nno": 6, + "switchRoomId": 188, + "airType": 0, + "areaId": 9, + "tierId": 22, + "regionId": 28, + "tierName": "3楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 31, + "mac": "98CC4D12463C", + "areaName": "金沙校区", + "switchName": "310空调", + "psSum": 0, + "classRoom": "310", + "id": 324, + "TYPE": None, + "remoteState": 0, + "sizeType": None, + "dongName": "主楼", + "airNo": "20010690", + "modelState": 1, + "mainType": "教室", + "nno": 8, + "switchRoomId": 190, + "airType": 0, + "areaId": 9, + "tierId": 22, + "regionId": 28, + "tierName": "3楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 182, + "mac": "98CC4D12463C", + "areaName": "金沙校区", + "switchName": "311空调", + "psSum": 0, + "classRoom": "311", + "id": 325, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011253", + "modelState": 1, + "mainType": "教室", + "nno": 9, + "switchRoomId": 191, + "airType": 0, + "areaId": 9, + "tierId": 22, + "regionId": 28, + "tierName": "3楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 33, + "mac": "98CC4D12463C", + "areaName": "金沙校区", + "switchName": "313空调", + "psSum": 0, + "classRoom": "313", + "id": 326, + "TYPE": None, + "remoteState": 0, + "sizeType": None, + "dongName": "主楼", + "airNo": "20010680", + "modelState": 1, + "mainType": "教室", + "nno": 10, + "switchRoomId": 192, + "airType": 0, + "areaId": 9, + "tierId": 22, + "regionId": 28, + "tierName": "3楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 34, + "mac": "98CC4D1248C6", + "areaName": "金沙校区", + "switchName": "314空调", + "psSum": 0, + "classRoom": "314", + "id": 343, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011241", + "modelState": 1, + "mainType": "教室", + "nno": 1, + "switchRoomId": 193, + "airType": 0, + "areaId": 9, + "tierId": 22, + "regionId": 29, + "tierName": "3楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 35, + "mac": "98CC4D1248C6", + "areaName": "金沙校区", + "switchName": "316空调", + "psSum": 0, + "classRoom": "316", + "id": 344, + "TYPE": None, + "remoteState": 0, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011251", + "modelState": 1, + "mainType": "教室", + "nno": 2, + "switchRoomId": 194, + "airType": 0, + "areaId": 9, + "tierId": 22, + "regionId": 29, + "tierName": "3楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 36, + "mac": "98CC4D1248C6", + "areaName": "金沙校区", + "switchName": "315空调", + "psSum": 0, + "classRoom": "315", + "id": 345, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011288", + "modelState": 1, + "mainType": "教室", + "nno": 3, + "switchRoomId": 195, + "airType": 0, + "areaId": 9, + "tierId": 22, + "regionId": 29, + "tierName": "3楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 37, + "mac": "98CC4D1248C6", + "areaName": "金沙校区", + "switchName": "317空调", + "psSum": 0, + "classRoom": "317", + "id": 346, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011270", + "modelState": 1, + "mainType": "教室", + "nno": 4, + "switchRoomId": 196, + "airType": 0, + "areaId": 9, + "tierId": 22, + "regionId": 29, + "tierName": "3楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 38, + "mac": "98CC4D1248C6", + "areaName": "金沙校区", + "switchName": "319空调", + "psSum": 0, + "classRoom": "319", + "id": 347, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011287", + "modelState": 1, + "mainType": "教室", + "nno": 5, + "switchRoomId": 197, + "airType": 0, + "areaId": 9, + "tierId": 22, + "regionId": 29, + "tierName": "3楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 183, + "mac": "98CC4D1248C6", + "areaName": "金沙校区", + "switchName": "320空调", + "psSum": 0, + "classRoom": "320", + "id": 348, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011283", + "modelState": 1, + "mainType": "教室", + "nno": 6, + "switchRoomId": 198, + "airType": 0, + "areaId": 9, + "tierId": 22, + "regionId": 29, + "tierName": "3楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 140, + "mac": "98CC4D1248C6", + "areaName": "金沙校区", + "switchName": "322空调", + "psSum": 0, + "classRoom": "322", + "id": 350, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011259", + "modelState": 1, + "mainType": "教室", + "nno": 8, + "switchRoomId": 200, + "airType": 0, + "areaId": 9, + "tierId": 22, + "regionId": 29, + "tierName": "3楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 141, + "mac": "98CC4D1248C6", + "areaName": "金沙校区", + "switchName": "323空调", + "psSum": 0, + "classRoom": "323", + "id": 349, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011266", + "modelState": 1, + "mainType": "教室", + "nno": 7, + "switchRoomId": 201, + "airType": 0, + "areaId": 9, + "tierId": 22, + "regionId": 29, + "tierName": "3楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 142, + "mac": "98CC4D1248C6", + "areaName": "金沙校区", + "switchName": "324空调", + "psSum": 0, + "classRoom": "324", + "id": 351, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20010683", + "modelState": 1, + "mainType": "教室", + "nno": 9, + "switchRoomId": 202, + "airType": 0, + "areaId": 9, + "tierId": 22, + "regionId": 29, + "tierName": "3楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 108, + "mac": "98CC4D1245F4", + "areaName": "金沙校区", + "switchName": "213空调", + "psSum": 0, + "classRoom": "213", + "id": 462, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011295", + "modelState": 1, + "mainType": "教室", + "nno": 11, + "switchRoomId": 294, + "airType": 0, + "areaId": 9, + "tierId": 23, + "regionId": 30, + "tierName": "2楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 189, + "mac": "98CC4D12463C", + "areaName": "金沙校区", + "switchName": "305空调", + "psSum": 0, + "classRoom": "305", + "id": 320, + "TYPE": "", + "remoteState": 1, + "sizeType": 1, + "dongName": "主楼", + "airNo": "20011300", + "modelState": 1, + "mainType": "教室", + "nno": 4, + "switchRoomId": 432, + "airType": 0, + "areaId": 9, + "tierId": 22, + "regionId": 28, + "tierName": "3楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 193, + "mac": "98CC4D12463C", + "areaName": "金沙校区", + "switchName": "309空调", + "psSum": 0, + "classRoom": "309", + "id": 323, + "TYPE": "", + "remoteState": 1, + "sizeType": 1, + "dongName": "主楼", + "airNo": "20011265", + "modelState": 1, + "mainType": "教室", + "nno": 7, + "switchRoomId": 433, + "airType": 0, + "areaId": 9, + "tierId": 22, + "regionId": 28, + "tierName": "3楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 192, + "mac": "98CC4D12463C", + "areaName": "金沙校区", + "switchName": "308空调", + "psSum": 0, + "classRoom": "308", + "id": 525, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011261", + "modelState": 1, + "mainType": "教室", + "nno": 12, + "switchRoomId": 435, + "airType": 0, + "areaId": 9, + "tierId": 22, + "regionId": 28, + "tierName": "3楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 191, + "mac": "98CC4D12463C", + "areaName": "金沙校区", + "switchName": "304空调", + "psSum": 0, + "classRoom": "304", + "id": 526, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011237", + "modelState": 1, + "mainType": "教室", + "nno": 13, + "switchRoomId": 436, + "airType": 0, + "areaId": 9, + "tierId": 22, + "regionId": 28, + "tierName": "3楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 194, + "mac": "98CC4D1233C4", + "areaName": "金沙校区", + "switchName": "404空调", + "psSum": 0, + "classRoom": "404", + "id": 300, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20010695", + "modelState": 1, + "mainType": "教室", + "nno": 4, + "switchRoomId": 450, + "airType": 0, + "areaId": 9, + "tierId": 13, + "regionId": 16, + "tierName": "4楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 198, + "mac": "98CC4D1233C4", + "areaName": "金沙校区", + "switchName": "409空调", + "psSum": 0, + "classRoom": "409", + "id": 308, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011277", + "modelState": 1, + "mainType": "教室", + "nno": 12, + "switchRoomId": 452, + "airType": 0, + "areaId": 9, + "tierId": 13, + "regionId": 16, + "tierName": "4楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 199, + "mac": "98CC4D1233C4", + "areaName": "金沙校区", + "switchName": "412空调", + "psSum": 0, + "classRoom": "412", + "id": 315, + "TYPE": None, + "remoteState": 0, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011227", + "modelState": 1, + "mainType": "教室", + "nno": 19, + "switchRoomId": 454, + "airType": 0, + "areaId": 9, + "tierId": 13, + "regionId": 16, + "tierName": "4楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 195, + "mac": "98CC4D1233C4", + "areaName": "金沙校区", + "switchName": "401后空调", + "psSum": 0, + "classRoom": "401", + "id": 529, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011286", + "modelState": 1, + "mainType": "教室", + "nno": 21, + "switchRoomId": 455, + "airType": 0, + "areaId": 9, + "tierId": 13, + "regionId": 16, + "tierName": "4楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 196, + "mac": "98CC4D1233C4", + "areaName": "金沙校区", + "switchName": "405空调", + "psSum": 0, + "classRoom": "405", + "id": 530, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011249", + "modelState": 1, + "mainType": "教室", + "nno": 22, + "switchRoomId": 456, + "airType": 0, + "areaId": 9, + "tierId": 13, + "regionId": 16, + "tierName": "4楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 208, + "mac": "98CC4D124410", + "areaName": "金沙校区", + "switchName": "424前空调", + "psSum": 0, + "classRoom": "424", + "id": 392, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011248", + "modelState": 1, + "mainType": "教室", + "nno": 1, + "switchRoomId": 475, + "airType": 0, + "areaId": 9, + "tierId": 13, + "regionId": 15, + "tierName": "4楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 206, + "mac": "98CC4D124410", + "areaName": "金沙校区", + "switchName": "422空调", + "psSum": 0, + "classRoom": "422", + "id": 393, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011285", + "modelState": 1, + "mainType": "教室", + "nno": 2, + "switchRoomId": 476, + "airType": 0, + "areaId": 9, + "tierId": 13, + "regionId": 15, + "tierName": "4楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 200, + "mac": "98CC4D124410", + "areaName": "金沙校区", + "switchName": "414空调", + "psSum": 0, + "classRoom": "414", + "id": 394, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20010698", + "modelState": 1, + "mainType": "教室", + "nno": 3, + "switchRoomId": 477, + "airType": 0, + "areaId": 9, + "tierId": 13, + "regionId": 15, + "tierName": "4楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 202, + "mac": "98CC4D124410", + "areaName": "金沙校区", + "switchName": "416空调", + "psSum": 0, + "classRoom": "416", + "id": 395, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20010692", + "modelState": 1, + "mainType": "教室", + "nno": 4, + "switchRoomId": 478, + "airType": 0, + "areaId": 9, + "tierId": 13, + "regionId": 15, + "tierName": "4楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 207, + "mac": "98CC4D124410", + "areaName": "金沙校区", + "switchName": "423空调", + "psSum": 0, + "classRoom": "423", + "id": 396, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011279", + "modelState": 1, + "mainType": "教室", + "nno": 5, + "switchRoomId": 479, + "airType": 0, + "areaId": 9, + "tierId": 13, + "regionId": 15, + "tierName": "4楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 204, + "mac": "98CC4D124410", + "areaName": "金沙校区", + "switchName": "418空调", + "psSum": 0, + "classRoom": "418", + "id": 399, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011255", + "modelState": 1, + "mainType": "教室", + "nno": 8, + "switchRoomId": 481, + "airType": 0, + "areaId": 9, + "tierId": 13, + "regionId": 15, + "tierName": "4楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 205, + "mac": "98CC4D124410", + "areaName": "金沙校区", + "switchName": "420空调", + "psSum": 0, + "classRoom": "420", + "id": 400, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011267", + "modelState": 1, + "mainType": "教室", + "nno": 9, + "switchRoomId": 482, + "airType": 0, + "areaId": 9, + "tierId": 13, + "regionId": 15, + "tierName": "4楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 203, + "mac": "98CC4D124410", + "areaName": "金沙校区", + "switchName": "417、427空调", + "psSum": 0, + "classRoom": "417", + "id": 401, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20010685", + "modelState": 1, + "mainType": "教室", + "nno": 10, + "switchRoomId": 483, + "airType": 0, + "areaId": 9, + "tierId": 13, + "regionId": 15, + "tierName": "4楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 270, + "mac": "98CC4D124410", + "areaName": "金沙校区", + "switchName": "417、427空调", + "psSum": 0, + "classRoom": "427", + "id": 401, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "250800000020", + "modelState": 1, + "mainType": "教室", + "nno": 10, + "switchRoomId": 484, + "airType": 1, + "areaId": 9, + "tierId": 13, + "regionId": 15, + "tierName": "4楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 201, + "mac": "98CC4D124410", + "areaName": "金沙校区", + "switchName": "415空调", + "psSum": 0, + "classRoom": "415", + "id": 402, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20010697", + "modelState": 1, + "mainType": "教室", + "nno": 11, + "switchRoomId": 485, + "airType": 0, + "areaId": 9, + "tierId": 13, + "regionId": 15, + "tierName": "4楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 210, + "mac": "98CC4D124410", + "areaName": "金沙校区", + "switchName": "425空调", + "psSum": 0, + "classRoom": "425", + "id": 403, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011276", + "modelState": 1, + "mainType": "教室", + "nno": 12, + "switchRoomId": 486, + "airType": 0, + "areaId": 9, + "tierId": 13, + "regionId": 15, + "tierName": "4楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 211, + "mac": "98CC4D124410", + "areaName": "金沙校区", + "switchName": "426空调", + "psSum": 0, + "classRoom": "426", + "id": 404, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011256", + "modelState": 1, + "mainType": "教室", + "nno": 13, + "switchRoomId": 487, + "airType": 0, + "areaId": 9, + "tierId": 13, + "regionId": 15, + "tierName": "4楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 209, + "mac": "98CC4D124410", + "areaName": "金沙校区", + "switchName": "424后空调", + "psSum": 0, + "classRoom": "424", + "id": 405, + "TYPE": None, + "remoteState": 0, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011238", + "modelState": 1, + "mainType": "教室", + "nno": 14, + "switchRoomId": 488, + "airType": 0, + "areaId": 9, + "tierId": 13, + "regionId": 15, + "tierName": "4楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 212, + "mac": "98CC4D124684", + "areaName": "金沙校区", + "switchName": "501前空调", + "psSum": 0, + "classRoom": "501", + "id": 532, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011236", + "modelState": 1, + "mainType": "教室", + "nno": 1, + "switchRoomId": 496, + "airType": 0, + "areaId": 9, + "tierId": 20, + "regionId": 26, + "tierName": "5楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 213, + "mac": "98CC4D124684", + "areaName": "金沙校区", + "switchName": "501后空调", + "psSum": 0, + "classRoom": "501", + "id": 533, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011291", + "modelState": 1, + "mainType": "教室", + "nno": 2, + "switchRoomId": 497, + "airType": 0, + "areaId": 9, + "tierId": 20, + "regionId": 26, + "tierName": "5楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 214, + "mac": "98CC4D124684", + "areaName": "金沙校区", + "switchName": "502后空调", + "psSum": 0, + "classRoom": "502", + "id": 534, + "TYPE": None, + "remoteState": 0, + "sizeType": 1, + "dongName": "主楼", + "airNo": "20010687", + "modelState": 1, + "mainType": "教室", + "nno": 3, + "switchRoomId": 498, + "airType": 0, + "areaId": 9, + "tierId": 20, + "regionId": 26, + "tierName": "5楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 215, + "mac": "98CC4D124684", + "areaName": "金沙校区", + "switchName": "505空调", + "psSum": 0, + "classRoom": "505", + "id": 539, + "TYPE": None, + "remoteState": 1, + "sizeType": 1, + "dongName": "主楼", + "airNo": "20010693", + "modelState": 1, + "mainType": "教室", + "nno": 10, + "switchRoomId": 503, + "airType": 0, + "areaId": 9, + "tierId": 20, + "regionId": 26, + "tierName": "5楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 216, + "mac": "98CC4D124684", + "areaName": "金沙校区", + "switchName": "507空调", + "psSum": 0, + "classRoom": "507", + "id": 540, + "TYPE": None, + "remoteState": 1, + "sizeType": 3, + "dongName": "主楼", + "airNo": "20011297", + "modelState": 1, + "mainType": "教室", + "nno": 11, + "switchRoomId": 504, + "airType": 0, + "areaId": 9, + "tierId": 20, + "regionId": 26, + "tierName": "5楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 217, + "mac": "98CC4D124684", + "areaName": "金沙校区", + "switchName": "510空调", + "psSum": 0, + "classRoom": "510", + "id": 543, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20010694", + "modelState": 1, + "mainType": "教室", + "nno": 16, + "switchRoomId": 507, + "airType": 0, + "areaId": 9, + "tierId": 20, + "regionId": 26, + "tierName": "5楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 218, + "mac": "98CC4D124684", + "areaName": "金沙校区", + "switchName": "511前空调", + "psSum": 0, + "classRoom": "511", + "id": 544, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20010691", + "modelState": 1, + "mainType": "教室", + "nno": 17, + "switchRoomId": 508, + "airType": 0, + "areaId": 9, + "tierId": 20, + "regionId": 26, + "tierName": "5楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 219, + "mac": "98CC4D124684", + "areaName": "金沙校区", + "switchName": "511后空调、512空调", + "psSum": 0, + "classRoom": "511", + "id": 545, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011235", + "modelState": 1, + "mainType": "教室", + "nno": 18, + "switchRoomId": 509, + "airType": 0, + "areaId": 9, + "tierId": 20, + "regionId": 26, + "tierName": "5楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 220, + "mac": "98CC4D124684", + "areaName": "金沙校区", + "switchName": "511后空调、512空调", + "psSum": 0, + "classRoom": "512", + "id": 545, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011234", + "modelState": 1, + "mainType": "教室", + "nno": 18, + "switchRoomId": 510, + "airType": 0, + "areaId": 9, + "tierId": 20, + "regionId": 26, + "tierName": "5楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B1区", + "dongId": 11, + "airId": 221, + "mac": "98CC4D124684", + "areaName": "金沙校区", + "switchName": "513空调", + "psSum": 0, + "classRoom": "513", + "id": 546, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20010681", + "modelState": 1, + "mainType": "教室", + "nno": 20, + "switchRoomId": 511, + "airType": 0, + "areaId": 9, + "tierId": 20, + "regionId": 26, + "tierName": "5楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 223, + "mac": "98CC4D1245B2", + "areaName": "金沙校区", + "switchName": "524后空调", + "psSum": 0, + "classRoom": "524", + "id": 266, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011301", + "modelState": 1, + "mainType": "教室", + "nno": 12, + "switchRoomId": 515, + "airType": 0, + "areaId": 9, + "tierId": 20, + "regionId": 25, + "tierName": "5楼", + "teamId": 19, + "airState": 0, + "psMonthSum": 0, + "switchState": 1 + }, + { + "teamName": "成都市泡桐树中学", + "regionName": "B2区", + "dongId": 11, + "airId": 224, + "mac": "98CC4D1245B2", + "areaName": "金沙校区", + "switchName": "525后空调", + "psSum": 0, + "classRoom": "525", + "id": 267, + "TYPE": None, + "remoteState": 1, + "sizeType": None, + "dongName": "主楼", + "airNo": "20011290", + "modelState": 1, + "mainType": "教室", + "nno": 13, + "switchRoomId": 516, + "airType": 0, + "areaId": 9, + "tierId": 20, + "regionId": 25, + "tierName": "5楼", + "teamId": 19, + "airState": 1, + "psMonthSum": 0, + "switchState": 1 + } + ] +df = pd.DataFrame(data) +df_airtype_0 = df[df['airType'] == 0] +df_airtype_1 = df[df['airType'] == 1] +df_airtype_0.to_csv('./airtype_0.csv', index=False) +df_airtype_1.to_csv('./airtype_1.csv', index=False) diff --git a/数据库/线上/恢复学生数据.ipynb b/数据库/线上/恢复学生数据.ipynb index 957388d..afa282a 100644 --- a/数据库/线上/恢复学生数据.ipynb +++ b/数据库/线上/恢复学生数据.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 41, + "execution_count": 3, "id": "66d26142", "metadata": {}, "outputs": [], @@ -15,7 +15,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 4, "id": "7538343f", "metadata": {}, "outputs": [], @@ -23,7 +23,7 @@ "\n", "# 创建数据库连接\n", "connection = pymysql.connect(\n", - "host='www.hxzhxy.cn',\n", + "host='100.64.0.36',\n", "user='root',\n", "password='@HXYD1109mysql',\n", "database='school_server',\n", @@ -38,7 +38,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 5, "id": "8c88cbf4", "metadata": {}, "outputs": [], @@ -100,12 +100,12 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 6, "id": "dcd74d67", "metadata": {}, "outputs": [], "source": [ - "sql1 = \"select * from application_info where application_id=95\"\n", + "sql1 = \"select user_name from account\"\n", "cursor.execute(sql1)\n", "result=cursor.fetchall()\n", "table_app = create_table(cursor,result)" @@ -116,409 +116,1074 @@ "execution_count": null, "id": "d305d2bd", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "[{'user_name': '00000001CDSPTSZX'},\n", + " {'user_name': '1073'},\n", + " {'user_name': '124242424HXYSZX'},\n", + " {'user_name': '129340'},\n", + " {'user_name': '13060010573'},\n", + " {'user_name': '130721058CDSPTSZX'},\n", + " {'user_name': '13198567321'},\n", + " {'user_name': '13350855979'},\n", + " {'user_name': '13388199317'},\n", + " {'user_name': '13518129968'},\n", + " {'user_name': '13518148225'},\n", + " {'user_name': '13541008612'},\n", + " {'user_name': '13541256640'},\n", + " {'user_name': '13541257891'},\n", + " {'user_name': '13541305143'},\n", + " {'user_name': '13547954357'},\n", + " {'user_name': '13550376750'},\n", + " {'user_name': '13551344911'},\n", + " {'user_name': '13558727165'},\n", + " {'user_name': '13558772052'},\n", + " {'user_name': '13666240237'},\n", + " {'user_name': '13688453377'},\n", + " {'user_name': '13689020975'},\n", + " {'user_name': '13689037545'},\n", + " {'user_name': '13699037423'},\n", + " {'user_name': '13708035550'},\n", + " {'user_name': '13708087770'},\n", + " {'user_name': '13709097773'},\n", + " {'user_name': '13880009928'},\n", + " {'user_name': '13880134199'},\n", + " {'user_name': '13880175209'},\n", + " {'user_name': '13880257772'},\n", + " {'user_name': '13880272229'},\n", + " {'user_name': '13880438559'},\n", + " {'user_name': '13880663686'},\n", + " {'user_name': '13880725180'},\n", + " {'user_name': '13908081348'},\n", + " {'user_name': '13980032738'},\n", + " {'user_name': '13980634332'},\n", + " {'user_name': '13981710947'},\n", + " {'user_name': '13981781245'},\n", + " {'user_name': '13982764892'},\n", + " {'user_name': '15025595682'},\n", + " {'user_name': '15040291142'},\n", + " {'user_name': '15181633724'},\n", + " {'user_name': '15182813346'},\n", + " {'user_name': '15184326074'},\n", + " {'user_name': '15196654895'},\n", + " {'user_name': '15308075256'},\n", + " {'user_name': '15386563260'},\n", + " {'user_name': '15718008969'},\n", + " {'user_name': '15828415559'},\n", + " {'user_name': '15882077087'},\n", + " {'user_name': '15882277796'},\n", + " {'user_name': '15882364232'},\n", + " {'user_name': '15884468661'},\n", + " {'user_name': '15928028991'},\n", + " {'user_name': '15928507278'},\n", + " {'user_name': '15982090289'},\n", + " {'user_name': '15982139003'},\n", + " {'user_name': '17340146207'},\n", + " {'user_name': '17708071625'},\n", + " {'user_name': '17738726839'},\n", + " {'user_name': '18008027091'},\n", + " {'user_name': '18024206480'},\n", + " {'user_name': '18030454955'},\n", + " {'user_name': '18030540037'},\n", + " {'user_name': '18111201421'},\n", + " {'user_name': '18215609769'},\n", + " {'user_name': '18223694047'},\n", + " {'user_name': '18244264465'},\n", + " {'user_name': '18380428491'},\n", + " {'user_name': '18481558149'},\n", + " {'user_name': '1868879684CDSPTSZX'},\n", + " {'user_name': '18708478891'},\n", + " {'user_name': '18780230174'},\n", + " {'user_name': '18782953129'},\n", + " {'user_name': '18908080418'},\n", + " {'user_name': '18982105158'},\n", + " {'user_name': '190000CDSPTSZX'},\n", + " {'user_name': '190001CDSPTSZX'},\n", + " {'user_name': '19081401CDSPTSZX'},\n", + " {'user_name': '19081402CDSPTSZX'},\n", + " {'user_name': '19081403CDSPTSZX'},\n", + " {'user_name': '19359680126'},\n", + " {'user_name': '20000000000'},\n", + " {'user_name': '20000606CDSPTSZXBRFX'},\n", + " {'user_name': '2001'},\n", + " {'user_name': '2002'},\n", + " {'user_name': '20062202HXYSZX'},\n", + " {'user_name': '20062203HXYSZX'},\n", + " {'user_name': '20062204HXYSZX'},\n", + " {'user_name': '20062205HXYSZX'},\n", + " {'user_name': '2010530149CDSPTSZX'},\n", + " {'user_name': '2012'},\n", + " {'user_name': '2014'},\n", + " {'user_name': '2019'},\n", + " {'user_name': '20190902005DZKDSYZX'},\n", + " {'user_name': '20192018CDSPTSZXBRFX'},\n", + " {'user_name': '20192019CDSPTSZX'},\n", + " {'user_name': '2019240'},\n", + " {'user_name': '2019240217'},\n", + " {'user_name': '2019240217CDSPTSZX'},\n", + " {'user_name': '2019240217HXYSZX'},\n", + " {'user_name': '2020'},\n", + " {'user_name': '20200219002CDSPTSZX'},\n", + " {'user_name': '20200349CDSPTSZX'},\n", + " {'user_name': '20200356CDSPTSZX'},\n", + " {'user_name': '20200359CDSPTSZX'},\n", + " {'user_name': '20200903002CDSPTSZX'},\n", + " {'user_name': '20200910CDSPTSZX'},\n", + " {'user_name': '20200928001CDSPTSZX'},\n", + " {'user_name': '2021'},\n", + " {'user_name': '20210303HXYSZX'},\n", + " {'user_name': '2022'},\n", + " {'user_name': '20220001CDSPTSZX'},\n", + " {'user_name': '20220001HXYSZX'},\n", + " {'user_name': '20220002CDSPTSZX'},\n", + " {'user_name': '20220003CDSPTSZX'},\n", + " {'user_name': '20220004CDSPTSZX'},\n", + " {'user_name': '20220005CDSPTSZX'},\n", + " {'user_name': '20220006CDSPTSZX'},\n", + " {'user_name': '20220007CDSPTSZX'},\n", + " {'user_name': '20220008CDSPTSZX'},\n", + " {'user_name': '20220009CDSPTSZX'},\n", + " {'user_name': '20220010CDSPTSZX'},\n", + " {'user_name': '20220011CDSPTSZX'},\n", + " {'user_name': '20220012CDSPTSZX'},\n", + " {'user_name': '20220013CDSPTSZX'},\n", + " {'user_name': '20220014CDSPTSZX'},\n", + " {'user_name': '20220015CDSPTSZX'},\n", + " {'user_name': '20220016CDSPTSZX'},\n", + " {'user_name': '20220018CDSPTSZX'},\n", + " {'user_name': '20220019CDSPTSZX'},\n", + " {'user_name': '20220020CDSPTSZX'},\n", + " {'user_name': '20220021CDSPTSZX'},\n", + " {'user_name': '20220022CDSPTSZX'},\n", + " {'user_name': '20220023CDSPTSZX'},\n", + " {'user_name': '20220024CDSPTSZX'},\n", + " {'user_name': '20220025CDSPTSZX'},\n", + " {'user_name': '20220026CDSPTSZX'},\n", + " {'user_name': '20220027CDSPTSZX'},\n", + " {'user_name': '20220028CDSPTSZX'},\n", + " {'user_name': '20220029CDSPTSZX'},\n", + " {'user_name': '20220030CDSPTSZX'},\n", + " {'user_name': '20220031CDSPTSZX'},\n", + " {'user_name': '20220032CDSPTSZX'},\n", + " {'user_name': '20220033CDSPTSZX'},\n", + " {'user_name': '20220034CDSPTSZX'},\n", + " {'user_name': '20220035CDSPTSZX'},\n", + " {'user_name': '20220036CDSPTSZX'},\n", + " {'user_name': '20220037CDSPTSZX'},\n", + " {'user_name': '20220038CDSPTSZX'},\n", + " {'user_name': '20220040CDSPTSZX'},\n", + " {'user_name': '20220041CDSPTSZX'},\n", + " {'user_name': '20220042CDSPTSZX'},\n", + " {'user_name': '20220043CDSPTSZX'},\n", + " {'user_name': '20220044CDSPTSZX'},\n", + " {'user_name': '20220045CDSPTSZX'},\n", + " {'user_name': '20220046CDSPTSZX'},\n", + " {'user_name': '20220047CDSPTSZX'},\n", + " {'user_name': '20220048CDSPTSZX'},\n", + " {'user_name': '20220049CDSPTSZX'},\n", + " {'user_name': '20220050CDSPTSZX'},\n", + " {'user_name': '20220051CDSPTSZX'},\n", + " {'user_name': '20220052CDSPTSZX'},\n", + " {'user_name': '20220053CDSPTSZX'},\n", + " {'user_name': '20220054CDSPTSZX'},\n", + " {'user_name': '20220055CDSPTSZX'},\n", + " {'user_name': '20220056CDSPTSZX'},\n", + " {'user_name': '20220057CDSPTSZX'},\n", + " {'user_name': '20220058CDSPTSZX'},\n", + " {'user_name': '20220059CDSPTSZX'},\n", + " {'user_name': '20220061CDSPTSZX'},\n", + " {'user_name': '20220062CDSPTSZX'},\n", + " {'user_name': '20220063CDSPTSZX'},\n", + " {'user_name': '20220064CDSPTSZX'},\n", + " {'user_name': '20220065CDSPTSZX'},\n", + " {'user_name': '20220067CDSPTSZX'},\n", + " {'user_name': '20220068CDSPTSZX'},\n", + " {'user_name': '20220069CDSPTSZX'},\n", + " {'user_name': '20220070CDSPTSZX'},\n", + " {'user_name': '20220072CDSPTSZX'},\n", + " {'user_name': '20220073CDSPTSZX'},\n", + " {'user_name': '20220074CDSPTSZX'},\n", + " {'user_name': '20220075CDSPTSZX'},\n", + " {'user_name': '20220076CDSPTSZX'},\n", + " {'user_name': '20220077CDSPTSZX'},\n", + " {'user_name': '20220078CDSPTSZX'},\n", + " {'user_name': '20220079CDSPTSZX'},\n", + " {'user_name': '20220081CDSPTSZX'},\n", + " {'user_name': '20220082CDSPTSZX'},\n", + " {'user_name': '20220084CDSPTSZX'},\n", + " {'user_name': '20220085CDSPTSZX'},\n", + " {'user_name': '20220086CDSPTSZX'},\n", + " {'user_name': '20220087CDSPTSZX'},\n", + " {'user_name': '20220088CDSPTSZX'},\n", + " {'user_name': '20220089CDSPTSZX'},\n", + " {'user_name': '20220090CDSPTSZX'},\n", + " {'user_name': '20220091CDSPTSZX'},\n", + " {'user_name': '20220093CDSPTSZX'},\n", + " {'user_name': '20220094CDSPTSZX'},\n", + " {'user_name': '20220095CDSPTSZX'},\n", + " {'user_name': '20220096CDSPTSZX'},\n", + " {'user_name': '20220097CDSPTSZX'},\n", + " {'user_name': '20220098CDSPTSZX'},\n", + " {'user_name': '20220099CDSPTSZX'},\n", + " {'user_name': '20220100CDSPTSZX'},\n", + " {'user_name': '20220101CDSPTSZX'},\n", + " {'user_name': '20220102CDSPTSZX'},\n", + " {'user_name': '20220103CDSPTSZX'},\n", + " {'user_name': '20220104CDSPTSZX'},\n", + " {'user_name': '20220105CDSPTSZX'},\n", + " {'user_name': '20220108CDSPTSZX'},\n", + " {'user_name': '20220109CDSPTSZX'},\n", + " {'user_name': '20220111CDSPTSZX'},\n", + " {'user_name': '20220112CDSPTSZX'},\n", + " {'user_name': '20220113CDSPTSZX'},\n", + " {'user_name': '20220115CDSPTSZX'},\n", + " {'user_name': '20220116CDSPTSZX'},\n", + " {'user_name': '20220117CDSPTSZX'},\n", + " {'user_name': '20220120CDSPTSZX'},\n", + " {'user_name': '20220121CDSPTSZX'},\n", + " {'user_name': '20220122CDSPTSZX'},\n", + " {'user_name': '20220124CDSPTSZX'},\n", + " {'user_name': '20220125CDSPTSZX'},\n", + " {'user_name': '20220127CDSPTSZX'},\n", + " {'user_name': '20220128CDSPTSZX'},\n", + " {'user_name': '20220129CDSPTSZX'},\n", + " {'user_name': '20220130CDSPTSZX'},\n", + " {'user_name': '20220131CDSPTSZX'},\n", + " {'user_name': '20220132CDSPTSZX'},\n", + " {'user_name': '20220133CDSPTSZX'},\n", + " {'user_name': '20220134CDSPTSZX'},\n", + " {'user_name': '20220137CDSPTSZX'},\n", + " {'user_name': '20220138CDSPTSZX'},\n", + " {'user_name': '20220139CDSPTSZX'},\n", + " {'user_name': '20220141CDSPTSZX'},\n", + " {'user_name': '20220142CDSPTSZX'},\n", + " {'user_name': '20220143CDSPTSZX'},\n", + " {'user_name': '20220144CDSPTSZX'},\n", + " {'user_name': '20220145CDSPTSZX'},\n", + " {'user_name': '20220146CDSPTSZX'},\n", + " {'user_name': '20220147CDSPTSZX'},\n", + " {'user_name': '20220148CDSPTSZX'},\n", + " {'user_name': '20220151CDSPTSZX'},\n", + " {'user_name': '20220153CDSPTSZX'},\n", + " {'user_name': '20220154CDSPTSZX'},\n", + " {'user_name': '20220155CDSPTSZX'},\n", + " {'user_name': '20220157CDSPTSZX'},\n", + " {'user_name': '20220158CDSPTSZX'},\n", + " {'user_name': '20220159CDSPTSZX'},\n", + " {'user_name': '20220161CDSPTSZX'},\n", + " {'user_name': '20220162CDSPTSZX'},\n", + " {'user_name': '20220164CDSPTSZX'},\n", + " {'user_name': '20220165CDSPTSZX'},\n", + " {'user_name': '20220166CDSPTSZX'},\n", + " {'user_name': '20220167CDSPTSZX'},\n", + " {'user_name': '20220169CDSPTSZX'},\n", + " {'user_name': '20220170CDSPTSZX'},\n", + " {'user_name': '20220171CDSPTSZX'},\n", + " {'user_name': '20220172CDSPTSZX'},\n", + " {'user_name': '20220173CDSPTSZX'},\n", + " {'user_name': '20220174CDSPTSZX'},\n", + " {'user_name': '20220175CDSPTSZX'},\n", + " {'user_name': '20220176CDSPTSZX'},\n", + " {'user_name': '20220177CDSPTSZX'},\n", + " {'user_name': '20220178CDSPTSZX'},\n", + " {'user_name': '20220179CDSPTSZX'},\n", + " {'user_name': '20220180CDSPTSZX'},\n", + " {'user_name': '20220181CDSPTSZX'},\n", + " {'user_name': '20220182CDSPTSZX'},\n", + " {'user_name': '20220183CDSPTSZX'},\n", + " {'user_name': '20220184CDSPTSZX'},\n", + " {'user_name': '20220185CDSPTSZX'},\n", + " {'user_name': '20220187CDSPTSZX'},\n", + " {'user_name': '20220188CDSPTSZX'},\n", + " {'user_name': '20220189CDSPTSZX'},\n", + " {'user_name': '20220190CDSPTSZX'},\n", + " {'user_name': '20220191CDSPTSZX'},\n", + " {'user_name': '20220192CDSPTSZX'},\n", + " {'user_name': '20220194CDSPTSZX'},\n", + " {'user_name': '20220195CDSPTSZX'},\n", + " {'user_name': '20220197CDSPTSZX'},\n", + " {'user_name': '20220198CDSPTSZX'},\n", + " {'user_name': '20220199CDSPTSZX'},\n", + " {'user_name': '20220200CDSPTSZX'},\n", + " {'user_name': '20220202CDSPTSZX'},\n", + " {'user_name': '20220203CDSPTSZX'},\n", + " {'user_name': '20220204CDSPTSZX'},\n", + " {'user_name': '20220205CDSPTSZX'},\n", + " {'user_name': '20220206CDSPTSZX'},\n", + " {'user_name': '20220207CDSPTSZX'},\n", + " {'user_name': '20220208CDSPTSZX'},\n", + " {'user_name': '20220209CDSPTSZX'},\n", + " {'user_name': '20220210CDSPTSZX'},\n", + " {'user_name': '20220212CDSPTSZX'},\n", + " {'user_name': '20220213CDSPTSZX'},\n", + " {'user_name': '20220214CDSPTSZX'},\n", + " {'user_name': '20220215CDSPTSZX'},\n", + " {'user_name': '20220216CDSPTSZX'},\n", + " {'user_name': '20220218CDSPTSZX'},\n", + " {'user_name': '20220219CDSPTSZX'},\n", + " {'user_name': '20220220CDSPTSZX'},\n", + " {'user_name': '20220221CDSPTSZX'},\n", + " {'user_name': '20220223CDSPTSZX'},\n", + " {'user_name': '20220224CDSPTSZX'},\n", + " {'user_name': '20220225CDSPTSZX'},\n", + " {'user_name': '20220226CDSPTSZX'},\n", + " {'user_name': '20220227CDSPTSZX'},\n", + " {'user_name': '20220228CDSPTSZX'},\n", + " {'user_name': '20220229CDSPTSZX'},\n", + " {'user_name': '20220231CDSPTSZX'},\n", + " {'user_name': '20220232CDSPTSZX'},\n", + " {'user_name': '20220233CDSPTSZX'},\n", + " {'user_name': '20220234CDSPTSZX'},\n", + " {'user_name': '20220235CDSPTSZX'},\n", + " {'user_name': '20220236CDSPTSZX'},\n", + " {'user_name': '20220237CDSPTSZX'},\n", + " {'user_name': '20220238CDSPTSZX'},\n", + " {'user_name': '20220239CDSPTSZX'},\n", + " {'user_name': '20220240CDSPTSZX'},\n", + " {'user_name': '20220241CDSPTSZX'},\n", + " {'user_name': '20220242CDSPTSZX'},\n", + " {'user_name': '20220243CDSPTSZX'},\n", + " {'user_name': '20220244CDSPTSZX'},\n", + " {'user_name': '20220245CDSPTSZX'},\n", + " {'user_name': '20220246CDSPTSZX'},\n", + " {'user_name': '20220247CDSPTSZX'},\n", + " {'user_name': '20220248CDSPTSZX'},\n", + " {'user_name': '20220249CDSPTSZX'},\n", + " {'user_name': '20220250CDSPTSZX'},\n", + " {'user_name': '20220251CDSPTSZX'},\n", + " {'user_name': '20220252CDSPTSZX'},\n", + " {'user_name': '20220253CDSPTSZX'},\n", + " {'user_name': '20220254CDSPTSZX'},\n", + " {'user_name': '20220255CDSPTSZX'},\n", + " {'user_name': '20220256CDSPTSZX'},\n", + " {'user_name': '20220257CDSPTSZX'},\n", + " {'user_name': '20220258CDSPTSZX'},\n", + " {'user_name': '20220259CDSPTSZX'},\n", + " {'user_name': '20220260CDSPTSZX'},\n", + " {'user_name': '20220261CDSPTSZX'},\n", + " {'user_name': '20220263CDSPTSZX'},\n", + " {'user_name': '20220264CDSPTSZX'},\n", + " {'user_name': '20220265CDSPTSZX'},\n", + " {'user_name': '20220266CDSPTSZX'},\n", + " {'user_name': '20220267CDSPTSZX'},\n", + " {'user_name': '20220268CDSPTSZX'},\n", + " {'user_name': '20220269CDSPTSZX'},\n", + " {'user_name': '20220270CDSPTSZX'},\n", + " {'user_name': '20220271CDSPTSZX'},\n", + " {'user_name': '20220272CDSPTSZX'},\n", + " {'user_name': '20220273CDSPTSZX'},\n", + " {'user_name': '20220274CDSPTSZX'},\n", + " {'user_name': '20220275CDSPTSZX'},\n", + " {'user_name': '20220276CDSPTSZX'},\n", + " {'user_name': '20220278CDSPTSZX'},\n", + " {'user_name': '20220281CDSPTSZX'},\n", + " {'user_name': '20220282CDSPTSZX'},\n", + " {'user_name': '20220283CDSPTSZX'},\n", + " {'user_name': '20220285CDSPTSZX'},\n", + " {'user_name': '20220286CDSPTSZX'},\n", + " {'user_name': '20220288CDSPTSZX'},\n", + " {'user_name': '20220289CDSPTSZX'},\n", + " {'user_name': '20220290CDSPTSZX'},\n", + " {'user_name': '20220291CDSPTSZX'},\n", + " {'user_name': '20220292CDSPTSZX'},\n", + " {'user_name': '20220293CDSPTSZX'},\n", + " {'user_name': '20220294CDSPTSZX'},\n", + " {'user_name': '20220295CDSPTSZX'},\n", + " {'user_name': '20220296CDSPTSZX'},\n", + " {'user_name': '20220297CDSPTSZX'},\n", + " {'user_name': '20220298CDSPTSZX'},\n", + " {'user_name': '20220299CDSPTSZX'},\n", + " {'user_name': '20220300CDSPTSZX'},\n", + " {'user_name': '20220301CDSPTSZX'},\n", + " {'user_name': '20220303CDSPTSZX'},\n", + " {'user_name': '20220304CDSPTSZX'},\n", + " {'user_name': '20220305CDSPTSZX'},\n", + " {'user_name': '20220306CDSPTSZX'},\n", + " {'user_name': '20220307CDSPTSZX'},\n", + " {'user_name': '20220310CDSPTSZX'},\n", + " {'user_name': '20220312CDSPTSZX'},\n", + " {'user_name': '20220313CDSPTSZX'},\n", + " {'user_name': '20220314CDSPTSZX'},\n", + " {'user_name': '20220315CDSPTSZX'},\n", + " {'user_name': '20220316CDSPTSZX'},\n", + " {'user_name': '20220317CDSPTSZX'},\n", + " {'user_name': '20220320CDSPTSZX'},\n", + " {'user_name': '20220321CDSPTSZX'},\n", + " {'user_name': '20220322CDSPTSZX'},\n", + " {'user_name': '20220323CDSPTSZX'},\n", + " {'user_name': '20220324CDSPTSZX'},\n", + " {'user_name': '20220326CDSPTSZX'},\n", + " {'user_name': '20220328CDSPTSZX'},\n", + " {'user_name': '20220329CDSPTSZX'},\n", + " {'user_name': '20220330CDSPTSZX'},\n", + " {'user_name': '20220331CDSPTSZX'},\n", + " {'user_name': '20220332CDSPTSZX'},\n", + " {'user_name': '20220333CDSPTSZX'},\n", + " {'user_name': '20220334CDSPTSZX'},\n", + " {'user_name': '20220335CDSPTSZX'},\n", + " {'user_name': '20220336CDSPTSZX'},\n", + " {'user_name': '20220337CDSPTSZX'},\n", + " {'user_name': '20220338CDSPTSZX'},\n", + " {'user_name': '20220340CDSPTSZX'},\n", + " {'user_name': '20220341CDSPTSZX'},\n", + " {'user_name': '20220342CDSPTSZX'},\n", + " {'user_name': '20220343CDSPTSZX'},\n", + " {'user_name': '20220344CDSPTSZX'},\n", + " {'user_name': '20220345CDSPTSZX'},\n", + " {'user_name': '20220346CDSPTSZX'},\n", + " {'user_name': '20220348CDSPTSZX'},\n", + " {'user_name': '20220349CDSPTSZX'},\n", + " {'user_name': '20220350CDSPTSZX'},\n", + " {'user_name': '20220351CDSPTSZX'},\n", + " {'user_name': '20220353CDSPTSZX'},\n", + " {'user_name': '20220354CDSPTSZX'},\n", + " {'user_name': '20220356CDSPTSZX'},\n", + " {'user_name': '20220357CDSPTSZX'},\n", + " {'user_name': '20220358CDSPTSZX'},\n", + " {'user_name': '20220359CDSPTSZX'},\n", + " {'user_name': '20220360CDSPTSZX'},\n", + " {'user_name': '20220361CDSPTSZX'},\n", + " {'user_name': '20220362CDSPTSZX'},\n", + " {'user_name': '20220363CDSPTSZX'},\n", + " {'user_name': '20220364CDSPTSZX'},\n", + " {'user_name': '20220365CDSPTSZX'},\n", + " {'user_name': '20220366CDSPTSZX'},\n", + " {'user_name': '20220367CDSPTSZX'},\n", + " {'user_name': '20220368CDSPTSZX'},\n", + " {'user_name': '20220369CDSPTSZX'},\n", + " {'user_name': '20220370CDSPTSZX'},\n", + " {'user_name': '20220371CDSPTSZX'},\n", + " {'user_name': '20220372CDSPTSZX'},\n", + " {'user_name': '20220373CDSPTSZX'},\n", + " {'user_name': '20220374CDSPTSZX'},\n", + " {'user_name': '20220375CDSPTSZX'},\n", + " {'user_name': '20220376CDSPTSZX'},\n", + " {'user_name': '20220378CDSPTSZX'},\n", + " {'user_name': '20220379CDSPTSZX'},\n", + " {'user_name': '20220380CDSPTSZX'},\n", + " {'user_name': '20220381CDSPTSZX'},\n", + " {'user_name': '20220382CDSPTSZX'},\n", + " {'user_name': '20220383CDSPTSZX'},\n", + " {'user_name': '20220384CDSPTSZX'},\n", + " {'user_name': '20220385CDSPTSZX'},\n", + " {'user_name': '20220386CDSPTSZX'},\n", + " {'user_name': '20220387CDSPTSZX'},\n", + " {'user_name': '20220388CDSPTSZX'},\n", + " {'user_name': '20220389CDSPTSZX'},\n", + " {'user_name': '20220390CDSPTSZX'},\n", + " {'user_name': '20220391CDSPTSZX'},\n", + " {'user_name': '20220393CDSPTSZX'},\n", + " {'user_name': '20220394CDSPTSZX'},\n", + " {'user_name': '20220395CDSPTSZX'},\n", + " {'user_name': '20220396CDSPTSZX'},\n", + " {'user_name': '20220397CDSPTSZX'},\n", + " {'user_name': '20220398CDSPTSZX'},\n", + " {'user_name': '20220400CDSPTSZX'},\n", + " {'user_name': '20220401CDSPTSZX'},\n", + " {'user_name': '20220402CDSPTSZX'},\n", + " {'user_name': '20220403CDSPTSZX'},\n", + " {'user_name': '20220404CDSPTSZX'},\n", + " {'user_name': '20220405CDSPTSZX'},\n", + " {'user_name': '20220406CDSPTSZX'},\n", + " {'user_name': '20220407CDSPTSZX'},\n", + " {'user_name': '20220408CDSPTSZX'},\n", + " {'user_name': '20220409CDSPTSZX'},\n", + " {'user_name': '20220410CDSPTSZX'},\n", + " {'user_name': '20220411CDSPTSZX'},\n", + " {'user_name': '20220412CDSPTSZX'},\n", + " {'user_name': '20220413CDSPTSZX'},\n", + " {'user_name': '20220415CDSPTSZX'},\n", + " {'user_name': '20220705CDSPTSZX'},\n", + " {'user_name': '20220766CDSPTSZX'},\n", + " {'user_name': '20220804CDSPTSZX'},\n", + " {'user_name': '202209301718HXYSZX'},\n", + " {'user_name': '202210191749'},\n", + " {'user_name': '2022111501'},\n", + " {'user_name': '20222023HXYSZX'},\n", + " {'user_name': '20229996HXYSZX'},\n", + " {'user_name': '20229997YCZYXX'},\n", + " {'user_name': '20229998YCZYXX'},\n", + " {'user_name': '20229999YCZYXX'},\n", + " {'user_name': '2023'},\n", + " {'user_name': '2023021401'},\n", + " {'user_name': '2023021402'},\n", + " {'user_name': '2023022001'},\n", + " {'user_name': '2023022701'},\n", + " {'user_name': '2023022702'},\n", + " {'user_name': '2023030601'},\n", + " {'user_name': '2023031701'},\n", + " {'user_name': '2023031702'},\n", + " {'user_name': '2023031703'},\n", + " {'user_name': '2023031704'},\n", + " {'user_name': '2023031705'},\n", + " {'user_name': '2023031706'},\n", + " {'user_name': '2023031707'},\n", + " {'user_name': '2023031708'},\n", + " {'user_name': '2023031709'},\n", + " {'user_name': '2023031710'},\n", + " {'user_name': '2023031711'},\n", + " {'user_name': '2023031712'},\n", + " {'user_name': '2023031713'},\n", + " {'user_name': '2023031714'},\n", + " {'user_name': '2023031715'},\n", + " {'user_name': '2023031716'},\n", + " {'user_name': '2023040301'},\n", + " {'user_name': '2023040601'},\n", + " {'user_name': '2023040701'},\n", + " {'user_name': '2023040702'},\n", + " {'user_name': '2023040703'},\n", + " {'user_name': '2023041001'},\n", + " {'user_name': '2023041701'},\n", + " {'user_name': '2023042301'},\n", + " {'user_name': '2023042401'},\n", + " {'user_name': '2023050501'},\n", + " {'user_name': '2023050502'},\n", + " {'user_name': '2023050503'},\n", + " {'user_name': '2023050506'},\n", + " {'user_name': '2023050801'},\n", + " {'user_name': '2023050802'},\n", + " {'user_name': '202305151153'},\n", + " {'user_name': '2023060501'},\n", + " {'user_name': '2023060502'},\n", + " {'user_name': '2023060505'},\n", + " {'user_name': '2023060601'},\n", + " {'user_name': '2023060901'},\n", + " {'user_name': '2023060902'},\n", + " {'user_name': '2023061401'},\n", + " {'user_name': '2023062001'},\n", + " {'user_name': '2023062101'},\n", + " {'user_name': '2023062103'},\n", + " {'user_name': '2023062501'},\n", + " {'user_name': '2023062502'},\n", + " {'user_name': '2023062503'},\n", + " {'user_name': '2023063001'},\n", + " {'user_name': '2023071501'},\n", + " {'user_name': '2023071502'},\n", + " {'user_name': '2023082201'},\n", + " {'user_name': '2023090403'},\n", + " {'user_name': '20231123HXYSZX'},\n", + " {'user_name': '2023121801'},\n", + " {'user_name': '20240001CDSPTSZX'},\n", + " {'user_name': '20240002CDSPTSZX'},\n", + " {'user_name': '20240003CDSPTSZX'},\n", + " {'user_name': '20240005CDSPTSZX'},\n", + " {'user_name': '20240006CDSPTSZX'},\n", + " {'user_name': '20240007CDSPTSZX'},\n", + " {'user_name': '20240008CDSPTSZX'},\n", + " {'user_name': '20240009CDSPTSZX'},\n", + " {'user_name': '20240011CDSPTSZX'},\n", + " {'user_name': '20240012CDSPTSZX'},\n", + " {'user_name': '20240013CDSPTSZX'},\n", + " {'user_name': '20240014CDSPTSZX'},\n", + " {'user_name': '20240015CDSPTSZX'},\n", + " {'user_name': '20240016CDSPTSZX'},\n", + " {'user_name': '20240017CDSPTSZX'},\n", + " {'user_name': '20240018CDSPTSZX'},\n", + " {'user_name': '20240019CDSPTSZX'},\n", + " {'user_name': '20240020CDSPTSZX'},\n", + " {'user_name': '20240021CDSPTSZX'},\n", + " {'user_name': '20240022CDSPTSZX'},\n", + " {'user_name': '20240023CDSPTSZX'},\n", + " {'user_name': '20240024CDSPTSZX'},\n", + " {'user_name': '20240025CDSPTSZX'},\n", + " {'user_name': '20240026CDSPTSZX'},\n", + " {'user_name': '20240028CDSPTSZX'},\n", + " {'user_name': '20240029CDSPTSZX'},\n", + " {'user_name': '20240030CDSPTSZX'},\n", + " {'user_name': '20240031CDSPTSZX'},\n", + " {'user_name': '20240032CDSPTSZX'},\n", + " {'user_name': '20240033CDSPTSZX'},\n", + " {'user_name': '20240034CDSPTSZX'},\n", + " {'user_name': '20240035CDSPTSZX'},\n", + " {'user_name': '20240037CDSPTSZX'},\n", + " {'user_name': '20240038CDSPTSZX'},\n", + " {'user_name': '20240039CDSPTSZX'},\n", + " {'user_name': '20240040CDSPTSZX'},\n", + " {'user_name': '20240041CDSPTSZX'},\n", + " {'user_name': '20240042CDSPTSZX'},\n", + " {'user_name': '20240043CDSPTSZX'},\n", + " {'user_name': '20240044CDSPTSZX'},\n", + " {'user_name': '20240045CDSPTSZX'},\n", + " {'user_name': '20240046CDSPTSZX'},\n", + " {'user_name': '20240047CDSPTSZX'},\n", + " {'user_name': '20240048CDSPTSZX'},\n", + " {'user_name': '20240049CDSPTSZX'},\n", + " {'user_name': '20240050CDSPTSZX'},\n", + " {'user_name': '20240051CDSPTSZX'},\n", + " {'user_name': '20240052CDSPTSZX'},\n", + " {'user_name': '20240054CDSPTSZX'},\n", + " {'user_name': '20240055CDSPTSZX'},\n", + " {'user_name': '20240056CDSPTSZX'},\n", + " {'user_name': '20240057CDSPTSZX'},\n", + " {'user_name': '20240058CDSPTSZX'},\n", + " {'user_name': '20240059CDSPTSZX'},\n", + " {'user_name': '20240060CDSPTSZX'},\n", + " {'user_name': '20240061CDSPTSZX'},\n", + " {'user_name': '20240063CDSPTSZX'},\n", + " {'user_name': '20240064CDSPTSZX'},\n", + " {'user_name': '20240065CDSPTSZX'},\n", + " {'user_name': '20240066CDSPTSZX'},\n", + " {'user_name': '20240067CDSPTSZX'},\n", + " {'user_name': '20240068CDSPTSZX'},\n", + " {'user_name': '20240069CDSPTSZX'},\n", + " {'user_name': '20240070CDSPTSZX'},\n", + " {'user_name': '20240071CDSPTSZX'},\n", + " {'user_name': '20240072CDSPTSZX'},\n", + " {'user_name': '20240074CDSPTSZX'},\n", + " {'user_name': '20240075CDSPTSZX'},\n", + " {'user_name': '20240076CDSPTSZX'},\n", + " {'user_name': '20240077CDSPTSZX'},\n", + " {'user_name': '20240079CDSPTSZX'},\n", + " {'user_name': '20240081CDSPTSZX'},\n", + " {'user_name': '20240082CDSPTSZX'},\n", + " {'user_name': '20240083CDSPTSZX'},\n", + " {'user_name': '20240084CDSPTSZX'},\n", + " {'user_name': '20240085CDSPTSZX'},\n", + " {'user_name': '20240086CDSPTSZX'},\n", + " {'user_name': '20240087CDSPTSZX'},\n", + " {'user_name': '20240088CDSPTSZX'},\n", + " {'user_name': '20240089CDSPTSZX'},\n", + " {'user_name': '20240090CDSPTSZX'},\n", + " {'user_name': '20240091CDSPTSZX'},\n", + " {'user_name': '20240092CDSPTSZX'},\n", + " {'user_name': '20240093CDSPTSZX'},\n", + " {'user_name': '20240094CDSPTSZX'},\n", + " {'user_name': '20240095CDSPTSZX'},\n", + " {'user_name': '20240096CDSPTSZX'},\n", + " {'user_name': '20240097CDSPTSZX'},\n", + " {'user_name': '20240098CDSPTSZX'},\n", + " {'user_name': '20240099CDSPTSZX'},\n", + " {'user_name': '20240100CDSPTSZX'},\n", + " {'user_name': '20240101CDSPTSZX'},\n", + " {'user_name': '20240102CDSPTSZX'},\n", + " {'user_name': '20240104CDSPTSZX'},\n", + " {'user_name': '20240105CDSPTSZX'},\n", + " {'user_name': '20240106CDSPTSZX'},\n", + " {'user_name': '20240107CDSPTSZX'},\n", + " {'user_name': '20240108CDSPTSZX'},\n", + " {'user_name': '20240109CDSPTSZX'},\n", + " {'user_name': '20240110CDSPTSZX'},\n", + " {'user_name': '20240111CDSPTSZX'},\n", + " {'user_name': '20240112CDSPTSZX'},\n", + " {'user_name': '20240113CDSPTSZX'},\n", + " {'user_name': '20240114CDSPTSZX'},\n", + " {'user_name': '20240115CDSPTSZX'},\n", + " {'user_name': '20240116CDSPTSZX'},\n", + " {'user_name': '20240117CDSPTSZX'},\n", + " {'user_name': '20240118CDSPTSZX'},\n", + " {'user_name': '20240119CDSPTSZX'},\n", + " {'user_name': '20240120CDSPTSZX'},\n", + " {'user_name': '20240121CDSPTSZX'},\n", + " {'user_name': '20240122CDSPTSZX'},\n", + " {'user_name': '20240123CDSPTSZX'},\n", + " {'user_name': '20240124CDSPTSZX'},\n", + " {'user_name': '20240126CDSPTSZX'},\n", + " {'user_name': '20240127CDSPTSZX'},\n", + " {'user_name': '20240128CDSPTSZX'},\n", + " {'user_name': '20240129CDSPTSZX'},\n", + " {'user_name': '20240132CDSPTSZX'},\n", + " {'user_name': '20240133CDSPTSZX'},\n", + " {'user_name': '20240134CDSPTSZX'},\n", + " {'user_name': '20240135CDSPTSZX'},\n", + " {'user_name': '20240136CDSPTSZX'},\n", + " {'user_name': '20240137CDSPTSZX'},\n", + " {'user_name': '20240138CDSPTSZX'},\n", + " {'user_name': '20240139CDSPTSZX'},\n", + " {'user_name': '20240141CDSPTSZX'},\n", + " {'user_name': '20240142CDSPTSZX'},\n", + " {'user_name': '20240143CDSPTSZX'},\n", + " {'user_name': '20240144CDSPTSZX'},\n", + " {'user_name': '20240145CDSPTSZX'},\n", + " {'user_name': '20240146CDSPTSZX'},\n", + " {'user_name': '20240147CDSPTSZX'},\n", + " {'user_name': '20240148CDSPTSZX'},\n", + " {'user_name': '20240149CDSPTSZX'},\n", + " {'user_name': '20240150CDSPTSZX'},\n", + " {'user_name': '20240151CDSPTSZX'},\n", + " {'user_name': '20240153CDSPTSZX'},\n", + " {'user_name': '20240154CDSPTSZX'},\n", + " {'user_name': '20240155CDSPTSZX'},\n", + " {'user_name': '20240156CDSPTSZX'},\n", + " {'user_name': '20240157CDSPTSZX'},\n", + " {'user_name': '20240159CDSPTSZX'},\n", + " {'user_name': '20240160CDSPTSZX'},\n", + " {'user_name': '20240161CDSPTSZX'},\n", + " {'user_name': '20240162CDSPTSZX'},\n", + " {'user_name': '20240163CDSPTSZX'},\n", + " {'user_name': '20240164CDSPTSZX'},\n", + " {'user_name': '20240165CDSPTSZX'},\n", + " {'user_name': '20240166CDSPTSZX'},\n", + " {'user_name': '20240167CDSPTSZX'},\n", + " {'user_name': '20240168CDSPTSZX'},\n", + " {'user_name': '20240169CDSPTSZX'},\n", + " {'user_name': '20240170CDSPTSZX'},\n", + " {'user_name': '20240171CDSPTSZX'},\n", + " {'user_name': '20240172CDSPTSZX'},\n", + " {'user_name': '20240173CDSPTSZX'},\n", + " {'user_name': '20240174CDSPTSZX'},\n", + " {'user_name': '20240175CDSPTSZX'},\n", + " {'user_name': '20240176CDSPTSZX'},\n", + " {'user_name': '20240177CDSPTSZX'},\n", + " {'user_name': '20240178CDSPTSZX'},\n", + " {'user_name': '20240179CDSPTSZX'},\n", + " {'user_name': '20240180CDSPTSZX'},\n", + " {'user_name': '20240182CDSPTSZX'},\n", + " {'user_name': '20240183CDSPTSZX'},\n", + " {'user_name': '20240184CDSPTSZX'},\n", + " {'user_name': '20240185CDSPTSZX'},\n", + " {'user_name': '20240186CDSPTSZX'},\n", + " {'user_name': '20240187CDSPTSZX'},\n", + " {'user_name': '20240188CDSPTSZX'},\n", + " {'user_name': '20240189CDSPTSZX'},\n", + " {'user_name': '20240190CDSPTSZX'},\n", + " {'user_name': '20240191CDSPTSZX'},\n", + " {'user_name': '20240193CDSPTSZX'},\n", + " {'user_name': '20240194CDSPTSZX'},\n", + " {'user_name': '20240195CDSPTSZX'},\n", + " {'user_name': '20240196CDSPTSZX'},\n", + " {'user_name': '20240197CDSPTSZX'},\n", + " {'user_name': '20240198CDSPTSZX'},\n", + " {'user_name': '20240199CDSPTSZX'},\n", + " {'user_name': '20240200CDSPTSZX'},\n", + " {'user_name': '20240201CDSPTSZX'},\n", + " {'user_name': '20240202CDSPTSZX'},\n", + " {'user_name': '20240203CDSPTSZX'},\n", + " {'user_name': '20240204CDSPTSZX'},\n", + " {'user_name': '20240205CDSPTSZX'},\n", + " {'user_name': '20240206CDSPTSZX'},\n", + " {'user_name': '20240207CDSPTSZX'},\n", + " {'user_name': '20240208CDSPTSZX'},\n", + " {'user_name': '20240209CDSPTSZX'},\n", + " {'user_name': '20240210CDSPTSZX'},\n", + " {'user_name': '20240211CDSPTSZX'},\n", + " {'user_name': '20240212CDSPTSZX'},\n", + " {'user_name': '20240213CDSPTSZX'},\n", + " {'user_name': '20240214CDSPTSZX'},\n", + " {'user_name': '20240215CDSPTSZX'},\n", + " {'user_name': '20240216CDSPTSZX'},\n", + " {'user_name': '20240217CDSPTSZX'},\n", + " {'user_name': '20240218CDSPTSZX'},\n", + " {'user_name': '20240220CDSPTSZX'},\n", + " {'user_name': '20240222CDSPTSZX'},\n", + " {'user_name': '20240223CDSPTSZX'},\n", + " {'user_name': '20240224CDSPTSZX'},\n", + " {'user_name': '20240225CDSPTSZX'},\n", + " {'user_name': '20240226CDSPTSZX'},\n", + " {'user_name': '20240227CDSPTSZX'},\n", + " {'user_name': '20240228CDSPTSZX'},\n", + " {'user_name': '20240230CDSPTSZX'},\n", + " {'user_name': '20240233CDSPTSZX'},\n", + " {'user_name': '20240234CDSPTSZX'},\n", + " {'user_name': '20240235CDSPTSZX'},\n", + " {'user_name': '20240236CDSPTSZX'},\n", + " {'user_name': '20240237CDSPTSZX'},\n", + " {'user_name': '20240239CDSPTSZX'},\n", + " {'user_name': '20240240CDSPTSZX'},\n", + " {'user_name': '20240241CDSPTSZX'},\n", + " {'user_name': '20240242CDSPTSZX'},\n", + " {'user_name': '20240243CDSPTSZX'},\n", + " {'user_name': '20240244CDSPTSZX'},\n", + " {'user_name': '20240245CDSPTSZX'},\n", + " {'user_name': '20240246CDSPTSZX'},\n", + " {'user_name': '20240247CDSPTSZX'},\n", + " {'user_name': '20240248CDSPTSZX'},\n", + " {'user_name': '20240249CDSPTSZX'},\n", + " {'user_name': '20240250CDSPTSZX'},\n", + " {'user_name': '20240251CDSPTSZX'},\n", + " {'user_name': '20240252CDSPTSZX'},\n", + " {'user_name': '20240253CDSPTSZX'},\n", + " {'user_name': '20240254CDSPTSZX'},\n", + " {'user_name': '20240255CDSPTSZX'},\n", + " {'user_name': '20240256CDSPTSZX'},\n", + " {'user_name': '20240257CDSPTSZX'},\n", + " {'user_name': '20240258CDSPTSZX'},\n", + " {'user_name': '20240259CDSPTSZX'},\n", + " {'user_name': '20240260CDSPTSZX'},\n", + " {'user_name': '20240261CDSPTSZX'},\n", + " {'user_name': '20240262CDSPTSZX'},\n", + " {'user_name': '20240264CDSPTSZX'},\n", + " {'user_name': '20240265CDSPTSZX'},\n", + " {'user_name': '20240266CDSPTSZX'},\n", + " {'user_name': '20240267CDSPTSZX'},\n", + " {'user_name': '20240268CDSPTSZX'},\n", + " {'user_name': '20240269CDSPTSZX'},\n", + " {'user_name': '20240270CDSPTSZX'},\n", + " {'user_name': '20240271CDSPTSZX'},\n", + " {'user_name': '20240272CDSPTSZX'},\n", + " {'user_name': '20240274CDSPTSZX'},\n", + " {'user_name': '20240275CDSPTSZX'},\n", + " {'user_name': '20240276CDSPTSZX'},\n", + " {'user_name': '20240277CDSPTSZX'},\n", + " {'user_name': '20240278CDSPTSZX'},\n", + " {'user_name': '20240279CDSPTSZX'},\n", + " {'user_name': '20240280CDSPTSZX'},\n", + " {'user_name': '20240281CDSPTSZX'},\n", + " {'user_name': '20240282CDSPTSZX'},\n", + " {'user_name': '20240283CDSPTSZX'},\n", + " {'user_name': '20240284CDSPTSZX'},\n", + " {'user_name': '20240285CDSPTSZX'},\n", + " {'user_name': '20240286CDSPTSZX'},\n", + " {'user_name': '20240287CDSPTSZX'},\n", + " {'user_name': '20240288CDSPTSZX'},\n", + " {'user_name': '20240289CDSPTSZX'},\n", + " {'user_name': '20240290CDSPTSZX'},\n", + " {'user_name': '20240291CDSPTSZX'},\n", + " {'user_name': '20240292CDSPTSZX'},\n", + " {'user_name': '20240293CDSPTSZX'},\n", + " {'user_name': '20240294CDSPTSZX'},\n", + " {'user_name': '20240295CDSPTSZX'},\n", + " {'user_name': '20240296CDSPTSZX'},\n", + " {'user_name': '20240297CDSPTSZX'},\n", + " {'user_name': '20240298CDSPTSZX'},\n", + " {'user_name': '20240299CDSPTSZX'},\n", + " {'user_name': '20240300CDSPTSZX'},\n", + " {'user_name': '20240301CDSPTSZX'},\n", + " {'user_name': '20240302CDSPTSZX'},\n", + " {'user_name': '20240303CDSPTSZX'},\n", + " {'user_name': '20240304CDSPTSZX'},\n", + " {'user_name': '20240305CDSPTSZX'},\n", + " {'user_name': '20240306CDSPTSZX'},\n", + " {'user_name': '20240307CDSPTSZX'},\n", + " {'user_name': '20240308CDSPTSZX'},\n", + " {'user_name': '20240309CDSPTSZX'},\n", + " {'user_name': '20240310CDSPTSZX'},\n", + " {'user_name': '20240312CDSPTSZX'},\n", + " {'user_name': '20240313CDSPTSZX'},\n", + " {'user_name': '20240314CDSPTSZX'},\n", + " {'user_name': '20240315CDSPTSZX'},\n", + " {'user_name': '20240316CDSPTSZX'},\n", + " {'user_name': '20240318CDSPTSZX'},\n", + " {'user_name': '20240319CDSPTSZX'},\n", + " {'user_name': '20240320CDSPTSZX'},\n", + " {'user_name': '20240321CDSPTSZX'},\n", + " {'user_name': '20240322CDSPTSZX'},\n", + " {'user_name': '20240323CDSPTSZX'},\n", + " {'user_name': '20240324CDSPTSZX'},\n", + " {'user_name': '20240325CDSPTSZX'},\n", + " {'user_name': '20240326CDSPTSZX'},\n", + " {'user_name': '20240327CDSPTSZX'},\n", + " {'user_name': '20240328CDSPTSZX'},\n", + " {'user_name': '20240329CDSPTSZX'},\n", + " {'user_name': '20240330CDSPTSZX'},\n", + " {'user_name': '20240332CDSPTSZX'},\n", + " {'user_name': '20240334CDSPTSZX'},\n", + " {'user_name': '20240335CDSPTSZX'},\n", + " {'user_name': '20240336CDSPTSZX'},\n", + " {'user_name': '20240337CDSPTSZX'},\n", + " {'user_name': '20240339CDSPTSZX'},\n", + " {'user_name': '20240340CDSPTSZX'},\n", + " {'user_name': '20240341CDSPTSZX'},\n", + " {'user_name': '20240342CDSPTSZX'},\n", + " {'user_name': '20240343CDSPTSZX'},\n", + " {'user_name': '20240344CDSPTSZX'},\n", + " {'user_name': '20240345CDSPTSZX'},\n", + " {'user_name': '20240346CDSPTSZX'},\n", + " {'user_name': '20240347CDSPTSZX'},\n", + " {'user_name': '20240348CDSPTSZX'},\n", + " {'user_name': '20240349CDSPTSZX'},\n", + " {'user_name': '20240352CDSPTSZX'},\n", + " {'user_name': '20240353CDSPTSZX'},\n", + " {'user_name': '20240354CDSPTSZX'},\n", + " {'user_name': '20240355CDSPTSZX'},\n", + " {'user_name': '20240356CDSPTSZX'},\n", + " {'user_name': '20240357CDSPTSZX'},\n", + " {'user_name': '20240358CDSPTSZX'},\n", + " {'user_name': '20240359CDSPTSZX'},\n", + " {'user_name': '20240360CDSPTSZX'},\n", + " {'user_name': '20240361CDSPTSZX'},\n", + " {'user_name': '20240362CDSPTSZX'},\n", + " {'user_name': '20240363CDSPTSZX'},\n", + " {'user_name': '20240364CDSPTSZX'},\n", + " {'user_name': '20240365CDSPTSZX'},\n", + " {'user_name': '20240366CDSPTSZX'},\n", + " {'user_name': '20240367CDSPTSZX'},\n", + " {'user_name': '20240368CDSPTSZX'},\n", + " {'user_name': '20240369CDSPTSZX'},\n", + " {'user_name': '20240370CDSPTSZX'},\n", + " {'user_name': '20240372CDSPTSZX'},\n", + " {'user_name': '20240373CDSPTSZX'},\n", + " {'user_name': '20240374CDSPTSZX'},\n", + " {'user_name': '20240375CDSPTSZX'},\n", + " {'user_name': '20240376CDSPTSZX'},\n", + " {'user_name': '20240377CDSPTSZX'},\n", + " {'user_name': '20240378CDSPTSZX'},\n", + " {'user_name': '20240379CDSPTSZX'},\n", + " {'user_name': '20240381CDSPTSZX'},\n", + " {'user_name': '20240382CDSPTSZX'},\n", + " {'user_name': '20240384CDSPTSZX'},\n", + " {'user_name': '20240385CDSPTSZX'},\n", + " {'user_name': '20240386CDSPTSZX'},\n", + " {'user_name': '20240387CDSPTSZX'},\n", + " {'user_name': '20240388CDSPTSZX'},\n", + " {'user_name': '20240389CDSPTSZX'},\n", + " {'user_name': '20240390CDSPTSZX'},\n", + " {'user_name': '20240391CDSPTSZX'},\n", + " {'user_name': '20240392CDSPTSZX'},\n", + " {'user_name': '20240393CDSPTSZX'},\n", + " {'user_name': '20240394CDSPTSZX'},\n", + " {'user_name': '20240395CDSPTSZX'},\n", + " {'user_name': '20240396CDSPTSZX'},\n", + " {'user_name': '20240397CDSPTSZX'},\n", + " {'user_name': '20240398CDSPTSZX'},\n", + " {'user_name': '20240399CDSPTSZX'},\n", + " {'user_name': '20240400CDSPTSZX'},\n", + " {'user_name': '20240401CDSPTSZX'},\n", + " {'user_name': '20240402CDSPTSZX'},\n", + " {'user_name': '20240403CDSPTSZX'},\n", + " {'user_name': '20240404CDSPTSZX'},\n", + " {'user_name': '20240405CDSPTSZX'},\n", + " {'user_name': '20240406CDSPTSZX'},\n", + " {'user_name': '20240407CDSPTSZX'},\n", + " {'user_name': '20240408CDSPTSZX'},\n", + " {'user_name': '20240409CDSPTSZX'},\n", + " {'user_name': '20240410CDSPTSZX'},\n", + " {'user_name': '20240411CDSPTSZX'},\n", + " {'user_name': '20240412CDSPTSZX'},\n", + " {'user_name': '20240413CDSPTSZX'},\n", + " {'user_name': '20240414CDSPTSZX'},\n", + " {'user_name': '20240415CDSPTSZX'},\n", + " {'user_name': '20240416CDSPTSZX'},\n", + " {'user_name': '20240417CDSPTSZX'},\n", + " {'user_name': '20240418CDSPTSZX'},\n", + " {'user_name': '20240419CDSPTSZX'},\n", + " {'user_name': '20240420CDSPTSZX'},\n", + " {'user_name': '20240421CDSPTSZX'},\n", + " {'user_name': '20240422CDSPTSZX'},\n", + " {'user_name': '20240423CDSPTSZX'},\n", + " {'user_name': '20240424CDSPTSZX'},\n", + " {'user_name': '20240425CDSPTSZX'},\n", + " {'user_name': '20240427CDSPTSZX'},\n", + " {'user_name': '20240428CDSPTSZX'},\n", + " {'user_name': '20240429CDSPTSZX'},\n", + " {'user_name': '20240430CDSPTSZX'},\n", + " {'user_name': '20240431CDSPTSZX'},\n", + " {'user_name': '20240432CDSPTSZX'},\n", + " {'user_name': '20240433CDSPTSZX'},\n", + " {'user_name': '20240434CDSPTSZX'},\n", + " {'user_name': '20240436CDSPTSZX'},\n", + " {'user_name': '20240437CDSPTSZX'},\n", + " {'user_name': '20240438CDSPTSZX'},\n", + " {'user_name': '20240439CDSPTSZX'},\n", + " {'user_name': '20240440CDSPTSZX'},\n", + " {'user_name': '20240441CDSPTSZX'},\n", + " {'user_name': '20240443CDSPTSZX'},\n", + " {'user_name': '20240444CDSPTSZX'},\n", + " {'user_name': '20240445CDSPTSZX'},\n", + " {'user_name': '20240446CDSPTSZX'},\n", + " {'user_name': '20240447CDSPTSZX'},\n", + " {'user_name': '20240448CDSPTSZX'},\n", + " {'user_name': '20240449CDSPTSZX'},\n", + " {'user_name': '20240450CDSPTSZX'},\n", + " {'user_name': '20240451CDSPTSZX'},\n", + " {'user_name': '20240452CDSPTSZX'},\n", + " {'user_name': '20240453CDSPTSZX'},\n", + " {'user_name': '20240454CDSPTSZX'},\n", + " {'user_name': '20240455CDSPTSZX'},\n", + " {'user_name': '20240456CDSPTSZX'},\n", + " {'user_name': '20240457CDSPTSZX'},\n", + " {'user_name': '20240458CDSPTSZX'},\n", + " {'user_name': '20240459CDSPTSZX'},\n", + " {'user_name': '20240460CDSPTSZX'},\n", + " {'user_name': '20240461CDSPTSZX'},\n", + " {'user_name': '20240462CDSPTSZX'},\n", + " {'user_name': '20240463CDSPTSZX'},\n", + " {'user_name': '20240464CDSPTSZX'},\n", + " {'user_name': '20240465CDSPTSZX'},\n", + " {'user_name': '20240466CDSPTSZX'},\n", + " {'user_name': '20240467CDSPTSZX'},\n", + " {'user_name': '20240468CDSPTSZX'},\n", + " {'user_name': '20240469CDSPTSZX'},\n", + " {'user_name': '20240470CDSPTSZX'},\n", + " {'user_name': '20240472CDSPTSZX'},\n", + " {'user_name': '20240473CDSPTSZX'},\n", + " {'user_name': '20240474CDSPTSZX'},\n", + " {'user_name': '20240475CDSPTSZX'},\n", + " {'user_name': '20240476CDSPTSZX'},\n", + " {'user_name': '20240477CDSPTSZX'},\n", + " {'user_name': '20240479CDSPTSZX'},\n", + " {'user_name': '20240480CDSPTSZX'},\n", + " {'user_name': '20240481CDSPTSZX'},\n", + " {'user_name': '20240482CDSPTSZX'},\n", + " {'user_name': '20240483CDSPTSZX'},\n", + " {'user_name': '20240484CDSPTSZX'},\n", + " {'user_name': '20240485CDSPTSZX'},\n", + " {'user_name': '20240486CDSPTSZX'},\n", + " {'user_name': '20240487CDSPTSZX'},\n", + " {'user_name': '20240488CDSPTSZX'},\n", + " {'user_name': '20240489CDSPTSZX'},\n", + " {'user_name': '20240490CDSPTSZX'},\n", + " {'user_name': '20240491CDSPTSZX'},\n", + " {'user_name': '20240492CDSPTSZX'},\n", + " {'user_name': '20240493CDSPTSZX'},\n", + " {'user_name': '20240494CDSPTSZX'},\n", + " {'user_name': '20240495CDSPTSZX'},\n", + " {'user_name': '20240496CDSPTSZX'},\n", + " ...]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [] }, { "cell_type": "code", - "execution_count": 48, - "id": "8f20375f", + "execution_count": 8, + "id": "77468fa5", "metadata": {}, "outputs": [], "source": [ - "df = pd.DataFrame(table_app)" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "id": "93403945", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Index(['id', 'application_id', 'user_id', 'user_type', 'form_content',\n", - " 'submit_time', 'team_id', 'user_data', 'origin_form'],\n", - " dtype='object')" - ] - }, - "execution_count": 49, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df.columns" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "88caddc9", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
idapplication_iduser_iduser_typeform_contentsubmit_timeteam_iduser_dataorigin_form
0448995100280{\"姓名\": \"唐琪沂\", \"学号\": \"20250423\", \"是否经过监护人和学生本人共...2026-02-24 08:01:4419None{\"input82274\": \"唐琪沂\", \"input89185\": \"20250423\"...
144909584610{\"姓名\": \"瞿子渊\", \"学号\": \"20240533\", \"是否经过监护人和学生本人共...2026-02-24 08:01:4719None{\"input82274\": \"瞿子渊\", \"input89185\": \"20240533\"...
244919567380{\"姓名\": \"陈梓心\", \"学号\": \"26010065\", \"是否经过监护人和学生本人共...2026-02-24 08:01:5119None{\"input82274\": \"陈梓心\", \"input89185\": \"26010065\"...
344929576440{\"姓名\": \"刘斯馨\", \"学号\": \"20240402\", \"是否经过监护人和学生本人共...2026-02-24 18:03:2219None{\"input82274\": \"刘斯馨\", \"input89185\": \"20240402\"...
444939584650{\"姓名\": \"宋振豪\", \"学号\": \"20240576\", \"是否经过监护人和学生本人共...2026-02-24 08:02:4719None{\"input82274\": \"宋振豪\", \"input89185\": \"20240576\"...
..............................
79653199578560{\"姓名\": \"吴承轩\", \"学号\": \"20240705\", \"是否经过监护人和学生本人共...2026-02-25 13:24:2819None{\"input82274\": \"吴承轩\", \"input89185\": \"20240705\"...
79753209564430{\"姓名\": \"姚欣怡\", \"学号\": \"23010643\", \"是否经过监护人和学生本人共...2026-02-25 13:33:4819None{\"input82274\": \"姚欣怡\", \"input89185\": \"23010643\"...
798532195100630{\"姓名\": \"王韵佳\", \"学号\": \"20250479\", \"是否经过监护人和学生本人共...2026-02-25 13:44:2019None{\"input82274\": \"王韵佳\", \"input89185\": \"20250479\"...
79953229565930{\"姓名\": \"蔡玉汝\", \"学号\": \"23010007\", \"是否经过监护人和学生本人共...2026-02-25 13:46:5619None{\"input82274\": \"蔡玉汝\", \"input89185\": \"23010007\"...
80053239568140{\"姓名\": \"马滢然\", \"学号\": \"23010360\", \"是否经过监护人和学生本人共...2026-02-25 13:59:4419None{\"input82274\": \"马滢然\", \"input89185\": \"23010360\"...
\n", - "

801 rows × 9 columns

\n", - "
" - ], - "text/plain": [ - " id application_id user_id user_type \\\n", - "0 4489 95 10028 0 \n", - "1 4490 95 8461 0 \n", - "2 4491 95 6738 0 \n", - "3 4492 95 7644 0 \n", - "4 4493 95 8465 0 \n", - ".. ... ... ... ... \n", - "796 5319 95 7856 0 \n", - "797 5320 95 6443 0 \n", - "798 5321 95 10063 0 \n", - "799 5322 95 6593 0 \n", - "800 5323 95 6814 0 \n", - "\n", - " form_content submit_time \\\n", - "0 {\"姓名\": \"唐琪沂\", \"学号\": \"20250423\", \"是否经过监护人和学生本人共... 2026-02-24 08:01:44 \n", - "1 {\"姓名\": \"瞿子渊\", \"学号\": \"20240533\", \"是否经过监护人和学生本人共... 2026-02-24 08:01:47 \n", - "2 {\"姓名\": \"陈梓心\", \"学号\": \"26010065\", \"是否经过监护人和学生本人共... 2026-02-24 08:01:51 \n", - "3 {\"姓名\": \"刘斯馨\", \"学号\": \"20240402\", \"是否经过监护人和学生本人共... 2026-02-24 18:03:22 \n", - "4 {\"姓名\": \"宋振豪\", \"学号\": \"20240576\", \"是否经过监护人和学生本人共... 2026-02-24 08:02:47 \n", - ".. ... ... \n", - "796 {\"姓名\": \"吴承轩\", \"学号\": \"20240705\", \"是否经过监护人和学生本人共... 2026-02-25 13:24:28 \n", - "797 {\"姓名\": \"姚欣怡\", \"学号\": \"23010643\", \"是否经过监护人和学生本人共... 2026-02-25 13:33:48 \n", - "798 {\"姓名\": \"王韵佳\", \"学号\": \"20250479\", \"是否经过监护人和学生本人共... 2026-02-25 13:44:20 \n", - "799 {\"姓名\": \"蔡玉汝\", \"学号\": \"23010007\", \"是否经过监护人和学生本人共... 2026-02-25 13:46:56 \n", - "800 {\"姓名\": \"马滢然\", \"学号\": \"23010360\", \"是否经过监护人和学生本人共... 2026-02-25 13:59:44 \n", - "\n", - " team_id user_data origin_form \n", - "0 19 None {\"input82274\": \"唐琪沂\", \"input89185\": \"20250423\"... \n", - "1 19 None {\"input82274\": \"瞿子渊\", \"input89185\": \"20240533\"... \n", - "2 19 None {\"input82274\": \"陈梓心\", \"input89185\": \"26010065\"... \n", - "3 19 None {\"input82274\": \"刘斯馨\", \"input89185\": \"20240402\"... \n", - "4 19 None {\"input82274\": \"宋振豪\", \"input89185\": \"20240576\"... \n", - ".. ... ... ... \n", - "796 19 None {\"input82274\": \"吴承轩\", \"input89185\": \"20240705\"... \n", - "797 19 None {\"input82274\": \"姚欣怡\", \"input89185\": \"23010643\"... \n", - "798 19 None {\"input82274\": \"王韵佳\", \"input89185\": \"20250479\"... \n", - "799 19 None {\"input82274\": \"蔡玉汝\", \"input89185\": \"23010007\"... \n", - "800 19 None {\"input82274\": \"马滢然\", \"input89185\": \"23010360\"... \n", - "\n", - "[801 rows x 9 columns]" - ] - }, - "execution_count": 50, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "id": "cf9f0877", - "metadata": {}, - "outputs": [], - "source": [ - "id1 = df[df.duplicated(subset=['user_id'],keep='last')]['id']\n" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "id": "065978e4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Series([], Name: id, dtype: int64)" - ] - }, - "execution_count": 52, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "id1" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "3f2dce88", - "metadata": {}, - "outputs": [], - "source": [ - "for item in id1.tolist():\n", - " sql = f'delete from application_info where id = {item}'\n", - " cursor.execute(sql)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "e325888a", - "metadata": {}, - "outputs": [], - "source": [ - "connection.commit()" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "4c3c2181", - "metadata": {}, - "outputs": [], - "source": [ - "sql1 = \"select * from application_info where application_id=95\"\n", - "cursor.execute(sql1)\n", - "result=cursor.fetchall()\n", - "table_app = create_table(cursor,result)\n", - "\n", - " # cursor.execute(sql_update)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "3b6997e2", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "799" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(table_app)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "e65e7d7f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'id': 4602, 'application_id': 95, 'user_id': 7000, 'user_type': 0, 'form_content': '{\"姓名\": \"导师一班刘梓豪\", \"学号\": \"20250321\", \"是否经过监护人和学生本人共同慎重考虑,自愿申报晚自习\": \"是\"}', 'submit_time': datetime.datetime(2026, 2, 24, 8, 45, 58), 'team_id': 19, 'user_data': None, 'origin_form': '{\"input82274\": \"导师一班刘梓豪\", \"input89185\": \"20250321\", \"radio23109\": 1}'}\n", - "{'id': 4740, 'application_id': 95, 'user_id': 3031, 'user_type': 0, 'form_content': '{\"姓名\": \"黄俊英\", \"学号\": \"23010155\", \"是否经过监护人和学生本人共同慎重考虑,自愿申报晚自习\": \"是\"}', 'submit_time': datetime.datetime(2026, 2, 24, 9, 39, 14), 'team_id': 19, 'user_data': None, 'origin_form': '{\"input82274\": \"黄俊英\", \"input89185\": \"23010155\", \"radio23109\": 1}'}\n", - "{'id': 4757, 'application_id': 95, 'user_id': 4138, 'user_type': 0, 'form_content': '{\"姓名\": \"李沛霖\", \"学号\": \"20240313\", \"是否经过监护人和学生本人共同慎重考虑,自愿申报晚自习\": \"是\"}', 'submit_time': datetime.datetime(2026, 2, 24, 9, 48, 29), 'team_id': 19, 'user_data': None, 'origin_form': '{\"input82274\": \"李沛霖\", \"input89185\": \"20240313\", \"radio23109\": 1}'}\n", - "{'id': 4758, 'application_id': 95, 'user_id': 3620, 'user_type': 0, 'form_content': '{\"姓名\": \"23010047\", \"学号\": \"陈希\", \"是否经过监护人和学生本人共同慎重考虑,自愿申报晚自习\": \"是\"}', 'submit_time': datetime.datetime(2026, 2, 24, 9, 48, 20), 'team_id': 19, 'user_data': None, 'origin_form': '{\"input82274\": \"23010047\", \"input89185\": \"陈希\", \"radio23109\": 1}'}\n", - "{'id': 5006, 'application_id': 95, 'user_id': 4269, 'user_type': 0, 'form_content': '{\"姓名\": \"杨凤\", \"学号\": \"20240575\", \"是否经过监护人和学生本人共同慎重考虑,自愿申报晚自习\": \"是\"}', 'submit_time': datetime.datetime(2026, 2, 24, 13, 41, 33), 'team_id': 19, 'user_data': None, 'origin_form': '{\"input82274\": \"杨凤\", \"input89185\": \"20240575\", \"radio23109\": 1}'}\n" - ] - } - ], - "source": [ - "import json\n", - "for item in table_app:\n", - " tem = json.loads(item[\"form_content\"])\n", - " name = tem['姓名']\n", - " stuid = name2id.get(name,None)\n", - " if not stuid:\n", - " print(item)\n", - " continue\n", - " # else:\n", - " # sql_update = f'''update application_info set user_id={stuid} where id={item[\"id\"]}'''\n", - " # cursor.execute(sql_update)" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "0e9ba4bd", - "metadata": {}, - "outputs": [], - "source": [ - "connection.commit()" + "from requests import get,post\n", + "import pandas as pd\n", + "import time" ] }, { "cell_type": "code", "execution_count": null, - "id": "e5ba39d1", + "id": "295622ec", "metadata": {}, "outputs": [], "source": [ - "黄俊英" + "\n", + "teamId = 19\n", + "ip = \"http://band.hxzhxy.cn\"\n", + "param = {\n", + " \"username\": \"zhongwei\",\n", + " \"password\": \"123456a\",\n", + " \"client_id\": \"client\",\n", + " \"grant_type\": \"password\",\n", + " \"client_secret\": \"123456\",\n", + "}\n", + "data = get(url=f\"http://band.hxzhxy.cn/oauth/token?username=zhongwei&password=123456a&client_id=client&grant_type=password&client_secret=123456\").json()\n", + "token = data[\"access_token\"]\n", + "header = {\n", + " \"content-type\": \"application/json\",\n", + " \"authorization\": f\"Bearer {token}\",\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4edebbfa", + "metadata": {}, + "outputs": [], + "source": [ + "for i in table_app:\n", + " param = {\n", + " \"username\": i['username'],\n", + " \"password\": \"123456a\",\n", + " \"client_id\": \"client\",\n", + " \"grant_type\": \"password\",\n", + " \"client_secret\": \"123456\",\n", + " }\n", + " data = get(url=f\"http://band.hxzhxy.cn/oauth/token\",params=param).json()\n", + " token = data[\"access_token\"]\n" ] } ], diff --git a/数据库/线上/线上数据库.ipynb b/数据库/线上/线上数据库.ipynb index e84b932..e25ab38 100644 --- a/数据库/线上/线上数据库.ipynb +++ b/数据库/线上/线上数据库.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "7538343f", "metadata": {}, "outputs": [], @@ -14,7 +14,7 @@ "import random\n", "# 创建数据库连接\n", "connection = pymysql.connect(\n", - "host='www.hxzhxy.cn',\n", + "host='11.1.1.5',\n", "user='root',\n", "password='@HXYD1109mysql',\n", "database='school_server',\n", @@ -29,7 +29,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "8c88cbf4", "metadata": {}, "outputs": [], @@ -50,7 +50,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "11b4b922", "metadata": {}, "outputs": [], @@ -60,192 +60,2217 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "d711f29c", + "execution_count": 5, + "id": "8aaa223c", "metadata": {}, "outputs": [], "source": [ - "import pandas as pd" + "sql = \"select a.id from air_remote a left join electric_switch_room b on a.switch_room_id=b.id where b.id is NULL\"" ] }, { "cell_type": "code", - "execution_count": null, - "id": "feb31984", - "metadata": {}, - "outputs": [], - "source": [ - "df = pd.DataFrame(table)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "38f39417", - "metadata": {}, - "outputs": [], - "source": [ - "df.value_counts('team_id')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8fba7285", - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "'''INSERT INTO `school_server`.`robot_knowledge_role` ( `role_id`, `knowledge_id`, `team_id`, `create_time`, `update_time`, `doc_id`, `dataset_id`) VALUES (47, 100, 84, 106, '2025-11-03 16:52:53', '2025-11-03 16:52:53', 7568416160399245339, NULL);\n", - "'''" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7a8ebc41", - "metadata": {}, - "outputs": [], - "source": [ - "table[1]" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "631aea15", - "metadata": {}, - "outputs": [], - "source": [ - "values = [f'''(200, {item[\"id\"]}, {item['team_id']}, {item['doc_id']}, {item['dataset_id']})''' for item in table if item['team_id']==106]" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "3eed851e", - "metadata": {}, - "outputs": [], - "source": [ - "values = ','.join(values)" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "c4fe7805", + "execution_count": 6, + "id": "0661d77b", "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "'(200, 1, 106, 7493798895450538011, 7484070579806076980),(200, 2, 106, 7493793640993783820, 7484070579806076980),(200, 3, 106, 7487788096340541490, 7484070579806076980),(200, 4, 106, 7493831983656599588, 7484070579806076980),(200, 5, 106, 7493829638301581346, 7484070579806076980),(200, 6, 106, 7493833309840638002, 7484070579806076980),(200, 7, 106, 7493831831671881740, 7484070579806076980),(200, 8, 106, 7504958246848069695, 7484070579806076980),(200, 9, 106, 7493831043427254287, 7484070579806076980),(200, 10, 106, 7493828500946026523, 7484070579806076980),(200, 12, 106, 7493830959789097010, 7484070579806076980),(200, 14, 106, 7493828993298759680, 7484070579806076980),(200, 15, 106, 7493828981784281140, 7484070579806076980),(200, 16, 106, 7493828981575532559, 7484070579806076980),(200, 17, 106, 7493826379621793801, 7484070579806076980),(200, 18, 106, 7493829827553738786, 7484070579806076980),(200, 19, 106, 7493827900854468623, 7484070579806076980),(200, 64, 106, 7504123255642325000, 7484070579806077000),(200, 170, 106, 7504929805932019712, 7484070579806076980),(200, 171, 106, 7504930636316295168, 7484070579806076980),(200, 173, 106, 7504929616852451391, 7484070579806076980),(200, 174, 106, 7504929523592151066, 7484070579806076980),(200, 175, 106, 7504929527064281097, 7484070579806076980),(200, 176, 106, 7504929527064330249, 7484070579806076980),(200, 177, 106, 7504932503968333862, 7484070579806076980),(200, 179, 106, 7504933626712440832, 7484070579806076980),(200, 180, 106, 7504934665473409035, 7484070579806076980),(200, 181, 106, 7504934665683189801, 7484070579806076980),(200, 182, 106, 7504941148646817844, 7484070579806076980),(200, 183, 106, 7504940351712313359, 7484070579806076980),(200, 188, 106, 7504941839004090420, 7484070579806076980),(200, 192, 106, 7504947533727580186, 7484070579806076980),(200, 193, 106, 7504948407497916431, 7484070579806076980),(200, 208, 106, 7504960381623058441, 7484070579806076980),(200, 217, 106, 7504961143317561384, 7484070579806076980),(200, 220, 106, 7504965659202748451, 7484070579806076980),(200, 227, 106, 7504967980234129442, 7484070579806076980),(200, 228, 106, 7504969293270122511, 7484070579806076980),(200, 229, 106, 7504968994516893748, 7484070579806076980),(200, 230, 106, 7504969659939864585, 7484070579806076980),(200, 231, 106, 7504970197435220018, 7484070579806076980),(200, 232, 106, 7504969659939913737, 7484070579806076980),(200, 233, 106, 7504969843867697171, 7484070579806076980),(200, 234, 106, 7504969893033623567, 7484070579806076980),(200, 235, 106, 7504969659939979273, 7484070579806076980),(200, 236, 106, 7504968426901897216, 7484070579806076980),(200, 237, 106, 7504970197641560090, 7484070579806076980),(200, 238, 106, 7504969844489076748, 7484070579806076980),(200, 239, 106, 7504969873518788646, 7484070579806076980),(200, 240, 106, 7504970367069437963, 7484070579806076980),(200, 241, 106, 7504968426902093824, 7484070579806076980),(200, 242, 106, 7504968426902110208, 7484070579806076980),(200, 243, 106, 7504969844489125900, 7484070579806076980),(200, 244, 106, 7504970197641674778, 7484070579806076980),(200, 245, 106, 7504969893034180623, 7484070579806076980),(200, 246, 106, 7504969907315572776, 7484070579806076980),(200, 247, 106, 7504968426902290432, 7484070579806076980),(200, 248, 106, 7504971290529251354, 7484070579806076980),(200, 249, 106, 7504968994517516340, 7484070579806076980),(200, 250, 106, 7504972149074559010, 7484070579806076980),(200, 251, 106, 7504970954980769819, 7484070579806076980),(200, 252, 106, 7504972243660079138, 7484070579806076980),(200, 253, 106, 7504972243660095522, 7484070579806076980),(200, 254, 106, 7504971459249750028, 7484070579806076980),(200, 255, 106, 7504970300418490409, 7484070579806076980),(200, 256, 106, 7504972579393306665, 7484070579806076980),(200, 257, 106, 7504972243660701730, 7484070579806076980),(200, 258, 106, 7504972243660734498, 7484070579806076980),(200, 259, 106, 7504973775029485577, 7484070579806076980),(200, 260, 106, 7504973222212812837, 7484070579806076980),(200, 261, 106, 7504969293744029696, 7484070579806076980),(200, 262, 106, 7504973436738158633, 7484070579806076980),(200, 263, 106, 7504974642226954276, 7484070579806076980),(200, 264, 106, 7504973775029747721, 7484070579806076980),(200, 265, 106, 7504973775029780489, 7484070579806076980),(200, 266, 106, 7504972244134395938, 7484070579806076980),(200, 267, 106, 7504972581586894875, 7484070579806076980),(200, 268, 106, 7504972581586911259, 7484070579806076980),(200, 269, 106, 7504975438927724584, 7484070579806076980),(200, 270, 106, 7504975438927740968, 7484070579806076980),(200, 271, 106, 7504976476929556530, 7484070579806076980),(200, 272, 106, 7504975868206350347, 7484070579806076980),(200, 273, 106, 7504979646199480330, 7484070579806076980),(200, 274, 106, 7504975438927773736, 7484070579806076980),(200, 275, 106, 7504972685018972212, 7484070579806076980),(200, 276, 106, 7504974960579035151, 7484070579806076980),(200, 277, 106, 7504972685018988596, 7484070579806076980),(200, 278, 106, 7504972685019021364, 7484070579806076980),(200, 279, 106, 7504972685019037748, 7484070579806076980),(200, 280, 106, 7504975438927855656, 7484070579806076980),(200, 281, 106, 7504976003066200074, 7484070579806076980),(200, 282, 106, 7504974960579051535, 7484070579806076980),(200, 283, 106, 7504975438927872040, 7484070579806076980),(200, 284, 106, 7504975438927888424, 7484070579806076980),(200, 285, 106, 7504974960579248143, 7484070579806076980),(200, 286, 106, 7504972685019070516, 7484070579806076980),(200, 287, 106, 7504975438927904808, 7484070579806076980),(200, 288, 106, 7504972685019086900, 7484070579806076980),(200, 289, 106, 7504979646199644170, 7484070579806076980),(200, 290, 106, 7504972685019103284, 7484070579806076980),(200, 291, 106, 7504979008561020991, 7484070579806076980),(200, 292, 106, 7504975906710503465, 7484070579806076980),(200, 293, 106, 7504978010504904740, 7484070579806076980),(200, 294, 106, 7504979008561053759, 7484070579806076980),(200, 295, 106, 7504976476929769522, 7484070579806076980),(200, 296, 106, 7504972685019136052, 7484070579806076980),(200, 297, 106, 7504972685019152436, 7484070579806076980),(200, 298, 106, 7504972685019168820, 7484070579806076980),(200, 299, 106, 7504976003066265610, 7484070579806076980),(200, 300, 106, 7504975438928019496, 7484070579806076980),(200, 301, 106, 7504976476929785906, 7484070579806076980),(200, 302, 106, 7504975438928035880, 7484070579806076980),(200, 303, 106, 7504972685019201588, 7484070579806076980),(200, 304, 106, 7504972685019217972, 7484070579806076980),(200, 305, 106, 7504974960579330063, 7484070579806076980),(200, 306, 106, 7504978181490049039, 7484070579806076980),(200, 307, 106, 7504974960579362831, 7484070579806076980),(200, 308, 106, 7504976476929933362, 7484070579806076980),(200, 309, 106, 7504979008561135679, 7484070579806076980),(200, 310, 106, 7504979008561152063, 7484070579806076980),(200, 311, 106, 7504975439128903714, 7484070579806076980),(200, 329, 106, 7506421855394955327, 7484070579806076980),(200, 336, 106, 7514572124083650594, 7484070579806076980),(200, 337, 106, 7515018357037957172, 7484070579806076980),(200, 338, 106, 7521946826728423462, 7484070579806076980),(200, 339, 106, 7522316877478953012, 7484070579806076980),(200, 340, 106, 7522673039637561382, 7484070579806076980),(200, 341, 106, 7532759381411610624, 7484070579806076980),(200, 342, 106, 7535307477702934571, 7484070579806076980),(200, 343, 106, 7535306311941701641, 7484070579806076980),(200, 344, 106, 7535366138773078050, 7484070579806076980)'" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "[{'id': 3}, {'id': 20}, {'id': 27}, {'id': 30}, {'id': 45}, {'id': 48}, {'id': 52}, {'id': 68}, {'id': 70}, {'id': 71}, {'id': 72}, {'id': 76}, {'id': 97}, {'id': 98}, {'id': 100}, {'id': 101}, {'id': 102}, {'id': 106}, {'id': 107}, {'id': 110}, {'id': 114}, {'id': 115}, {'id': 116}, {'id': 123}, {'id': 124}, {'id': 125}, {'id': 126}, {'id': 127}, {'id': 129}, {'id': 131}, {'id': 133}, {'id': 134}, {'id': 135}, {'id': 136}, {'id': 143}, {'id': 146}, {'id': 150}, {'id': 153}, {'id': 154}, {'id': 155}, {'id': 156}, {'id': 167}, {'id': 170}, {'id': 171}, {'id': 172}, {'id': 178}, {'id': 179}, {'id': 180}, {'id': 184}, {'id': 186}, {'id': 187}]\n" + ] } ], "source": [ - "values" + "cursor.execute(sql)\n", + "data = cursor.fetchall()\n", + "data = create_table(cursor,data)\n", + "print(data)\n" ] }, { "cell_type": "code", - "execution_count": null, - "id": "81dc1d28", + "execution_count": 7, + "id": "637e2c7d", "metadata": {}, "outputs": [], "source": [ - "for item in table:\n", - " values = [f'''(100, {item[\"id\"]}, {item['team_id']}, {item['doc_id']}, {item['dataset_id']})''' for item in table]\n", - " sql = f'''INSERT INTO `school_server`.`robot_knowledge_role` ( `role_id`, `knowledge_id`, `team_id`, `doc_id`, `dataset_id`) VALUES (100, {item[\"id\"]}, {item['team_id']}, {item['doc_id']}, {item['dataset_id']});'''\n", + "for item in data:\n", + " sql = f\"delete from air_remote where id={item['id']}\"\n", " cursor.execute(sql)" ] }, + { + "cell_type": "code", + "execution_count": 8, + "id": "e2e837e0", + "metadata": {}, + "outputs": [], + "source": [ + "connection.commit()\n" + ] + }, { "cell_type": "code", "execution_count": null, - "id": "428c200c", + "id": "af76f358", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c94b1abc", "metadata": {}, "outputs": [], "source": [ - "values = [f'''(200, {item[\"id\"]}, {item['team_id']}, {item['doc_id']}, {item['dataset_id']})''' for item in table if item[\"team_id\"]==106]\n", - "# cursor.execute(sql)" + "import pandas as pd \n", + "data = [\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 117,\n", + " \"mac\": \"98CC4D1245B2\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"514空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"514\",\n", + " \"id\": 256,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 0,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011244\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 2,\n", + " \"switchRoomId\": 78,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 20,\n", + " \"regionId\": 25,\n", + " \"tierName\": \"5楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 1,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 147,\n", + " \"mac\": \"98CC4D1245B2\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"516空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"516\",\n", + " \"id\": 255,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20010682\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 1,\n", + " \"switchRoomId\": 79,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 20,\n", + " \"regionId\": 25,\n", + " \"tierName\": \"5楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 60,\n", + " \"mac\": \"98CC4D1245B2\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"515空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"515\",\n", + " \"id\": 257,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011252\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 3,\n", + " \"switchRoomId\": 80,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 20,\n", + " \"regionId\": 25,\n", + " \"tierName\": \"5楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 63,\n", + " \"mac\": \"98CC4D1245B2\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"520空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"520\",\n", + " \"id\": 260,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011242\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 6,\n", + " \"switchRoomId\": 82,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 20,\n", + " \"regionId\": 25,\n", + " \"tierName\": \"5楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 61,\n", + " \"mac\": \"98CC4D1245B2\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"518空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"518\",\n", + " \"id\": 259,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011280\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 5,\n", + " \"switchRoomId\": 83,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 20,\n", + " \"regionId\": 25,\n", + " \"tierName\": \"5楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 12,\n", + " \"mac\": \"98CC4D1245B2\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"521空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"521\",\n", + " \"id\": 261,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011272\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 7,\n", + " \"switchRoomId\": 84,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 20,\n", + " \"regionId\": 25,\n", + " \"tierName\": \"5楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 62,\n", + " \"mac\": \"98CC4D1245B2\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"519空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"519\",\n", + " \"id\": 262,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011243\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 8,\n", + " \"switchRoomId\": 85,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 20,\n", + " \"regionId\": 25,\n", + " \"tierName\": \"5楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 64,\n", + " \"mac\": \"98CC4D1245B2\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"522空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"522\",\n", + " \"id\": 263,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011271\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 9,\n", + " \"switchRoomId\": 86,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 20,\n", + " \"regionId\": 25,\n", + " \"tierName\": \"5楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 65,\n", + " \"mac\": \"98CC4D1245B2\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"523空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"523\",\n", + " \"id\": 264,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011233\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 10,\n", + " \"switchRoomId\": 87,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 20,\n", + " \"regionId\": 25,\n", + " \"tierName\": \"5楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 138,\n", + " \"mac\": \"98CC4D1245B2\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"524前空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"524\",\n", + " \"id\": 265,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011292\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 11,\n", + " \"switchRoomId\": 129,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 20,\n", + " \"regionId\": 25,\n", + " \"tierName\": \"5楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 2,\n", + " \"mac\": \"98CC4D1233C4\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"401前空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"401\",\n", + " \"id\": 297,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011264\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 1,\n", + " \"switchRoomId\": 132,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 13,\n", + " \"regionId\": 16,\n", + " \"tierName\": \"4楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 67,\n", + " \"mac\": \"98CC4D1233C4\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"402后空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"402\",\n", + " \"id\": 298,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20010686\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 2,\n", + " \"switchRoomId\": 133,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 13,\n", + " \"regionId\": 16,\n", + " \"tierName\": \"4楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 43,\n", + " \"mac\": \"98CC4D1233C4\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"402前空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"402\",\n", + " \"id\": 299,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011245\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 3,\n", + " \"switchRoomId\": 134,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 13,\n", + " \"regionId\": 16,\n", + " \"tierName\": \"4楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 46,\n", + " \"mac\": \"98CC4D1233C4\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"403空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"403\",\n", + " \"id\": 301,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20010696\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 5,\n", + " \"switchRoomId\": 136,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 13,\n", + " \"regionId\": 16,\n", + " \"tierName\": \"4楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 197,\n", + " \"mac\": \"98CC4D1233C4\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"406空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"406\",\n", + " \"id\": 304,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011263\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 8,\n", + " \"switchRoomId\": 139,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 13,\n", + " \"regionId\": 16,\n", + " \"tierName\": \"4楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 73,\n", + " \"mac\": \"98CC4D1233C4\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"410空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"410\",\n", + " \"id\": 309,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011231\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 13,\n", + " \"switchRoomId\": 144,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 13,\n", + " \"regionId\": 16,\n", + " \"tierName\": \"4楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 74,\n", + " \"mac\": \"98CC4D1233C4\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"411空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"411\",\n", + " \"id\": 311,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011229\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 15,\n", + " \"switchRoomId\": 146,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 13,\n", + " \"regionId\": 16,\n", + " \"tierName\": \"4楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 77,\n", + " \"mac\": \"98CC4D1233C4\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"413空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"413\",\n", + " \"id\": 312,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011293\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 16,\n", + " \"switchRoomId\": 147,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 13,\n", + " \"regionId\": 16,\n", + " \"tierName\": \"4楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 25,\n", + " \"mac\": \"98CC4D12463C\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"302空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"302\",\n", + " \"id\": 317,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011278\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 1,\n", + " \"switchRoomId\": 180,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 22,\n", + " \"regionId\": 28,\n", + " \"tierName\": \"3楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 24,\n", + " \"mac\": \"98CC4D12463C\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"301空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"301\",\n", + " \"id\": 318,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011296\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 2,\n", + " \"switchRoomId\": 184,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 22,\n", + " \"regionId\": 28,\n", + " \"tierName\": \"3楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 26,\n", + " \"mac\": \"98CC4D12463C\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"303空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"303\",\n", + " \"id\": 319,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011299\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 3,\n", + " \"switchRoomId\": 185,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 22,\n", + " \"regionId\": 28,\n", + " \"tierName\": \"3楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 28,\n", + " \"mac\": \"98CC4D12463C\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"306空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"306\",\n", + " \"id\": 321,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011273\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 5,\n", + " \"switchRoomId\": 187,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 22,\n", + " \"regionId\": 28,\n", + " \"tierName\": \"3楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 29,\n", + " \"mac\": \"98CC4D12463C\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"307空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"307\",\n", + " \"id\": 322,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011232\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 6,\n", + " \"switchRoomId\": 188,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 22,\n", + " \"regionId\": 28,\n", + " \"tierName\": \"3楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 31,\n", + " \"mac\": \"98CC4D12463C\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"310空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"310\",\n", + " \"id\": 324,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 0,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20010690\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 8,\n", + " \"switchRoomId\": 190,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 22,\n", + " \"regionId\": 28,\n", + " \"tierName\": \"3楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 182,\n", + " \"mac\": \"98CC4D12463C\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"311空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"311\",\n", + " \"id\": 325,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011253\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 9,\n", + " \"switchRoomId\": 191,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 22,\n", + " \"regionId\": 28,\n", + " \"tierName\": \"3楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 33,\n", + " \"mac\": \"98CC4D12463C\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"313空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"313\",\n", + " \"id\": 326,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 0,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20010680\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 10,\n", + " \"switchRoomId\": 192,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 22,\n", + " \"regionId\": 28,\n", + " \"tierName\": \"3楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 34,\n", + " \"mac\": \"98CC4D1248C6\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"314空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"314\",\n", + " \"id\": 343,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011241\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 1,\n", + " \"switchRoomId\": 193,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 22,\n", + " \"regionId\": 29,\n", + " \"tierName\": \"3楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 35,\n", + " \"mac\": \"98CC4D1248C6\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"316空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"316\",\n", + " \"id\": 344,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 0,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011251\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 2,\n", + " \"switchRoomId\": 194,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 22,\n", + " \"regionId\": 29,\n", + " \"tierName\": \"3楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 36,\n", + " \"mac\": \"98CC4D1248C6\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"315空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"315\",\n", + " \"id\": 345,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011288\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 3,\n", + " \"switchRoomId\": 195,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 22,\n", + " \"regionId\": 29,\n", + " \"tierName\": \"3楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 37,\n", + " \"mac\": \"98CC4D1248C6\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"317空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"317\",\n", + " \"id\": 346,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011270\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 4,\n", + " \"switchRoomId\": 196,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 22,\n", + " \"regionId\": 29,\n", + " \"tierName\": \"3楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 38,\n", + " \"mac\": \"98CC4D1248C6\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"319空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"319\",\n", + " \"id\": 347,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011287\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 5,\n", + " \"switchRoomId\": 197,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 22,\n", + " \"regionId\": 29,\n", + " \"tierName\": \"3楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 183,\n", + " \"mac\": \"98CC4D1248C6\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"320空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"320\",\n", + " \"id\": 348,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011283\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 6,\n", + " \"switchRoomId\": 198,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 22,\n", + " \"regionId\": 29,\n", + " \"tierName\": \"3楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 140,\n", + " \"mac\": \"98CC4D1248C6\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"322空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"322\",\n", + " \"id\": 350,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011259\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 8,\n", + " \"switchRoomId\": 200,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 22,\n", + " \"regionId\": 29,\n", + " \"tierName\": \"3楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 141,\n", + " \"mac\": \"98CC4D1248C6\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"323空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"323\",\n", + " \"id\": 349,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011266\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 7,\n", + " \"switchRoomId\": 201,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 22,\n", + " \"regionId\": 29,\n", + " \"tierName\": \"3楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 142,\n", + " \"mac\": \"98CC4D1248C6\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"324空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"324\",\n", + " \"id\": 351,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20010683\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 9,\n", + " \"switchRoomId\": 202,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 22,\n", + " \"regionId\": 29,\n", + " \"tierName\": \"3楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 108,\n", + " \"mac\": \"98CC4D1245F4\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"213空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"213\",\n", + " \"id\": 462,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011295\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 11,\n", + " \"switchRoomId\": 294,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 23,\n", + " \"regionId\": 30,\n", + " \"tierName\": \"2楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 189,\n", + " \"mac\": \"98CC4D12463C\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"305空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"305\",\n", + " \"id\": 320,\n", + " \"TYPE\": \"\",\n", + " \"remoteState\": 1,\n", + " \"sizeType\": 1,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011300\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 4,\n", + " \"switchRoomId\": 432,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 22,\n", + " \"regionId\": 28,\n", + " \"tierName\": \"3楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 193,\n", + " \"mac\": \"98CC4D12463C\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"309空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"309\",\n", + " \"id\": 323,\n", + " \"TYPE\": \"\",\n", + " \"remoteState\": 1,\n", + " \"sizeType\": 1,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011265\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 7,\n", + " \"switchRoomId\": 433,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 22,\n", + " \"regionId\": 28,\n", + " \"tierName\": \"3楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 192,\n", + " \"mac\": \"98CC4D12463C\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"308空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"308\",\n", + " \"id\": 525,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011261\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 12,\n", + " \"switchRoomId\": 435,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 22,\n", + " \"regionId\": 28,\n", + " \"tierName\": \"3楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 191,\n", + " \"mac\": \"98CC4D12463C\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"304空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"304\",\n", + " \"id\": 526,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011237\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 13,\n", + " \"switchRoomId\": 436,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 22,\n", + " \"regionId\": 28,\n", + " \"tierName\": \"3楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 194,\n", + " \"mac\": \"98CC4D1233C4\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"404空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"404\",\n", + " \"id\": 300,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20010695\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 4,\n", + " \"switchRoomId\": 450,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 13,\n", + " \"regionId\": 16,\n", + " \"tierName\": \"4楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 198,\n", + " \"mac\": \"98CC4D1233C4\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"409空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"409\",\n", + " \"id\": 308,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011277\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 12,\n", + " \"switchRoomId\": 452,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 13,\n", + " \"regionId\": 16,\n", + " \"tierName\": \"4楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 199,\n", + " \"mac\": \"98CC4D1233C4\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"412空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"412\",\n", + " \"id\": 315,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 0,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011227\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 19,\n", + " \"switchRoomId\": 454,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 13,\n", + " \"regionId\": 16,\n", + " \"tierName\": \"4楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 195,\n", + " \"mac\": \"98CC4D1233C4\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"401后空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"401\",\n", + " \"id\": 529,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011286\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 21,\n", + " \"switchRoomId\": 455,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 13,\n", + " \"regionId\": 16,\n", + " \"tierName\": \"4楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 196,\n", + " \"mac\": \"98CC4D1233C4\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"405空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"405\",\n", + " \"id\": 530,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011249\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 22,\n", + " \"switchRoomId\": 456,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 13,\n", + " \"regionId\": 16,\n", + " \"tierName\": \"4楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 208,\n", + " \"mac\": \"98CC4D124410\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"424前空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"424\",\n", + " \"id\": 392,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011248\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 1,\n", + " \"switchRoomId\": 475,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 13,\n", + " \"regionId\": 15,\n", + " \"tierName\": \"4楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 206,\n", + " \"mac\": \"98CC4D124410\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"422空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"422\",\n", + " \"id\": 393,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011285\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 2,\n", + " \"switchRoomId\": 476,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 13,\n", + " \"regionId\": 15,\n", + " \"tierName\": \"4楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 200,\n", + " \"mac\": \"98CC4D124410\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"414空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"414\",\n", + " \"id\": 394,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20010698\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 3,\n", + " \"switchRoomId\": 477,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 13,\n", + " \"regionId\": 15,\n", + " \"tierName\": \"4楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 202,\n", + " \"mac\": \"98CC4D124410\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"416空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"416\",\n", + " \"id\": 395,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20010692\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 4,\n", + " \"switchRoomId\": 478,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 13,\n", + " \"regionId\": 15,\n", + " \"tierName\": \"4楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 207,\n", + " \"mac\": \"98CC4D124410\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"423空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"423\",\n", + " \"id\": 396,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011279\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 5,\n", + " \"switchRoomId\": 479,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 13,\n", + " \"regionId\": 15,\n", + " \"tierName\": \"4楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 204,\n", + " \"mac\": \"98CC4D124410\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"418空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"418\",\n", + " \"id\": 399,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011255\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 8,\n", + " \"switchRoomId\": 481,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 13,\n", + " \"regionId\": 15,\n", + " \"tierName\": \"4楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 205,\n", + " \"mac\": \"98CC4D124410\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"420空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"420\",\n", + " \"id\": 400,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011267\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 9,\n", + " \"switchRoomId\": 482,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 13,\n", + " \"regionId\": 15,\n", + " \"tierName\": \"4楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 203,\n", + " \"mac\": \"98CC4D124410\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"417、427空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"417\",\n", + " \"id\": 401,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20010685\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 10,\n", + " \"switchRoomId\": 483,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 13,\n", + " \"regionId\": 15,\n", + " \"tierName\": \"4楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 270,\n", + " \"mac\": \"98CC4D124410\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"417、427空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"427\",\n", + " \"id\": 401,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"250800000020\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 10,\n", + " \"switchRoomId\": 484,\n", + " \"airType\": 1,\n", + " \"areaId\": 9,\n", + " \"tierId\": 13,\n", + " \"regionId\": 15,\n", + " \"tierName\": \"4楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 201,\n", + " \"mac\": \"98CC4D124410\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"415空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"415\",\n", + " \"id\": 402,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20010697\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 11,\n", + " \"switchRoomId\": 485,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 13,\n", + " \"regionId\": 15,\n", + " \"tierName\": \"4楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 210,\n", + " \"mac\": \"98CC4D124410\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"425空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"425\",\n", + " \"id\": 403,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011276\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 12,\n", + " \"switchRoomId\": 486,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 13,\n", + " \"regionId\": 15,\n", + " \"tierName\": \"4楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 211,\n", + " \"mac\": \"98CC4D124410\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"426空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"426\",\n", + " \"id\": 404,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011256\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 13,\n", + " \"switchRoomId\": 487,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 13,\n", + " \"regionId\": 15,\n", + " \"tierName\": \"4楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 209,\n", + " \"mac\": \"98CC4D124410\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"424后空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"424\",\n", + " \"id\": 405,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 0,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011238\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 14,\n", + " \"switchRoomId\": 488,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 13,\n", + " \"regionId\": 15,\n", + " \"tierName\": \"4楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 212,\n", + " \"mac\": \"98CC4D124684\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"501前空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"501\",\n", + " \"id\": 532,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011236\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 1,\n", + " \"switchRoomId\": 496,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 20,\n", + " \"regionId\": 26,\n", + " \"tierName\": \"5楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 213,\n", + " \"mac\": \"98CC4D124684\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"501后空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"501\",\n", + " \"id\": 533,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011291\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 2,\n", + " \"switchRoomId\": 497,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 20,\n", + " \"regionId\": 26,\n", + " \"tierName\": \"5楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 214,\n", + " \"mac\": \"98CC4D124684\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"502后空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"502\",\n", + " \"id\": 534,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 0,\n", + " \"sizeType\": 1,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20010687\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 3,\n", + " \"switchRoomId\": 498,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 20,\n", + " \"regionId\": 26,\n", + " \"tierName\": \"5楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 215,\n", + " \"mac\": \"98CC4D124684\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"505空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"505\",\n", + " \"id\": 539,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": 1,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20010693\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 10,\n", + " \"switchRoomId\": 503,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 20,\n", + " \"regionId\": 26,\n", + " \"tierName\": \"5楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 216,\n", + " \"mac\": \"98CC4D124684\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"507空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"507\",\n", + " \"id\": 540,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": 3,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011297\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 11,\n", + " \"switchRoomId\": 504,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 20,\n", + " \"regionId\": 26,\n", + " \"tierName\": \"5楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 217,\n", + " \"mac\": \"98CC4D124684\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"510空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"510\",\n", + " \"id\": 543,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20010694\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 16,\n", + " \"switchRoomId\": 507,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 20,\n", + " \"regionId\": 26,\n", + " \"tierName\": \"5楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 218,\n", + " \"mac\": \"98CC4D124684\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"511前空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"511\",\n", + " \"id\": 544,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20010691\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 17,\n", + " \"switchRoomId\": 508,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 20,\n", + " \"regionId\": 26,\n", + " \"tierName\": \"5楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 219,\n", + " \"mac\": \"98CC4D124684\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"511后空调、512空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"511\",\n", + " \"id\": 545,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011235\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 18,\n", + " \"switchRoomId\": 509,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 20,\n", + " \"regionId\": 26,\n", + " \"tierName\": \"5楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 220,\n", + " \"mac\": \"98CC4D124684\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"511后空调、512空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"512\",\n", + " \"id\": 545,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011234\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 18,\n", + " \"switchRoomId\": 510,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 20,\n", + " \"regionId\": 26,\n", + " \"tierName\": \"5楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B1区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 221,\n", + " \"mac\": \"98CC4D124684\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"513空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"513\",\n", + " \"id\": 546,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20010681\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 20,\n", + " \"switchRoomId\": 511,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 20,\n", + " \"regionId\": 26,\n", + " \"tierName\": \"5楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 223,\n", + " \"mac\": \"98CC4D1245B2\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"524后空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"524\",\n", + " \"id\": 266,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011301\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 12,\n", + " \"switchRoomId\": 515,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 20,\n", + " \"regionId\": 25,\n", + " \"tierName\": \"5楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 0,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " },\n", + " {\n", + " \"teamName\": \"成都市泡桐树中学\",\n", + " \"regionName\": \"B2区\",\n", + " \"dongId\": 11,\n", + " \"airId\": 224,\n", + " \"mac\": \"98CC4D1245B2\",\n", + " \"areaName\": \"金沙校区\",\n", + " \"switchName\": \"525后空调\",\n", + " \"psSum\": 0,\n", + " \"classRoom\": \"525\",\n", + " \"id\": 267,\n", + " \"TYPE\": None,\n", + " \"remoteState\": 1,\n", + " \"sizeType\": None,\n", + " \"dongName\": \"主楼\",\n", + " \"airNo\": \"20011290\",\n", + " \"modelState\": 1,\n", + " \"mainType\": \"教室\",\n", + " \"nno\": 13,\n", + " \"switchRoomId\": 516,\n", + " \"airType\": 0,\n", + " \"areaId\": 9,\n", + " \"tierId\": 20,\n", + " \"regionId\": 25,\n", + " \"tierName\": \"5楼\",\n", + " \"teamId\": 19,\n", + " \"airState\": 1,\n", + " \"psMonthSum\": 0,\n", + " \"switchState\": 1\n", + " }\n", + " ]\n", + "df=pd.DataFrame(data)" ] }, { "cell_type": "code", - "execution_count": 30, - "id": "ce9e5ae2", + "execution_count": null, + "id": "de0a12e3", "metadata": {}, "outputs": [], - "source": [ - "sql = f'''INSERT INTO `school_server`.`robot_knowledge_role` ( `role_id`, `knowledge_id`, `team_id`, `doc_id`, `dataset_id`) VALUES {values};'''" - ] + "source": [] }, { "cell_type": "code", - "execution_count": 33, - "id": "58d26919", + "execution_count": null, + "id": "61478cf7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'INSERT INTO `school_server`.`robot_knowledge_role` ( `role_id`, `knowledge_id`, `team_id`, `doc_id`, `dataset_id`) VALUES (200, 1, 106, 7493798895450538011, 7484070579806076980),(200, 2, 106, 7493793640993783820, 7484070579806076980),(200, 3, 106, 7487788096340541490, 7484070579806076980),(200, 4, 106, 7493831983656599588, 7484070579806076980),(200, 5, 106, 7493829638301581346, 7484070579806076980),(200, 6, 106, 7493833309840638002, 7484070579806076980),(200, 7, 106, 7493831831671881740, 7484070579806076980),(200, 8, 106, 7504958246848069695, 7484070579806076980),(200, 9, 106, 7493831043427254287, 7484070579806076980),(200, 10, 106, 7493828500946026523, 7484070579806076980),(200, 12, 106, 7493830959789097010, 7484070579806076980),(200, 14, 106, 7493828993298759680, 7484070579806076980),(200, 15, 106, 7493828981784281140, 7484070579806076980),(200, 16, 106, 7493828981575532559, 7484070579806076980),(200, 17, 106, 7493826379621793801, 7484070579806076980),(200, 18, 106, 7493829827553738786, 7484070579806076980),(200, 19, 106, 7493827900854468623, 7484070579806076980),(200, 64, 106, 7504123255642325000, 7484070579806077000),(200, 170, 106, 7504929805932019712, 7484070579806076980),(200, 171, 106, 7504930636316295168, 7484070579806076980),(200, 173, 106, 7504929616852451391, 7484070579806076980),(200, 174, 106, 7504929523592151066, 7484070579806076980),(200, 175, 106, 7504929527064281097, 7484070579806076980),(200, 176, 106, 7504929527064330249, 7484070579806076980),(200, 177, 106, 7504932503968333862, 7484070579806076980),(200, 179, 106, 7504933626712440832, 7484070579806076980),(200, 180, 106, 7504934665473409035, 7484070579806076980),(200, 181, 106, 7504934665683189801, 7484070579806076980),(200, 182, 106, 7504941148646817844, 7484070579806076980),(200, 183, 106, 7504940351712313359, 7484070579806076980),(200, 188, 106, 7504941839004090420, 7484070579806076980),(200, 192, 106, 7504947533727580186, 7484070579806076980),(200, 193, 106, 7504948407497916431, 7484070579806076980),(200, 208, 106, 7504960381623058441, 7484070579806076980),(200, 217, 106, 7504961143317561384, 7484070579806076980),(200, 220, 106, 7504965659202748451, 7484070579806076980),(200, 227, 106, 7504967980234129442, 7484070579806076980),(200, 228, 106, 7504969293270122511, 7484070579806076980),(200, 229, 106, 7504968994516893748, 7484070579806076980),(200, 230, 106, 7504969659939864585, 7484070579806076980),(200, 231, 106, 7504970197435220018, 7484070579806076980),(200, 232, 106, 7504969659939913737, 7484070579806076980),(200, 233, 106, 7504969843867697171, 7484070579806076980),(200, 234, 106, 7504969893033623567, 7484070579806076980),(200, 235, 106, 7504969659939979273, 7484070579806076980),(200, 236, 106, 7504968426901897216, 7484070579806076980),(200, 237, 106, 7504970197641560090, 7484070579806076980),(200, 238, 106, 7504969844489076748, 7484070579806076980),(200, 239, 106, 7504969873518788646, 7484070579806076980),(200, 240, 106, 7504970367069437963, 7484070579806076980),(200, 241, 106, 7504968426902093824, 7484070579806076980),(200, 242, 106, 7504968426902110208, 7484070579806076980),(200, 243, 106, 7504969844489125900, 7484070579806076980),(200, 244, 106, 7504970197641674778, 7484070579806076980),(200, 245, 106, 7504969893034180623, 7484070579806076980),(200, 246, 106, 7504969907315572776, 7484070579806076980),(200, 247, 106, 7504968426902290432, 7484070579806076980),(200, 248, 106, 7504971290529251354, 7484070579806076980),(200, 249, 106, 7504968994517516340, 7484070579806076980),(200, 250, 106, 7504972149074559010, 7484070579806076980),(200, 251, 106, 7504970954980769819, 7484070579806076980),(200, 252, 106, 7504972243660079138, 7484070579806076980),(200, 253, 106, 7504972243660095522, 7484070579806076980),(200, 254, 106, 7504971459249750028, 7484070579806076980),(200, 255, 106, 7504970300418490409, 7484070579806076980),(200, 256, 106, 7504972579393306665, 7484070579806076980),(200, 257, 106, 7504972243660701730, 7484070579806076980),(200, 258, 106, 7504972243660734498, 7484070579806076980),(200, 259, 106, 7504973775029485577, 7484070579806076980),(200, 260, 106, 7504973222212812837, 7484070579806076980),(200, 261, 106, 7504969293744029696, 7484070579806076980),(200, 262, 106, 7504973436738158633, 7484070579806076980),(200, 263, 106, 7504974642226954276, 7484070579806076980),(200, 264, 106, 7504973775029747721, 7484070579806076980),(200, 265, 106, 7504973775029780489, 7484070579806076980),(200, 266, 106, 7504972244134395938, 7484070579806076980),(200, 267, 106, 7504972581586894875, 7484070579806076980),(200, 268, 106, 7504972581586911259, 7484070579806076980),(200, 269, 106, 7504975438927724584, 7484070579806076980),(200, 270, 106, 7504975438927740968, 7484070579806076980),(200, 271, 106, 7504976476929556530, 7484070579806076980),(200, 272, 106, 7504975868206350347, 7484070579806076980),(200, 273, 106, 7504979646199480330, 7484070579806076980),(200, 274, 106, 7504975438927773736, 7484070579806076980),(200, 275, 106, 7504972685018972212, 7484070579806076980),(200, 276, 106, 7504974960579035151, 7484070579806076980),(200, 277, 106, 7504972685018988596, 7484070579806076980),(200, 278, 106, 7504972685019021364, 7484070579806076980),(200, 279, 106, 7504972685019037748, 7484070579806076980),(200, 280, 106, 7504975438927855656, 7484070579806076980),(200, 281, 106, 7504976003066200074, 7484070579806076980),(200, 282, 106, 7504974960579051535, 7484070579806076980),(200, 283, 106, 7504975438927872040, 7484070579806076980),(200, 284, 106, 7504975438927888424, 7484070579806076980),(200, 285, 106, 7504974960579248143, 7484070579806076980),(200, 286, 106, 7504972685019070516, 7484070579806076980),(200, 287, 106, 7504975438927904808, 7484070579806076980),(200, 288, 106, 7504972685019086900, 7484070579806076980),(200, 289, 106, 7504979646199644170, 7484070579806076980),(200, 290, 106, 7504972685019103284, 7484070579806076980),(200, 291, 106, 7504979008561020991, 7484070579806076980),(200, 292, 106, 7504975906710503465, 7484070579806076980),(200, 293, 106, 7504978010504904740, 7484070579806076980),(200, 294, 106, 7504979008561053759, 7484070579806076980),(200, 295, 106, 7504976476929769522, 7484070579806076980),(200, 296, 106, 7504972685019136052, 7484070579806076980),(200, 297, 106, 7504972685019152436, 7484070579806076980),(200, 298, 106, 7504972685019168820, 7484070579806076980),(200, 299, 106, 7504976003066265610, 7484070579806076980),(200, 300, 106, 7504975438928019496, 7484070579806076980),(200, 301, 106, 7504976476929785906, 7484070579806076980),(200, 302, 106, 7504975438928035880, 7484070579806076980),(200, 303, 106, 7504972685019201588, 7484070579806076980),(200, 304, 106, 7504972685019217972, 7484070579806076980),(200, 305, 106, 7504974960579330063, 7484070579806076980),(200, 306, 106, 7504978181490049039, 7484070579806076980),(200, 307, 106, 7504974960579362831, 7484070579806076980),(200, 308, 106, 7504976476929933362, 7484070579806076980),(200, 309, 106, 7504979008561135679, 7484070579806076980),(200, 310, 106, 7504979008561152063, 7484070579806076980),(200, 311, 106, 7504975439128903714, 7484070579806076980),(200, 329, 106, 7506421855394955327, 7484070579806076980),(200, 336, 106, 7514572124083650594, 7484070579806076980),(200, 337, 106, 7515018357037957172, 7484070579806076980),(200, 338, 106, 7521946826728423462, 7484070579806076980),(200, 339, 106, 7522316877478953012, 7484070579806076980),(200, 340, 106, 7522673039637561382, 7484070579806076980),(200, 341, 106, 7532759381411610624, 7484070579806076980),(200, 342, 106, 7535307477702934571, 7484070579806076980),(200, 343, 106, 7535306311941701641, 7484070579806076980),(200, 344, 106, 7535366138773078050, 7484070579806076980);'" + "" ] }, - "execution_count": 33, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], - "source": [ - "sql" - ] + "source": [] }, { "cell_type": "code", "execution_count": null, - "id": "6a8e9a62", - "metadata": {}, - "outputs": [ - { - "ename": "InterfaceError", - "evalue": "(0, '')", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mInterfaceError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[24], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m cursor\u001b[38;5;241m.\u001b[39mexecute(sql)\n", - "File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\pymysql\\cursors.py:153\u001b[0m, in \u001b[0;36mCursor.execute\u001b[1;34m(self, query, args)\u001b[0m\n\u001b[0;32m 149\u001b[0m \u001b[38;5;28;01mpass\u001b[39;00m\n\u001b[0;32m 151\u001b[0m query \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmogrify(query, args)\n\u001b[1;32m--> 153\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_query(query)\n\u001b[0;32m 154\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_executed \u001b[38;5;241m=\u001b[39m query\n\u001b[0;32m 155\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n", - "File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\pymysql\\cursors.py:322\u001b[0m, in \u001b[0;36mCursor._query\u001b[1;34m(self, q)\u001b[0m\n\u001b[0;32m 320\u001b[0m conn \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_db()\n\u001b[0;32m 321\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_clear_result()\n\u001b[1;32m--> 322\u001b[0m conn\u001b[38;5;241m.\u001b[39mquery(q)\n\u001b[0;32m 323\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_do_get_result()\n\u001b[0;32m 324\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mrowcount\n", - "File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\pymysql\\connections.py:562\u001b[0m, in \u001b[0;36mConnection.query\u001b[1;34m(self, sql, unbuffered)\u001b[0m\n\u001b[0;32m 560\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(sql, \u001b[38;5;28mstr\u001b[39m):\n\u001b[0;32m 561\u001b[0m sql \u001b[38;5;241m=\u001b[39m sql\u001b[38;5;241m.\u001b[39mencode(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mencoding, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msurrogateescape\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m--> 562\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_execute_command(COMMAND\u001b[38;5;241m.\u001b[39mCOM_QUERY, sql)\n\u001b[0;32m 563\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_affected_rows \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_read_query_result(unbuffered\u001b[38;5;241m=\u001b[39munbuffered)\n\u001b[0;32m 564\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_affected_rows\n", - "File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\pymysql\\connections.py:843\u001b[0m, in \u001b[0;36mConnection._execute_command\u001b[1;34m(self, command, sql)\u001b[0m\n\u001b[0;32m 838\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 839\u001b[0m \u001b[38;5;124;03m:raise InterfaceError: If the connection is closed.\u001b[39;00m\n\u001b[0;32m 840\u001b[0m \u001b[38;5;124;03m:raise ValueError: If no username was specified.\u001b[39;00m\n\u001b[0;32m 841\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 842\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_sock:\n\u001b[1;32m--> 843\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m err\u001b[38;5;241m.\u001b[39mInterfaceError(\u001b[38;5;241m0\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 845\u001b[0m \u001b[38;5;66;03m# If the last query was unbuffered, make sure it finishes before\u001b[39;00m\n\u001b[0;32m 846\u001b[0m \u001b[38;5;66;03m# sending new commands\u001b[39;00m\n\u001b[0;32m 847\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_result \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n", - "\u001b[1;31mInterfaceError\u001b[0m: (0, '')" - ] - } - ], - "source": [ - "INSERT INTO `school_server`.`robot_knowledge_role` (`id`, `role_id`, `knowledge_id`, `team_id`, `create_time`, `update_time`, `doc_id`, `dataset_id`) VALUES (47, 999, 84, 106, '2025-11-03 16:52:53', '2025-11-03 16:52:53', 7568416160399245339, NULL);" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "bf2cd4f7", + "id": "32d77e66", "metadata": {}, "outputs": [], - "source": [ - "connection.commit()" - ] + "source": [] } ], "metadata": { "kernelspec": { - "display_name": "base", + "display_name": "Python 3", "language": "python", "name": "python3" }, diff --git a/新平台/login.py b/新平台/login.py new file mode 100644 index 0000000..3e58a7f --- /dev/null +++ b/新平台/login.py @@ -0,0 +1,15 @@ +# %% +import os +os.add_dll_directory(os.getcwd()) +from pctoken import get_token +from requests import get,post + +# %% +BASE_URL = 'http://net2.hxzhxy.cn:5092' +USERNAME = 'xiatianle' +PASSWORD = 'Xia123456' +TOKEN = get_token(BASE_URL, USERNAME, PASSWORD)["access_token"] + + +# %% +print(TOKEN) diff --git a/新平台/pctoken.py b/新平台/pctoken.py index abbeca4..9259830 100644 --- a/新平台/pctoken.py +++ b/新平台/pctoken.py @@ -27,7 +27,7 @@ def get_token(base_url: str, username: str, password: str) -> dict: oauth_client = 'hongxapp:hongxplapp' enc_password = encrypt_password(password, enc_key) - + print(enc_password) url = f"{base_url.rstrip('/')}/auth/oauth2/token" params = { 'username': username, diff --git a/新平台/test.ipynb b/新平台/test.ipynb index 3b5726a..37ea2e4 100644 --- a/新平台/test.ipynb +++ b/新平台/test.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "id": "70c9ccec", "metadata": {}, "outputs": [], @@ -15,7 +15,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "id": "379f4db2", "metadata": {}, "outputs": [ @@ -23,81 +23,287 @@ "name": "stdout", "output_type": "stream", "text": [ - "342e75d2-dd64-4d6b-9316-da51fdce642d\n" + "bN7Xn9xVdkyg\n" + ] + }, + { + "ename": "", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31m在当前单元格或上一个单元格中执行代码时 Kernel 崩溃。\n", + "\u001b[1;31m请查看单元格中的代码,以确定故障的可能原因。\n", + "\u001b[1;31m单击此处了解详细信息。\n", + "\u001b[1;31m有关更多详细信息,请查看 Jupyter log。" ] } ], "source": [ - "BASE_URL = \"http://192.168.0.244:9999\"\n", - "data = get_token(BASE_URL, \"admin\", \"123456\")\n", - "TOKEN = data.get(\"access_token\", \"\")\n", - "print(TOKEN)\n", - "headers = {\n", - " \"Authorization\": f\"Bearer {TOKEN}\",\n", - " \"hx-client\": \"hongxapp\",\n", - "}" + "BASE_URL = 'http://192.168.0.10:9999'\n", + "USERNAME = '00000001CDSPTSZX'\n", + "PASSWORD = 'xia123456'\n", + "TOKEN = get_token(BASE_URL, USERNAME, PASSWORD)[\"access_token\"]\n" ] }, { "cell_type": "code", - "execution_count": 31, - "id": "820f6d23", + "execution_count": 5, + "id": "dcf475eb", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'{\"timestamp\":\"2026-02-27 15:36:51\",\"status\":500,\"error\":\"Internal Server Error\",\"path\":\"/videoInfoStream/page\"}'" + "'ee5552cb-7dd8-46b4-b54a-e8cf57e90ddc'" ] }, - "execution_count": 31, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], + "source": [ + "TOKEN" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "820f6d23", + "metadata": {}, + "outputs": [], "source": [ "headers = {\n", " \"Authorization\": f\"Bearer {TOKEN}\",\n", " \"HX-CLIENT\": \"hongxapp\",\n", - " 'H-SV-CODE':'video',\n", - " 'Host': '192.168.0.111:5173',\n", - " 'Referer': 'http://192.168.0.111:5173/'\n", - "}\n", - "get( \" http://192.168.0.244:9999/video/videoInfoStream/page?current=1&size=10&descs=&ascs=\",headers=headers).text" + " 'hx-p-type':'WEB',\n", + " 'hx-t-type':'PLATFORM',\n", + "}\n" ] }, { "cell_type": "code", - "execution_count": null, - "id": "2c7227e6", + "execution_count": 27, + "id": "dd5eb589", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'{\"timestamp\":\"2026-02-27 15:34:24\",\"status\":500,\"error\":\"Internal Server Error\",\"path\":\"/podPhoto/pageInfoBySections\"}'" + "{'Authorization': 'Bearer 295b20e2-1ce0-44ab-8d74-384cdefc16bb',\n", + " 'HX-CLIENT': 'hongxapp',\n", + " 'hx-p-type': 'WEB',\n", + " 'hx-t-type': 'PLATFORM'}" ] }, - "execution_count": 21, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], - "source": [] + "source": [ + "headers" + ] }, { "cell_type": "code", "execution_count": null, - "id": "1822efb2", + "id": "869391ea", "metadata": {}, "outputs": [], "source": [ - " # \"Accept\": 'application/json, text/plain, */*',\n", - "# 'Connection': 'keep-alive',\n", - "# 'H-SV-CODE':'video',\n", - "# 'HX-CLIENT':'hongxapp',\n", - "# 'Host': '192.168.0.111:5173',\n", - "# 'Referer': 'http://192.168.0.111:5173/'" + "post('http://192.168.0.10:8888/api/admin/user/v1/exist/add', headers=headers, json={\"userId\":\"2\",\"deptId\":\"19\",\"roleId\":\"2053724615032193025\"})\n", + "{\"userId\":\"2\",\"deptId\":\"110\",\"roleId\":\"2055118564695838722\"}\n", + "{\"userId\":\"2\",\"deptId\":\"119\",\"roleId\":\"2059515940711231489\"}" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "7006382d", + "metadata": {}, + "outputs": [], + "source": [ + "user_ids = [\n", + " 3,\n", + " 4,\n", + " 6,\n", + " 24,\n", + " 31,\n", + " 308,\n", + " 909,\n", + " 917,\n", + " 918,\n", + " 1145,\n", + " 3690,\n", + " 3698,\n", + " 3828,\n", + " 3842,\n", + " 3843,\n", + " 3844,\n", + " 3895,\n", + " 3899,\n", + " 3912,\n", + " 3913,\n", + " 3935,\n", + " 3936,\n", + " 3988,\n", + " 5440,\n", + " 5492,\n", + " 7696,\n", + " 7713,\n", + " 7714,\n", + " 7723,\n", + " 7728,\n", + " 2059454179031199746]" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "0e7366e2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\"code\":1,\"msg\":\"用户不存在\",\"data\":null,\"ok\":false}\n", + "{\"code\":1,\"msg\":\"用户不存在\",\"data\":null,\"ok\":false}\n", + "{\"code\":1,\"msg\":\"用户不存在\",\"data\":null,\"ok\":false}\n", + "==================================================\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "==================================================\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "==================================================\n", + "{\"code\":1,\"msg\":\"用户不存在\",\"data\":null,\"ok\":false}\n", + "{\"code\":1,\"msg\":\"用户不存在\",\"data\":null,\"ok\":false}\n", + "{\"code\":1,\"msg\":\"用户不存在\",\"data\":null,\"ok\":false}\n", + "==================================================\n", + "{\"code\":1,\"msg\":\"用户不存在\",\"data\":null,\"ok\":false}\n", + "{\"code\":1,\"msg\":\"用户不存在\",\"data\":null,\"ok\":false}\n", + "{\"code\":1,\"msg\":\"用户不存在\",\"data\":null,\"ok\":false}\n", + "==================================================\n", + "{\"code\":1,\"msg\":\"用户不存在\",\"data\":null,\"ok\":false}\n", + "{\"code\":1,\"msg\":\"用户不存在\",\"data\":null,\"ok\":false}\n", + "{\"code\":1,\"msg\":\"用户不存在\",\"data\":null,\"ok\":false}\n", + "==================================================\n", + "{\"code\":1,\"msg\":\"用户不存在\",\"data\":null,\"ok\":false}\n", + "{\"code\":1,\"msg\":\"用户不存在\",\"data\":null,\"ok\":false}\n", + "{\"code\":1,\"msg\":\"用户不存在\",\"data\":null,\"ok\":false}\n", + "==================================================\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "==================================================\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "==================================================\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "==================================================\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "==================================================\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "==================================================\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "==================================================\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "==================================================\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "==================================================\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "==================================================\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "==================================================\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "==================================================\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "==================================================\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "==================================================\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "==================================================\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "==================================================\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "==================================================\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "==================================================\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "==================================================\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "==================================================\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "==================================================\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "==================================================\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "==================================================\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "==================================================\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "{\"code\":0,\"msg\":null,\"data\":true,\"ok\":true}\n", + "==================================================\n" + ] + } + ], + "source": [ + "for user_id in user_ids:\n", + " resp = post('http://192.168.0.10:9999/admin/user/v1/exist/add', headers=headers, json={\"userId\":str(user_id),\"deptId\":\"110\",\"roleId\":\"2055118564695838722\"}).text\n", + " resp1 = post('http://192.168.0.10:9999/admin/user/v1/exist/add', headers=headers, json={\"userId\":str(user_id),\"deptId\":\"119\",\"roleId\":\"2059515940711231489\"}).text\n", + " resp2 = post('http://192.168.0.10:9999/admin/user/v1/exist/add', headers=headers, json={\"userId\":str(user_id),\"deptId\":\"19\",\"roleId\":\"2053724615032193025\"}).text\n", + " print(resp)\n", + " print(resp1)\n", + " print(resp2)\n", + " print(\"=\"*50)\n" ] } ], diff --git a/智慧校园/同文/班牌机.ipynb b/智慧校园/同文/班牌机.ipynb new file mode 100644 index 0000000..7f9e9d7 --- /dev/null +++ b/智慧校园/同文/班牌机.ipynb @@ -0,0 +1,1640 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 5, + "id": "7227c5fa", + "metadata": {}, + "outputs": [], + "source": [ + "from requests import get,post\n", + "import time\n", + "ip = \"http://band.hxzhxy.cn\"\n", + "param = {\n", + " \"username\": \"tangchao\",\n", + " \"password\": \"123456a\",\n", + " \"client_id\": \"client\",\n", + " \"grant_type\": \"password\",\n", + " \"client_secret\": \"123456\",\n", + "}\n", + "data = get(url=f\"http://band.hxzhxy.cn/oauth/token?username=zhongwei&password=123456a&client_id=client&grant_type=password&client_secret=123456\").json()\n", + "token = data[\"access_token\"]\n", + "header = {\n", + " \"content-type\": \"application/json\",\n", + " \"authorization\": f\"Bearer {token}\",\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "47d5910b", + "metadata": {}, + "outputs": [], + "source": [ + "header" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "c6246dfa", + "metadata": {}, + "outputs": [], + "source": [ + "data = get(f\"https://band.hxzhxy.cn/card/listStuWithRule?type=2¤tPage=1&pageNumber=0&pageSize=200&gradeId=&classId=&screen=0¶m=&teamId=119&access_token={token}\").json()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "415cd9b4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'success': True,\n", + " 'msg': '操作成功',\n", + " 'code': 0,\n", + " 'data': {'listData': [{'姓名': '蒲秀娟',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 1,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1025',\n", + " '手环号': '3478914385'},\n", + " {'姓名': '物业2021',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 2,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '2021',\n", + " '手环号': '3478812113'},\n", + " {'姓名': '张明惠',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 3,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1038',\n", + " '手环号': '3470455681'},\n", + " {'姓名': '唐廷凤',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 4,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1046',\n", + " '手环号': '3478379537'},\n", + " {'姓名': '张玉琼',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 5,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1070',\n", + " '手环号': '3470294913'},\n", + " {'姓名': '刘杰',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 6,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1020',\n", + " '手环号': '3478769761'},\n", + " {'姓名': '王菁婵',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 7,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1053',\n", + " '手环号': '3478823249'},\n", + " {'姓名': '王永久',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 8,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1017',\n", + " '手环号': '3478934433'},\n", + " {'姓名': '唐光辉',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 9,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': '28学部',\n", + " '工号': '1021',\n", + " '手环号': '3470112929'},\n", + " {'姓名': '邓时军',\n", + " 'machineSn': None,\n", + " '序号': 10,\n", + " '班级': None,\n", + " '年级': None,\n", + " '工号': '2025',\n", + " '手环号': '1234567890'},\n", + " {'姓名': '罗星琪',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 11,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1034',\n", + " '手环号': '3469625873'},\n", + " {'姓名': '物业2013',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 12,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '2013',\n", + " '手环号': '0276930835'},\n", + " {'姓名': '周琼英',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 13,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': '26学部',\n", + " '工号': '1015',\n", + " '手环号': '3470480753'},\n", + " {'姓名': '门总卡2',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 14,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': 'ka0002',\n", + " '手环号': '3470271121'},\n", + " {'姓名': '段静远',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 15,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1054',\n", + " '手环号': '3470462129'},\n", + " {'姓名': '张力耕',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 16,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1064',\n", + " '手环号': '3478877025'},\n", + " {'姓名': '张琼丹',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 17,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1030',\n", + " '手环号': '3470175681'},\n", + " {'姓名': '门总卡1',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 18,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': 'ka0001',\n", + " '手环号': '3478786545'},\n", + " {'姓名': '易建军',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 19,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1069',\n", + " '手环号': '3470323953'},\n", + " {'姓名': '王明亮',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 20,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1065',\n", + " '手环号': '3469805089'},\n", + " {'姓名': '物业2020',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 21,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '2020',\n", + " '手环号': '4009209379'},\n", + " {'姓名': '田力豪',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 22,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1055',\n", + " '手环号': '3479274577'},\n", + " {'姓名': '物业2007',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 23,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '2007',\n", + " '手环号': '4009213507'},\n", + " {'姓名': '张洪春',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 24,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '年级': None,\n", + " '工号': '10021',\n", + " '手环号': '3479275665'},\n", + " {'姓名': '黄敏',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 25,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1032',\n", + " '手环号': '3478295185'},\n", + " {'姓名': '张丽平',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 26,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': '28学部',\n", + " '工号': '1011',\n", + " '手环号': '3470021249'},\n", + " {'姓名': '测试彭海东',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 27,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '9527',\n", + " '手环号': '0936744245'},\n", + " {'姓名': '门总卡3',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 28,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': 'ka0003',\n", + " '手环号': '3469762881'},\n", + " {'姓名': '贾琼',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 29,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': '28学部',\n", + " '工号': '1009',\n", + " '手环号': '3479277169'},\n", + " {'姓名': '杜俊玲',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 30,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '3004',\n", + " '手环号': '3469787969'},\n", + " {'姓名': '物业2015',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 31,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '2015',\n", + " '手环号': '4007526915'},\n", + " {'姓名': '物业2012',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 32,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '2012',\n", + " '手环号': '4009482275'},\n", + " {'姓名': '叶顺刚',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 33,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1058',\n", + " '手环号': '3478149377'},\n", + " {'姓名': '刘钰',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 34,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1006',\n", + " '手环号': '3479177937'},\n", + " {'姓名': '曾伟宏',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 35,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1031',\n", + " '手环号': '3478292849'},\n", + " {'姓名': '黄怡岚',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 36,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1026',\n", + " '手环号': '3469796657'},\n", + " {'姓名': '物业2011',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 37,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '2011',\n", + " '手环号': '4008270787'},\n", + " {'姓名': '物业2014',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 38,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '2014',\n", + " '手环号': '4009509123'},\n", + " {'姓名': '贺蕾',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 39,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1039',\n", + " '手环号': '3479268465'},\n", + " {'姓名': '王新勇',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 40,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1066',\n", + " '手环号': '3469931105'},\n", + " {'姓名': '刘壮',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 41,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1050',\n", + " '手环号': '3479314769'},\n", + " {'姓名': '刘本章',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 42,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1024',\n", + " '手环号': '3478294225'},\n", + " {'姓名': '李莉',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 43,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1027',\n", + " '手环号': '3478812529'},\n", + " {'姓名': '唐文凯',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 44,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1068',\n", + " '手环号': '3478926993'},\n", + " {'姓名': '物业2002',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 45,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '2002',\n", + " '手环号': '4009525491'},\n", + " {'姓名': '吉斯里拉',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 46,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1077',\n", + " '手环号': '3469552177'},\n", + " {'姓名': '张启容',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 47,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1041',\n", + " '手环号': '3469575377'},\n", + " {'姓名': '舒勇',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 48,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1001',\n", + " '手环号': '3478913041'},\n", + " {'姓名': '张洪春',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 49,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1002',\n", + " '手环号': '3470274017'},\n", + " {'姓名': '王建军',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 50,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1037',\n", + " '手环号': '3469848993'},\n", + " {'姓名': '岳秀君',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 51,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1073',\n", + " '手环号': '3479384513'},\n", + " {'姓名': '物业2004',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 52,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '2004',\n", + " '手环号': '4008811955'},\n", + " {'姓名': '物业2008',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 53,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '2008',\n", + " '手环号': '4009187555'},\n", + " {'姓名': '物业2024',\n", + " 'machineSn': None,\n", + " '序号': 54,\n", + " '班级': None,\n", + " '年级': None,\n", + " '工号': '2024',\n", + " '手环号': '3469902913'},\n", + " {'姓名': '吴杰',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 55,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1047',\n", + " '手环号': '3478894993'},\n", + " {'姓名': '杜宇潇',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 56,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1076',\n", + " '手环号': '3478849873'},\n", + " {'姓名': '杨莉',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 57,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1062',\n", + " '手环号': '3479187969'},\n", + " {'姓名': '李伟杰',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 58,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1059',\n", + " '手环号': '3470371521'},\n", + " {'姓名': '薛燕',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 59,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1010',\n", + " '手环号': '3469743921'},\n", + " {'姓名': '物业2019',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 60,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '2019',\n", + " '手环号': '4009203219'},\n", + " {'姓名': '杨晓伟',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 61,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1063',\n", + " '手环号': '3478134817'},\n", + " {'姓名': '黄开银',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 62,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1057',\n", + " '手环号': '3470182161'},\n", + " {'姓名': '姚瑶',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 63,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1022',\n", + " '手环号': '3470453105'},\n", + " {'姓名': '物业2022',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 64,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '2022',\n", + " '手环号': '3470473985'},\n", + " {'姓名': '物业2017',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 65,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '2017',\n", + " '手环号': '4008464659'},\n", + " {'姓名': '吴双',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 66,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '3003',\n", + " '手环号': '3470367985'},\n", + " {'姓名': '陈曦',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 67,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': '27学部',\n", + " '工号': '1052',\n", + " '手环号': '3478804529'},\n", + " {'姓名': '庄秋雨',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 68,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1044',\n", + " '手环号': '3478905073'},\n", + " {'姓名': '蒋立志',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 69,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1049',\n", + " '手环号': '3470162161'},\n", + " {'姓名': '任学丽',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 70,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': '26学部',\n", + " '工号': '1012',\n", + " '手环号': '3470402273'},\n", + " {'姓名': '物业2009',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 71,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '2009',\n", + " '手环号': '4007743635'},\n", + " {'姓名': '闫满琳',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 72,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1040',\n", + " '手环号': '3470379953'},\n", + " {'姓名': '夏天⚛️',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157542',\n", + " '序号': 73,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道1': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': '测试年级',\n", + " '工号': '2019240217',\n", + " '手环号': '3108681681'},\n", + " {'姓名': '物业2010',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 74,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '2010',\n", + " '手环号': '4009523651'},\n", + " {'姓名': '张春玲',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157542',\n", + " '序号': 75,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道1': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1013',\n", + " '手环号': '3469575809'},\n", + " {'姓名': '王毅',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 76,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '年级': None,\n", + " '工号': '3002',\n", + " '手环号': '3469864113'},\n", + " {'姓名': '贺雨欣',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 77,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '3001',\n", + " '手环号': '3478826705'},\n", + " {'姓名': '孟秋旭',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 78,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1051',\n", + " '手环号': '3478881905'},\n", + " {'姓名': '王俊森',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 79,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1075',\n", + " '手环号': '3478868353'},\n", + " {'姓名': '物业2003',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 80,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '2003',\n", + " '手环号': '4004683395'},\n", + " {'姓名': '物业2016',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 81,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '2016',\n", + " '手环号': '4007516643'},\n", + " {'姓名': '黎锐',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 82,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1023',\n", + " '手环号': '3470200593'},\n", + " {'姓名': '郭金友',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 83,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1061',\n", + " '手环号': '3469781665'},\n", + " {'姓名': '张荣华',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 84,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': '26学部',\n", + " '工号': '1014',\n", + " '手环号': '3469720401'},\n", + " {'姓名': '周黎',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 85,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': '26学部',\n", + " '工号': '1003',\n", + " '手环号': '3469519393'},\n", + " {'姓名': '叶鸣昕',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 86,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1078',\n", + " '手环号': '3469596961'},\n", + " {'姓名': '张桃',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 87,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1035',\n", + " '手环号': '3470463665'},\n", + " {'姓名': '韩金金',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 88,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1036',\n", + " '手环号': '3479331137'},\n", + " {'姓名': '王德琳',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 89,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1042',\n", + " '手环号': '3479320897'},\n", + " {'姓名': '舒红星-测',\n", + " 'machineSn': None,\n", + " '序号': 90,\n", + " '班级': None,\n", + " '年级': None,\n", + " '工号': '20250916',\n", + " '手环号': '1619991908'},\n", + " {'姓名': '韦晨曦',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 91,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': '27学部',\n", + " '工号': '1018',\n", + " '手环号': '3479368753'},\n", + " {'姓名': '物业2023',\n", + " 'machineSn': None,\n", + " '序号': 92,\n", + " '班级': None,\n", + " '年级': None,\n", + " '工号': '2023',\n", + " '手环号': '3478373857'},\n", + " {'姓名': '刘志坚',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 93,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1067',\n", + " '手环号': '3478320321'},\n", + " {'姓名': '唐艳',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 94,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1029',\n", + " '手环号': '3478260977'},\n", + " {'姓名': '李华',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 95,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1028',\n", + " '手环号': '3470049553'},\n", + " {'姓名': '物业1',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 96,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '2001',\n", + " '手环号': '4007516707'},\n", + " {'姓名': '黄黠',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 97,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1072',\n", + " '手环号': '3469699089'},\n", + " {'姓名': '冯琨皓',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 98,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1048',\n", + " '手环号': '3478894145'},\n", + " {'姓名': '陈小林',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 99,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1004',\n", + " '手环号': '3478087713'},\n", + " {'姓名': '测试舒红星',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 100,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道1': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': 'ptstw9999',\n", + " '手环号': '1618730164'},\n", + " {'姓名': '唐晓丽',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 101,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1016',\n", + " '手环号': '3474320001'},\n", + " {'姓名': '霍旺',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 102,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '3005',\n", + " '手环号': '3470201473'},\n", + " {'姓名': '袁为明',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 103,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': '27学部',\n", + " '工号': '1019',\n", + " '手环号': '3469688737'},\n", + " {'姓名': '文仕宇',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 104,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1043',\n", + " '手环号': '3479296977'},\n", + " {'姓名': '唐严睿',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 105,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1074',\n", + " '手环号': '3470290369'},\n", + " {'姓名': '金秀',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 106,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': '27学部',\n", + " '工号': '1005',\n", + " '手环号': '3479319313'},\n", + " {'姓名': '物业2018',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 107,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '2018',\n", + " '手环号': '4009443907'},\n", + " {'姓名': '罗秀',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 108,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1060',\n", + " '手环号': '3479301409'},\n", + " {'姓名': '马靖',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157546',\n", + " '序号': 109,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': '26学部',\n", + " '工号': '1045',\n", + " '手环号': '3469775921'},\n", + " {'姓名': '物业2006',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 110,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '2006',\n", + " '手环号': '4009224243'},\n", + " {'姓名': '王佳',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 111,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1056',\n", + " '手环号': '3470399841'},\n", + " {'姓名': '物业2005',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 112,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '2005',\n", + " '手环号': '4008924883'},\n", + " {'姓名': '董怡',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 113,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': None,\n", + " '工号': '1071',\n", + " '手环号': '3479118689'},\n", + " {'姓名': '董湘蓉',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 114,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': '28学部',\n", + " '工号': '1008',\n", + " '手环号': '3470450737'},\n", + " {'姓名': '张瑜',\n", + " '通道5': '全勤;',\n", + " 'machineSn': '233157541',\n", + " '序号': 115,\n", + " '班级': None,\n", + " '通道3': '全勤;',\n", + " '通道4': '全勤;',\n", + " '通道2': '全勤;',\n", + " '年级': '27学部',\n", + " '工号': '1007',\n", + " '手环号': '3469876433'}],\n", + " 'count': 115,\n", + " 'listHeader': [{'prop': '序号', 'label': '序号'},\n", + " {'prop': '年级', 'label': '年级'},\n", + " {'prop': '班级', 'label': '班级'},\n", + " {'prop': '工号', 'label': '工号'},\n", + " {'prop': '姓名', 'label': '姓名'},\n", + " {'prop': '手环号', 'label': '手环号'},\n", + " {'prop': '通道2', 'label': '通道2'},\n", + " {'prop': '通道1', 'label': '通道1'},\n", + " {'prop': '通道3', 'label': '通道3'},\n", + " {'prop': '通道4', 'label': '通道4'},\n", + " {'prop': '通道5', 'label': '通道5'}]}}" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7e3d1df2", + "metadata": {}, + "outputs": [], + "source": [ + "import time" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "12393389", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n" + ] + } + ], + "source": [ + "for item in data[\"data\"][\"listData\"]:\n", + " data1 = post(f\"https://band.hxzhxy.cn/card/sendUserRule\",headers=header,json={\"typeId\":[68,69,71,70,72],\"bandNos\":[item['手环号']],\"type\":2}).text\n", + " print(data1)\n", + " time.sleep(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "e363d7e8", + "metadata": {}, + "outputs": [], + "source": [ + "a = [item['手环号'] for item in data[\"data\"][\"listData\"]]" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "b06d9fd5", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\Anaconda3\\Lib\\site-packages\\urllib3\\connectionpool.py:1099: InsecureRequestWarning: Unverified HTTPS request is being made to host '127.0.0.1'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#tls-warnings\n", + " warnings.warn(\n" + ] + }, + { + "data": { + "text/plain": [ + "'{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}'" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "post(f\"https://band.hxzhxy.cn/card/sendUserRule?access_token=44c9b105-c44f-46f0-b15f-ef27d3a9f8b2\",json={\"typeId\":[68,69,71,70,72],\"bandNos\":a,\"type\":2},proxies={\"http\": \"http://127.0.0.1:8080\", \"https\": \"http://127.0.0.1:8080\"},verify=False).text" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ac7d456d", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "e64215b1", + "metadata": {}, + "outputs": [], + "source": [ + "stus = get(f\"https://band.hxzhxy.cn/card/listStuWithRule?gradeId=&classId=&screen=0¶m=&type=1¤tPage=1&pageNumber={0}&pageSize=15&pageTotal=634&teamId=119&access_token=44c9b105-c44f-46f0-b15f-ef27d3a9f8b2\").json()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "25873451", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['0022681580',\n", + " '0022678332',\n", + " '0022679980',\n", + " '0022678476',\n", + " '0022678524',\n", + " '0022702252',\n", + " '0022702044',\n", + " '0022702140',\n", + " '0022702124',\n", + " '0022681820',\n", + " '0022681532',\n", + " '0022681452',\n", + " '0022683596',\n", + " '0022702204',\n", + " '0022702028']" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8b7b38bb", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['0022681580', '0022716492', '0022718332', '0022678332', '0022706092', '0022679980', '0022678476', '0022678524', '0022702252', '0022704012', '0022702396', '0022704892', '0022706252', '0022704076', '0022703004', '0022681532', '0022702332', '0022681452', '0022703964', '0022702412', '0022683596', '0022718284', '0022706188', '0022704188', '0022702044', '0022702140', '0022704044', '0022702460', '0022706220', '0022702124', '0022704028', '0022706108', '0022681820', '0022702268', '0022702444', '0022704268', '0022704300', '0022702348', '0022702204', '0022702028']\n", + "['0022720476', '0022722732', '0022718396', '0022754908', '0022718412', '0022720572', '0022796108', '0022752940', '0022795916', '0022754844', '0022722492', '0022753020', '0022755100', '0022755164', '0022757068', '0022755148', '0022754972', '0022753004', '0022722508', '0022722748', '0022796156', '0022796012', '0022722700', '0022720444', '0022722204', '0022722220', '0022722780', '0022752972', '0022795948', '0022795804', '0022754780', '0022755132', '0022754940', '0022753212', '0022720716', '0022796140', '0022757132', '0022795772', '0022720412', '0022720732']\n", + "['0022799916', '0022819052', '0022797916', '0022821132', '0022822700', '0022821116', '0022821036', '0022820716', '0022832396', '0022799884', '0022832156', '0022830076', '0022819036', '0022796172', '0022816700', '0022818588', '0022818764', '0022797964', '0022797868', '0022821084', '0022799868', '0022797900', '0022820892', '0022800028', '0022818908', '0022800860', '0022822732', '0022820844', '0022818956', '0022832380', '0022822828', '0022834044', '0022836044', '0022817020', '0022816716', '0022832044', '0022834268', '0022822908', '0022832124', '0022830300']\n", + "['3108338641', '0023039836', '3107628929', '0023036860', '3107632929', '3107630609', '0023038524', '3107628945', '3108338705', '0023034668', '0023034844', '3107633041', '0023039916', '3108336817', '3107628753', '3108336657', '0023039980', '3108336753', '3107630545', '3107630689', '0023038492', '3108336497', '3108338497', '0023039868', '0023038412', '0023040012', '0023040156', '3107626657', '3107630481', '3108338817', '0023039948', '0023040172', '3107628881', '3107628561', '3108336529', '3108336449', '3107630913', '0023034780', '3107632913', '3107630833']\n", + "['3108342545', '3108340881', '3108342641', '3108339457', '3108358593', '3108356609', '3108341473', '3108342561', '3108358705', '3108358529', '3108356689', '3108354401', '3108358609', '3108358769', '3108356769', '3108354449', '3108358785', '3108340801', '3108340625', '3108340945', '3108340609', '3108356321', '3108358641', '3108359393', '3108340497', '3108340657', '3108340577', '3108340753', '3108356657', '3108354337', '3108354753', '3108358657', '3108354417', '3108358737', '3108340913', '3108359489', '3108354593', '3108354673', '3108356577', '3108338881']\n", + "['3108363761', '3108392369', '3108359681', '3108363521', '3108363665', '3108388321', '3108390369', '3108390305', '3108363745', '3108363681', '3108388129', '3108390081', '3108359713', '3108394065', '3108388193', '3108390481', '3108365969', '3108390161', '3108359633', '3108390241', '3108390065', '3108394001', '3108392049', '3108390145', '3108388113', '3108386497', '3108361393', '3108392337', '3108386177', '3108393969', '3108388337', '3108386257', '3108386433', '3108361553', '3108359649', '3108392193', '3108390273', '3108359745', '3108390097', '3108359761']\n", + "['3108417073', '3108394305', '3108418881', '3108415473', '3108398193', '3108415393', '3108435553', '3108433793', '3108415601', '3108413761', '3108396001', '3108396225', '3108398129', '3108413729', '3108394385', '3108435537', '3108396289', '3108398209', '3108417425', '3108415505', '3108395969', '3108419185', '3108419121', '3108417089', '3108418993', '3108415441', '3108398081', '3108413633', '3108394097', '3108415697', '3108396097', '3108396273', '3108433889', '3108396257', '3108396113', '3108397889', '3108394353', '3108418945', '3108395985', '3108435409']\n", + "['3108444273', '3108445761', '3108445841', '3108439089', '3108436273', '3108437121', '3108445825', '3108437457', '3108441649', '3108460497', '3108437217', '3108445809', '3108438961', '3108435633', '3108440785', '3108435713', '3108435617', '3108442561', '3108442881', '3108444401', '3108442785', '3108442545', '3108444449', '3108439233', '3108444209', '3108439073', '3108440913', '3108437249', '3108442849', '3108435585', '3108440897', '3108441105', '3108437489', '3108439105', '3108441121', '3108435745', '3108435569', '3108441041', '3108438913', '3108437409']\n", + "['3108562849', '3108462417', '3108460673', '3108567777', '3108464257', '3108569697', '3108462433', '3108460753', '3108562881', '3108464177', '3108462593', '3108464497', '3108462353', '3108460593', '3108562801', '3108567809', '3108464193', '3108460625', '3108569601', '3108464129', '3108569745', '3108462305', '3108569009', '3108462449', '3108569761', '3108460689', '3108462465', '3108460545', '3108564433', '3108567841', '3108466369', '3108466545', '3108462225', '3108464545', '3108462385', '3108464465', '3108464145', '3108567729', '3108464161', '3108462481']\n", + "['3108586737', '3108584337', '3108586657', '3108583345', '3108586513', '3108582993', '3108583185', '3108582593', '3108584193', '3108571857', '3108571777', '3108570049', '3108569873', '3108572001', '3108580737', '3108572065', '3108586817', '3108582913', '3108582737', '3108572081', '3108582545', '3108586769', '3108584129', '3108583137', '3108583313', '3108584289', '3108586545', '3108583057', '3108573793', '3108584241', '3108582561', '3108584065', '3108569793', '3108583153', '3108571825', '3108573713', '3108571921', '3108571601', '3108571761', '3108571681']\n", + "['3108590817', '3108590833', '3108595409', '3108588593', '3108595249', '3108596657', '3108594513', '3108595425', '3108588673', '3108597329', '3108596577', '3108588993', '3108596337', '3108590993', '3108594273', '3108595441', '3108595281', '3108588817', '3108597281', '3108590609', '3108586865', '3108590865', '3108586881', '3108590705', '3108594545', '3108594369', '3108591057', '3108589057', '3108596401', '3108590785', '3108588961', '3108594289', '3108595377', '3108588785', '3108596545', '3108596369', '3108588689', '3108588801', '3108586929', '3108588849']\n", + "['3108602593', '3108602465', '3108599409', '3108600385', '3108603633', '3108603553', '3108602785', '3108601457', '3108600785', '3108602865', '3108600401', '3108599425', '3108602625', '3108599569', '3108598337', '3108600305', '3108598753', '3108601537', '3108601713', '3108600529', '3108600849', '3108600609', '3108601585', '3108602577', '3108602753', '3108600673', '3108602433', '3108601489', '3108601841', '3108603601', '3108598721', '3108597633', '3108601425', '3108601601', '3108603409', '3108597553', '3108600737', '3108601729', '3108598561', '3108600817']\n", + "['3108607521', '3108605041', '3108606273', '3108605345', '3108606433', '3108605761', '3108604721', '3108604545', '3108606449', '3108607617', '3108604865', '3108604961', '3108603873', '3108612449', '3108605537', '3108606081', '3108612481', '3108605073', '3108607553', '3108609633', '3108607873', '3108606241', '3108606065', '3108607633', '3108605697', '3108606145', '3108606321', '3108604897', '3108603841', '3108604513', '3108606337', '3108607729', '3108605505', '3108604833', '3108605009', '3108606417', '3108604977', '3108603729', '3108605729', '3108605809']\n", + "['3108614257', '3108618417', '3108614577', '3108625825', '3108625889', '3108625921', '3108624257', '3108626289', '3108622241', '3108624065', '3108626065', '3108616481', '3108618321', '3108614481', '3108614241', '3108616145', '3108618401', '3108616289', '3108614145', '3108614321', '3108616545', '3108616401', '3108614401', '3108618305', '3108622209', '3108624769', '3108618209', '3108616209', '3108614209', '3108622289', '3108622145', '3108626177', '3108624097', '3108622273', '3108626033', '3108616193', '3108626193', '3108612513', '3108616497', '3108614353']\n", + "['3108635073', '3108628065', '3108627793', '3108629553', '3108629457', '3108629313', '3108626465', '3108629329', '3108629505', '3108631425', '3108630753', '3108630737', '3108633009', '3108631441', '3108634897', '3108632993', '3108632753', '3108633249', '3108631361', '3108637105', '3108634993', '3108634257', '3108637201', '3108633185', '3108637185', '3108629281', '3108629681', '3108637281', '3108648737', '3108629345', '3108632849', '3108628129', '3108627777', '3108632769', '3108627937', '3108633697', '3108637217', '3108631313', '3108635137', '3108633233']\n", + "['3108682001', '3108654273', '3108679793', '3108680001', '3108652849', '3108648801', '3108681873', '3108681793', '3108681777', '3108683713', '3108652545', '3108679985', '3108652561', '3108650865', '3108654289', '3108683761', '3108682097', '3108684033', '3108683665', '3108683841', '3108680033', '3108683889', '3108681921', '3108649057', '3108652753', '3108679537', '3108681969', '3108652513', '3108650977', '3108654497', '3108654433', '3108650577', '3108682081', '3108652497']\n", + "['3108417073', '3108342545', '3108614257', '3108562849', '3108635073', '0022797916', '3108595409', '3108433793', '0022755164', '3108629505', '3108354401', '3108624065', '3108630737', '3108605537', '3108464177', '3108396289', '0022703964', '3108586817', '3108435617', '3108614145', '3108386497', '3108464193', '3108340497', '3108417089', '3108616209', '0022797900', '0022722220', '3108582561', '3108386257', '3108594545', '3108652753', '3108652513', '3108569009', '3108354417', '3108466369', '3108571681', '3108586929', '3108650577', '3108441041', '3108342641', '3108388321', '3108439089', '0022722492', '0022679980', '3108627793', '3108626465', '3108571777', '3108607617', '0022678524', '0022755148', '3108569697', '3108398129', '3108435713', '3108614481', '3108614241', '3108637105', '0023038492', '0022702412', '3108616545', '3108582545', '3108361393', '3108419121', '0022821084', '0022818908', '3108388337', '3108439073', '3108573713', '3108589057', '3108354753', '0022755132', '3108607729', '0022836044', '0022681820', '3108433889', '3108682081', '3108618417', '3107628929', '3108607521', '3107633041', '3108605345', '3108629553', '3108606433', '3108629313', '3108626289', '3108594513', '3108396001', '3108394065', '3108354449', '3108616481', '3108652561', '3108562801', '3108618305', '3108637185', '0022800028', '0023040156', '3108629681', '3108607873', '0022795804', '3108460625', '3108607633', '3108605697', '3108354337', '3108626177', '3108632849', '3108571761', '3108606417', '0022816716', '3108396257', '3108441121', '3108616497', '0022757132', '3108444273', '3108582993', '3108356609', '3108341473', '3108342561', '3108571857', '3108606449', '3108652545', '3108630753', '3108460753', '3108398209', '0022702332', '3108618401', '0022816700', '0023040012', '0022795948', '3108637281', '3108569793', '3108606321', '3108624097', '3108626033', '3108394097', '3108441105', '3108396273', '0022702444', '3108354673', '0022702204', '0022830300', '0022754908', '3108398193', '0022821036', '3108604721', '3108603633', '3108336817', '3108604961', '0022757068', '3108602785', '3108358609', '3108603873', '3108601457', '0022704892', '3108569873', '3108650865', '3108582737', '3108634257', '3108633185', '0022797868', '3108683665', '3108680033', '3108398081', '3107626657', '3108622289', '3108571601', '3108569761', '3108460545', '3108604833', '3108358737', '0022702460', '3108650977', '3107630913', '0022702348', '3108605809', '3108390369', '0022819052', '3108682001', '0023038524', '0022752940', '3107628945', '3108625889', '0022821132', '3108415393', '3108358705', '3108600385', '3108604865', '3108460673', '0022702252', '3108356769', '0023039980', '3108390481', '3108390241', '0022681532', '0023039868', '3108614401', '3108612481', '0023038412', '3108439233', '3108571825', '3108622145', '3108601585', '3108356657', '3108569745', '3108602433', '3108622273', '3108460689', '3108439105', '3108604977', '0022702124', '3108603409', '3108354593', '0022704300', '3108614577', '3108418881', '3108390305', '3107630609', '3108680001', '3108652849', '0022821116', '3108602593', '3108624257', '0022678476', '3108602465', '3108358529', '3108588593', '3108603553', '3108567777', '0022702396', '3108358769', '0022703004', '0022819036', '3108417425', '3108358641', '3108388113', '3108616401', '3108386177', '3108338817', '3108571921', '3107628881', '3108604513', '3108569601', '3108602577', '3108627777', '3108358657', '3108590785', '0022754940', '3108601489', '0022702140', '3108396097', '0022702268', '3108605729', '3108637217', '3108359745', '0022795772', '3108614353', '3107630833', '0022702028', '0022799916', '0022678332', '3108415473', '3108462417', '3108388129', '3108605761', '3108604545', '3108356689', '3108359713', '3107628753', '3108440785', '3108580737', '3108336753', '3108460593', '3108356321', '3108582913', '3108614321', '3108597281', '3108637201', '0022797964', '3108683761', '3108418993', '3108393969', '3108614209', '0022752972', '3108683889', '3108604897', '3108437249', '3108462305', '3108440897', '0022702044', '3108605505', '3108437489', '3108588689', '3108356577', '3108635137', '3108392369', '3108394305', '0022718412', '3108654273', '3108625825', '3108436273', '3108437121', '3108681777', '0023039916', '3108683713', '3108584193', '3108460497', '3108588673', '0022704012', '3108600401', '3108462433', '3108336657', '3108599569', '3108590993', '3108634897', '3108340801', '3108390065', '3108600529', '0022796156', '3108622209', '3108584065', '3108606065', '3108590865', '0022800860', '3108442849', '3107628561', '3108462449', '3108336529', '3108588785', '3108415697', '3108601841', '3108601601', '3108633697', '0022720716', '3108654497', '0022796140', '3108601729', '0022716492', '0023036860', '3107632929', '0022754844', '3108648801', '3108338705', '3108625921', '3108681793', '3108437457', '3108441649', '3108437217', '3108600785', '3108390081', '0022754972', '3108599425', '3108598337', '3108358785', '3108600305', '3108359633', '3108572065', '0022796172', '3108631361', '3108634993', '3108572081', '3108606081', '3108590609', '3108584289', '3108415441', '3108683841', '0022822732', '3108462465', '3108567841', '3108359649', '3108462225', '0022817020', '3108340913', '0022704028', '3108612513', '0022704268', '3108390097', '3108598561', '3108418945', '3108567729', '0022832124', '3108359761', '3107632913', '0022720732', '3108338641', '0023039836', '0022796108', '0022718332', '3108590833', '3108583185', '3108599409', '3108622241', '3108588993', '3108602865', '3108633009', '3108602625', '3108388193', '3108462593', '3108601537', '0022830076', '3108633249', '3108462353', '3108340609', '3108595281', '3107630689', '0022818588', '0022722700', '3108390145', '3108395969', '3108392337', '3108442881', '3108583057', '0022820892', '3108648737', '3108590705', '3108679537', '3108681969', '3108600673', '0022754780', '0022832380', '0022822828', '3108564433', '0022704044', '3108336449', '3108596369', '0022753212', '0022706220', '3108464545', '3108627937', '0022706108', '3108390273', '3108462481', '0022722732', '0022681580', '3108590817', '3108359681', '3108358593', '3108679793', '3108681873', '0022822700', '3108445809', '3108597329', '0022706252', '3108612449', '0022704076', '0022832396', '0022799884', '3108390161', '0022832156', '3108340945', '3107630545', '0022681452', '3108654289', '0022796012', '3108415505', '3108567809', '3108584129', '3108586545', '3108624769', '0022799868', '3108442785', '3108442545', '3108584241', '3108583153', '0023039948', '3108603841', '3108435585', '3108602753', '3108588961', '3108594289', '3108595377', '0022704188', '3108603601', '3108601425', '0022832044', '3108597553', '3108603729', '3108462385', '3108588849', '3108395985', '3108633233', '0022720412', '3108437409', '3108338881', '3108363761', '3108340881', '3108363521', '3108586657', '0022720572', '3108445825', '0022753020', '3108595249', '3108415601', '3108631425', '3108596577', '3108438961', '3108596337', '3108594273', '3108572001', '3108632993', '3108598753', '0022722508', '3108394385', '3108632753', '0022722748', '3108336497', '3108616289', '3108359393', '0022720444', '3108586769', '3108442561', '3108340657', '3108583137', '3108607553', '3107630481', '3108586881', '3108681921', '3108440913', '0022820844', '3108606337', '3108605009', '3108632769', '0022822908', '3108464465', '3108435569', '3108631313', '0022720476', '0022718396', '3108584337', '3108586513', '3108363745', '3108445841', '0022795916', '0023034844', '3108605041', '3108629457', '3108435553', '3108629329', '3108570049', '3108679985', '3108413761', '3108626065', '0022820716', '0022753004', '3108396225', '3108618321', '3108340625', '3108616145', '0022818764', '3108588817', '3108586865', '3108444401', '3108573793', '3108340753', '3108618209', '3108609633', '3108606241', '3108629345', '3108386433', '3108361553', '0023040172', '3108594369', '3108649057', '3108464129', '3108628129', '3108598721', '3108466545', '3108596545', '3108597633', '3108626193', '3108359489', '0022834268', '3108396113', '3108588801', '3108600817', '3108586737', '3108339457', '3108583345', '3108628065', '0023034668', '3108606273', '3108363681', '3108596657', '3108464257', '3108562881', '3108435537', '3108595441', '3108464497', '3108392049', '3108600849', '3108600609', '3108338497', '3108419185', '0022718284', '3108629281', '3108340577', '3108682097', '0022722780', '3108684033', '3108606145', '0022706188', '3108413633', '3108596401', '0022834044', '3108394353', '3108464145', '3108438913', '3108435409', '3108445761', '3108363665', '0022706092', '3108582593', '0022755100', '3108595425', '3108435633', '3108631441', '3108413729', '3108365969', '3108601713', '3108394001', '0022683596', '0022722204', '3108605073', '3108583313', '3108444449', '3108444209', '3108591057', '0022818956', '3108616193', '3108392193', '3108397889', '3108435745', '3108600737', '3108654433', '0023034780', '3108464161', '3108652497']\n" + ] + }, + { + "ename": "", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31m在当前单元格或上一个单元格中执行代码时 Kernel 崩溃。\n", + "\u001b[1;31m请查看单元格中的代码,以确定故障的可能原因。\n", + "\u001b[1;31m单击此处了解详细信息。\n", + "\u001b[1;31m有关更多详细信息,请查看 Jupyter log。" + ] + } + ], + "source": [ + "for i in range(0,17):\n", + " stus = get(f\"https://band.hxzhxy.cn/card/listStuWithRule?gradeId=&classId=&screen=0¶m=&type=1¤tPage=1&pageNumber={i}&pageSize=40&pageTotal=634&teamId=119&access_token=44c9b105-c44f-46f0-b15f-ef27d3a9f8b2\").json()\n", + " a = [item['手环号'] for item in stus['data']['listData']]\n", + " print(a)\n", + " post(\"https://band.hxzhxy.cn/card/sendUserRule?access_token=44c9b105-c44f-46f0-b15f-ef27d3a9f8b2\",json={\"typeId\":[94,93,96,99],\"bandNos\":a,\"type\":1})\n", + " time.sleep(1)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/智慧校园/同文/班牌机mqtt.ipynb b/智慧校园/同文/班牌机mqtt.ipynb index 022652d..2c902e5 100644 --- a/智慧校园/同文/班牌机mqtt.ipynb +++ b/智慧校园/同文/班牌机mqtt.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 18, + "execution_count": 1, "id": "d9c14718", "metadata": {}, "outputs": [], @@ -29,7 +29,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 2, "id": "1673af54", "metadata": {}, "outputs": [], @@ -43,7 +43,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 3, "id": "4cf83c82", "metadata": {}, "outputs": [], @@ -56,7 +56,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 4, "id": "1790800e", "metadata": {}, "outputs": [], @@ -66,7 +66,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 5, "id": "34f18ca5", "metadata": {}, "outputs": [], @@ -77,7 +77,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 6, "id": "7cf83679", "metadata": {}, "outputs": [ @@ -87,7 +87,7 @@ "0" ] }, - "execution_count": 23, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -120,17 +120,17 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 8, "id": "e706bbb0", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 24, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -146,10 +146,10 @@ "metadata": {}, "outputs": [], "source": [ - "for item in data[0:1]:\n", + "for item in data:\n", " print(item)\n", " mac=item[\"mac\"]\n", - " topic=f\"cmd/publicizeBanpai/08E60E75E09E/control\"\n", + " topic=f\"cmd/publicizeBanpai/{mac}/cmd\"\n", " message={\n", " \"type\":\"info\"\n", " }\n", @@ -158,17 +158,31 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 11, + "id": "3da280f9", + "metadata": {}, + "outputs": [], + "source": [ + "for item in data:\n", + " mac=item[\"mac\"]\n", + " topic=f\"cmd/publicizeBanpai/{mac}/cmd\"\n", + " message=\"reboot -p\"\n", + " client.publish(topic, message)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, "id": "82403f63", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 31, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -204,7 +218,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "undefined.undefined.undefined" + "version": "3.12.4" } }, "nbformat": 4, diff --git a/智慧校园/本地/api.py b/智慧校园/本地/api.py index b24ec7c..ad48226 100644 --- a/智慧校园/本地/api.py +++ b/智慧校园/本地/api.py @@ -1,42 +1,35 @@ -from requests import get, post, put, delete -import random +from requests import get, post +import time +ip = "http://192.168.0.209:8100" +param = { + "username": "zhongwei", + "password": "123456a", + "client_id": "client", + "grant_type": "password", + "client_secret": "123456", +} +data = get(url=f"{ip}/oauth/token", params=param).json() +token = data["access_token"] +header = { + "content-type": "application/json", + "authorization": f"Bearer {token}", +} +teamId = 110 +year = 2026 +month = 3 -# v1.jinrishici.com/all.json -def apiSentence(): - data = get("https://v1.hitokoto.cn").json() - return data +data1 = get(f"{ip}/classAttend/screen/summary", headers=header, params={"teamId": teamId, "year": year, "month": month}).text +print("summary:", data1, end="\n\n") +data2 = get(f"{ip}/classAttend/screen/dailyTrend", headers=header, params={"teamId": teamId, "year": year, "month": month}).text +print("dailyTrend:", data2, end="\n\n") -def cat(): - data = get("https://api.thecatapi.com/v1/images/search?size=full").json() - result = data[0]["url"] - return result +data3 = get(f"{ip}/classAttend/screen/statusPie", headers=header, params={"teamId": teamId, "year": year, "month": month}).text +print("statusPie:", data3, end="\n\n") +data4 = get(f"{ip}/classAttend/screen/gradeRanking", headers=header, params={"teamId": teamId, "year": year, "month": month}).text +print("gradeRanking:", data4, end="\n\n") -def dog(): - data = get("https://api.thedogapi.com/v1/images/search?size=full").json() - result = data[0]["url"] - return result - - -def pic(): - data = get("https://api.vvhan.com/api/bing?type=json&rand=sj").json() - result = data["data"]["url"] - return result - - -def randomPic(): - func = random.choice([cat]) - data = func() - return data - - -def getEmoji(): - data = get("https://api.vvhan.com/api/emoji?type=json").json() - return data - - -def getShi(): - data = post("http://v1.jinrishici.com/all.json").json() - return data +data5 = get(f"{ip}/classAttend/screen/studentRanking", headers=header, params={"teamId": teamId, "year": year, "month": month}).text +print("studentRanking:", data5, end="\n\n") diff --git a/智慧校园/本地/api1.py b/智慧校园/本地/api1.py new file mode 100644 index 0000000..69f2d7d --- /dev/null +++ b/智慧校园/本地/api1.py @@ -0,0 +1,35 @@ +from requests import get,post +import time +ip = "http://192.168.0.209:8100" +param = { + "username": "zhongwei", + "password": "123456a", + "client_id": "client", + "grant_type": "password", + "client_secret": "123456", +} +data = get(url=f"{ip}/oauth/token",params=param).json() +token = data["access_token"] +header = { + "content-type": "application/json", + "authorization": f"Bearer {token}", +} +teamId=110 +month=5 +data1= get(f"{ip}/counseling/screen/stats",headers=header,params={"teamId":teamId,"year":2026,"month":month}).text +print(data1,end="\n\n") + +data2=get(f"{ip}/counseling/screen/trend",headers=header,params={"teamId":teamId,"year":2026,"month":month}).text +print(data2,end="\n\n") + +data3=get(f"{ip}/counseling/screen/statusDistribution",headers=header,params={"teamId":teamId,"year":2026,"month":month}).text +print(data3,end="\n\n") + +data4=get(f"{ip}/counseling/screen/gradeStats",headers=header,params={"teamId":teamId,"year":2026,"month":month}).text +print(data4,end="\n\n") + +data5=get(f"{ip}/counseling/screen/projectStats",headers=header,params={"teamId":teamId,"year":2026,"month":month}).text +print(data5,end="\n\n") + +data6=get(f"{ip}/counseling/screen/completionStats",headers=header,params={"teamId":teamId,"year":2026,"month":month}).text +print(data6,end="\n\n") diff --git a/智慧校园/本地/demo.ipynb b/智慧校园/本地/demo.ipynb index 372d2d0..dc47867 100644 --- a/智慧校园/本地/demo.ipynb +++ b/智慧校园/本地/demo.ipynb @@ -9,93 +9,85 @@ "source": [ "from requests import get,post\n", "import time\n", - "ip = \"http://192.168.0.209:8100\"\n", + "\n", + "ip = \"http://192.168.0.111:8100\"\n", + "# ip=\"http://band.hxzhxy.cn\"\n", "param = {\n", - " \"username\": \"tangchao\",\n", + " \"username\": \"zhongwei\",\n", " \"password\": \"123456a\",\n", " \"client_id\": \"client\",\n", " \"grant_type\": \"password\",\n", " \"client_secret\": \"123456\",\n", "}\n", - "data = get(url=f\"{ip}/oauth/token?username=zhongwei&password=123456a&client_id=client&grant_type=password&client_secret=123456\").json()\n", + "data = get(url=f\"{ip}/oauth/token\",params=param).json()\n", "token = data[\"access_token\"]\n", "header = {\n", " \"content-type\": \"application/json\",\n", " \"authorization\": f\"Bearer {token}\",\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "9f7ca2db", - "metadata": {}, - "outputs": [], - "source": [ - "access_token = post(\"https://szihj.idsp.yunxiao.com/Open/Access/GetToken\",params={\n", - " \"corpId\": \"869376250979578017\",\n", - " \"corpSecret\": \"GQSYGTLMKNJHVLHZMHYDMHATIGTTOBYP\"\n", - " }).json()\n" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "83ed8c86", - "metadata": {}, - "outputs": [], - "source": [ - "token= access_token[\"access_token\"]" + "}\n", + "teamId=19" ] }, { "cell_type": "code", "execution_count": null, - "id": "0463e46a", + "id": "0972b8a5", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'success': True, 'msg': '操作成功', 'code': 0, 'data': {'records': [{'id': 11, 'batchName': '第二周周测成绩', 'fixedHeader': '[\"姓名\", \"学号\", \"教学班\", \"一.1\", \"一.2\", \"一.3\", \"一.4\", \"一.5\", \"一.6\", \"一.7\", \"一.8\", \"二.13\", \"二.14.1\", \"二.14.2\", \"二.14.3\", \"二.15\", \"二.16\", \"二.17\", \"二.18\", \"三.21\", \"三.22\", \"A\", \"B\", \"总\"]', 'variableHeader': '[\"姓名\", \"学号\", \"教学班\", \"一.1\", \"一.2\", \"一.3\", \"一.4\", \"一.5\", \"一.6\", \"一.7\", \"一.8\", \"二.13\", \"二.14.1\", \"二.14.2\", \"二.14.3\", \"二.15\", \"二.16\", \"二.17\", \"二.18\", \"三.21\", \"三.22\", \"A\", \"B\", \"总\"]', 'teamId': 19, 'createTime': 1757923158000, 'updateTime': 1757923158000, 'operator': 'sx_shejuntong', 'teaId': 170, 'teaName': '佘珺彤', 'state': 1, 'semester': None, 'subject': None, 'examTime': None, 'gradeId': None, 'batchNo': None}, {'id': 12, 'batchName': '9.11数学检测(满分120分)', 'fixedHeader': '[\"姓名\", \"学号\", \"教学班\", \"一.1\", \"一.2\", \"一.3\", \"一.4\", \"一.5\", \"一.6\", \"一.7\", \"一.8\", \"二.13\", \"二.14.1\", \"二.14.2\", \"二.14.3\", \"二.15\", \"二.16\", \"二.17\", \"二.18\", \"三.21\", \"三.22\", \"A\", \"B\", \"总\"]', 'variableHeader': '[\"姓名\", \"学号\", \"教学班\", \"一.1\", \"一.2\", \"一.3\", \"一.4\", \"一.5\", \"一.6\", \"一.7\", \"一.8\", \"二.13\", \"二.14.1\", \"二.14.2\", \"二.14.3\", \"二.15\", \"二.16\", \"二.17\", \"二.18\", \"三.21\", \"三.22\", \"A\", \"B\", \"总\"]', 'teamId': 19, 'createTime': 1757927617000, 'updateTime': 1757927617000, 'operator': 'sx_qianliangjun', 'teaId': 211, 'teaName': '钱良均', 'state': 1, 'semester': None, 'subject': None, 'examTime': None, 'gradeId': None, 'batchNo': None}, {'id': 13, 'batchName': '英三1班预备一单元成绩', 'fixedHeader': '[\"序号\", \"学号\", \"姓名\", \"A卷\", \"B卷\", \"总分\", \"班排\"]', 'variableHeader': '[\"序号\", \"学号\", \"姓名\", \"A卷\", \"B卷\", \"总分\", \"班排\"]', 'teamId': 19, 'createTime': 1758116865000, 'updateTime': 1758116865000, 'operator': 'pts_xueyuan', 'teaId': 212, 'teaName': '薛源', 'state': 1, 'semester': None, 'subject': None, 'examTime': None, 'gradeId': None, 'batchNo': None}, {'id': 14, 'batchName': '英三3班预备1单元成绩', 'fixedHeader': '[\"学号\", \"姓名\", \"A卷\", \"B卷\", \"总分\", \"班排\"]', 'variableHeader': '[\"学号\", \"姓名\", \"A卷\", \"B卷\", \"总分\", \"班排\"]', 'teamId': 19, 'createTime': 1758123702000, 'updateTime': 1758123702000, 'operator': 'pts_xueyuan', 'teaId': 212, 'teaName': '薛源', 'state': 1, 'semester': None, 'subject': None, 'examTime': None, 'gradeId': None, 'batchNo': None}, {'id': 15, 'batchName': '七下期末成绩', 'fixedHeader': '[\"学号\", \"姓名\", \"语文A\", \"语文B\", \"语文总\", \"数学A\", \"数学B\", \"数学总\", \"英语A\", \"英语B\", \"英语总\", \"总分\", \"总排\"]', 'variableHeader': '[\"学号\", \"姓名\", \"语文A\", \"语文B\", \"语文总\", \"数学A\", \"数学B\", \"数学总\", \"英语A\", \"英语B\", \"英语总\", \"总分\", \"总排\"]', 'teamId': 19, 'createTime': 1758184059000, 'updateTime': 1758184059000, 'operator': 'handongmei', 'teaId': 743, 'teaName': '韩冬梅', 'state': 1, 'semester': None, 'subject': None, 'examTime': None, 'gradeId': None, 'batchNo': None}, {'id': 16, 'batchName': 'Unit 1', 'fixedHeader': '[\"学号\", \"姓名\", \"A卷\", \"B卷\", \"总分\", \"排名\"]', 'variableHeader': '[\"学号\", \"姓名\", \"A卷\", \"B卷\", \"总分\", \"排名\"]', 'teamId': 19, 'createTime': 1758269060000, 'updateTime': 1758269060000, 'operator': 'wy_wangshu', 'teaId': 135, 'teaName': '王枢', 'state': 1, 'semester': None, 'subject': None, 'examTime': None, 'gradeId': None, 'batchNo': None}, {'id': 17, 'batchName': 'Unit 1--3班', 'fixedHeader': '[\"学号\", \"姓名\", \"A卷\", \"B卷\", \"总分\", \"排名\"]', 'variableHeader': '[\"学号\", \"姓名\", \"A卷\", \"B卷\", \"总分\", \"排名\"]', 'teamId': 19, 'createTime': 1758269093000, 'updateTime': 1758269093000, 'operator': 'wy_wangshu', 'teaId': 135, 'teaName': '王枢', 'state': 1, 'semester': None, 'subject': None, 'examTime': None, 'gradeId': None, 'batchNo': None}, {'id': 18, 'batchName': '英语1班第一单元定时练习', 'fixedHeader': '[\"学号\", \"姓名\", \"A卷(100)\", \"B卷(35)\", \"总分(135)\", \"班排\"]', 'variableHeader': '[\"学号\", \"姓名\", \"A卷(100)\", \"B卷(35)\", \"总分(135)\", \"班排\"]', 'teamId': 19, 'createTime': 1758272746000, 'updateTime': 1780390269000, 'operator': 'handongmei', 'teaId': 743, 'teaName': '韩冬梅', 'state': 1, 'semester': None, 'subject': '英语', 'examTime': None, 'gradeId': None, 'batchNo': None}, {'id': 19, 'batchName': '英语11班第一单元定时练习', 'fixedHeader': '[\"学号\", \"姓名\", \"A卷\", \"B卷\", \"总分\", \"班排\"]', 'variableHeader': '[\"学号\", \"姓名\", \"A卷\", \"B卷\", \"总分\", \"班排\"]', 'teamId': 19, 'createTime': 1758272770000, 'updateTime': 1780390270000, 'operator': 'handongmei', 'teaId': 743, 'teaName': '韩冬梅', 'state': 1, 'semester': None, 'subject': '英语', 'examTime': None, 'gradeId': None, 'batchNo': None}, {'id': 20, 'batchName': '英语1班第一单元定时练习', 'fixedHeader': '[\"学号\", \"姓名\", \"A卷(100)\", \"B卷(35)\", \"总分(135)\", \"班排\"]', 'variableHeader': '[\"学号\", \"姓名\", \"A卷(100)\", \"B卷(35)\", \"总分(135)\", \"班排\"]', 'teamId': 19, 'createTime': 1758273235000, 'updateTime': 1780390272000, 'operator': 'handongmei', 'teaId': 743, 'teaName': '韩冬梅', 'state': 1, 'semester': None, 'subject': '英语', 'examTime': None, 'gradeId': None, 'batchNo': None}], 'total': 340, 'size': 10, 'current': 1, 'orders': [], 'optimizeCountSql': True, 'hitCount': False, 'countId': None, 'maxLimit': None, 'searchCount': True, 'pages': 34}}\n" + ] + } + ], "source": [ - "HttpHeaders httpHeaders = new HttpHeaders();\n", - " HttpEntity httpEntity = new HttpEntity(null, httpHeaders);\n", - " String url = synchronizationStudentOpenByTeamIdAndType.getAddress() + \"?corpId=\" + synchronizationStudentToken.getCorpId() + \"&corpSecret=\" + synchronizationStudentToken.getCorpSecret();\n", - " RestTemplate restTemplateHttps = new RestTemplate(RestTemplateConfig.getHttpComponentsClientHttpRequestFactory());\n", - " ResponseEntity results = restTemplateHttps.exchange(url, HttpMethod.POST, httpEntity, String.class);\n", - " JSONObject json = JSON.parseObject(results.getBody());\n", - " System.out.println(\"access_token-----json-----:\"+json);" + "data = get(f\"{ip}\n", + " \n", + " \", headers=header, params={\"teamId\": 19}).json()\n", + "print(data)\n" ] }, { "cell_type": "code", - "execution_count": 19, - "id": "98f9d828", - "metadata": {}, - "outputs": [], - "source": [ - "header={\n", - " \"Authorization\": token\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "bc1d9df5", + "execution_count": null, + "id": "ce4ec6d6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'{\"errcode\":0,\"errmsg\":\"ok\",\"data\":[]}'" + "{'success': False, 'msg': '该学生暂无成绩记录', 'code': 10001, 'data': None}" ] }, - "execution_count": 21, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" + }, + { + "ename": "", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31m在当前单元格或上一个单元格中执行代码时 Kernel 崩溃。\n", + "\u001b[1;31m请查看单元格中的代码,以确定故障的可能原因。\n", + "\u001b[1;31m单击此处了解详细信息。\n", + "\u001b[1;31m有关更多详细信息,请查看 Jupyter log。" + ] } ], "source": [ - "get(\"https://szihj.idsp.yunxiao.com/Open/Leave/GetLeaveList\",headers=header).text\n" + "get(f\"{ip}/tempSchoolworkAnalysis/student/profile?stuNo=王诚泽&subjectKeyword=数学&recentLimit=1\", headers=header).json()\n" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8ba7d3c9", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/智慧校园/本地/test.py b/智慧校园/本地/test.py new file mode 100644 index 0000000..0a86497 --- /dev/null +++ b/智慧校园/本地/test.py @@ -0,0 +1,17 @@ +from requests import post +tem = post("http://11.1.1.106:8082/api",json={ + "service_name": "operate_plate", + "data": [ + { + "departName": "百仁", + "authType": 30000, + "plateNumber": "鄂A1234569", + "personName": "夏天乐测试", + "plateIdStr": "test-plate-id-001", + "opType": 1, + "beginTime": "2026-05-18 17:53:44", + "endTime": "2027-05-18 17:53:44" + } + ] +}).text +print(tem) \ No newline at end of file diff --git a/智慧校园/本地/批量添加学生请假x信息.py b/智慧校园/本地/批量添加学生请假x信息.py new file mode 100644 index 0000000..71d60fa --- /dev/null +++ b/智慧校园/本地/批量添加学生请假x信息.py @@ -0,0 +1,288 @@ +from requests import get, post +from faker import Faker +import random +import time +import uuid +import json +from datetime import datetime, timedelta + +fake = Faker('zh_CN') + +ip = "http://band.hxzhxy.cn" +param = { + "username": "xtl", + "password": "xia123456", + "client_id": "client", + "grant_type": "password", + "client_secret": "123456", +} + +def get_token(): + data = get(url=f"{ip}/oauth/token", params=param).json() + return data["access_token"] + +token = get_token() +header = { + "content-type": "application/json", + "authorization": f"Bearer {token}", +} +teamId = 106 + +def generate_leave_data(stu_id, stu_name, stu_no, grade_name, class_name, grade_id, class_id, phone=None): + leave_types = ["事假", "病假"] + + leave_type = random.choice(leave_types) + is_cycle = random.choice([1, 2, 3]) + + begin_date = datetime.now() - timedelta(days=random.randint(0,15)) + end_date = begin_date + timedelta(days=random.randint(0, 120)) + + begin_section = random.randint(1, 6) + end_section = random.randint(begin_section, 12) + + leave_reasons = [ + "身体不适,需要休息", + "家中有事需要处理", + "去医院检查身体", + "发烧感冒,需要就医", + "参加重要家庭活动", + "个人事务需要处理", + "肠胃不适,需要就医", + "头痛发热,请假休息", + "参加校外培训活动", + "家庭紧急事务", + ] + + disease_date = begin_date.strftime("%Y-%m-%d") + + if is_cycle == 3: + week_days = ["周一", "周二", "周三", "周四", "周五"] + selected_day = random.choice(week_days) + sections = random.sample(range(1, 13), random.randint(2, 4)) + sections.sort() + week_info = json.dumps({selected_day: ",".join(str(s) for s in sections)}) + end_date = begin_date + else: + week_info = None + + data = { + "stuId": str(stu_id), + "leaveType": leave_type, + "isCycle": is_cycle, + "leaveReason": random.choice(leave_reasons), + "beginDate": begin_date.strftime("%Y-%m-%d"), + "endDate": end_date.strftime("%Y-%m-%d"), + "beginSection": str(begin_section), + "endSection": str(end_section), + "diseaseDate": disease_date, + "symptom": "", + "fever": "", + "hospital": "", + "treatmentDate": "", + "imgUrl": "[]", + "weekInfo": week_info, + } + + return data + +def get_grade_list(): + url = f"{ip}/uc/grade/listSelect/{teamId}?access_token={token}" + response = get(url, headers=header) + result = response.json() + if result.get('code') == 0: + return result.get('data', []) + return [] + +def get_class_list(grade_id): + url = f"{ip}/uc/class/listClass" + params = { + "access_token": token, + "teamId": teamId, + "gradeId": grade_id + } + response = get(url, params=params, headers=header) + result = response.json() + if result.get('code') == 0: + return result.get('data', []) + return [] + +def get_students_from_db(grade_id=None, class_id=None): + import pymysql + conn = pymysql.connect( + host='192.168.0.244', + port=3306, + user='root', + password='Abcd@123456', + database='school_server', + charset='utf8' + ) + cursor = conn.cursor() + + sql = """ + SELECT s.id, s.stu_no, s.stu_name, s.phone, + g.grade_name, c.class_name + FROM student s + LEFT JOIN grade g ON s.grade_id = g.id + LEFT JOIN tclass c ON s.class_id = c.id + WHERE s.team_id = %s + """ + params = [str(teamId)] + + if grade_id: + sql += " AND s.grade_id = %s" + params.append(grade_id) + if class_id: + sql += " AND s.class_id = %s" + params.append(class_id) + + sql += " ORDER BY RAND() LIMIT 100" + + cursor.execute(sql, params) + students = cursor.fetchall() + conn.close() + return students + +def add_leave_record(leave_data): + url = f"{ip}/studentLeave/add" + leave_data["access_token"] = token + response = post(url, json=leave_data, headers=header) + return response.json() + +def batch_add_leaves(count=10): + print(f"正在获取年级列表...") + grades = get_grade_list() + if not grades: + print("未获取到年级数据,请检查 teamId 或 token") + return + + grade = random.choice(grades) + grade_id = grade.get('id', grade.get('gradeId')) + grade_name = grade.get('gradeName', grade.get('name', '')) + print(f"随机选择年级: {grade_name}") + + print(f"正在获取 [{grade_name}] 的班级列表...") + classes = get_class_list(grade_id) + if not classes: + print("未获取到班级数据") + return + + cls = random.choice(classes) + class_id = cls.get('id', cls.get('classId')) + class_name = cls.get('className', cls.get('name', '')) + print(f"随机选择班级: {class_name}") + + print(f"\n正在从数据库获取 [{grade_name} {class_name}] 的学生数据...") + students = get_students_from_db(grade_id, class_id) + print(f"获取到 {len(students)} 名学生") + + if not students: + print("未获取到学生数据,请检查数据库连接") + return + + success_count = 0 + fail_count = 0 + + for i in range(min(count, len(students))): + stu = students[i] + stu_id, stu_no, stu_name, phone, db_grade_name, db_class_name = stu + + leave_data = generate_leave_data( + stu_id, stu_name, stu_no, + grade_name, class_name, grade_id, class_id, phone + ) + + print(f"\n[{i+1}/{min(count, len(students))}] 为学生 {stu_name}({stu_no}) 添加请假记录...") + print(f" 请假类型: {leave_data['leaveType']}") + print(f" 请假时间: {leave_data['beginDate']} ~ {leave_data['endDate']}") + print(f" 请假节次: 第{leave_data['beginSection']}节 ~ 第{leave_data['endSection']}节") + print(f" 请假事由: {leave_data['leaveReason']}") + + try: + result = add_leave_record(leave_data) + if result.get('code') == 0: + print(f" ✓ 添加成功") + success_count += 1 + else: + print(f" ✗ 添加失败: {result.get('msg', '未知错误')}") + fail_count += 1 + except Exception as e: + print(f" ✗ 请求异常: {e}") + fail_count += 1 + + time.sleep(0.5) + + print(f"\n{'='*50}") + print(f"批量添加完成!") + print(f"成功: {success_count} 条") + print(f"失败: {fail_count} 条") + +def generate_fake_students(count=20): + students = [] + for i in range(count): + stu = { + "id": i + 1, + "stu_no": f"2024{str(i+1).zfill(4)}", + "stu_name": fake.name(), + "phone": fake.phone_number(), + "grade_name": random.choice(["初一", "初二", "初三", "高一", "高二", "高三"]), + "class_name": f"{random.randint(1, 10)}班", + } + students.append(stu) + return students + +def batch_add_leaves_with_fake_students(count=10): + print(f"使用 Faker 生成 {count} 条请假记录...") + + students = generate_fake_students(count) + success_count = 0 + fail_count = 0 + + for i, stu in enumerate(students): + leave_data = generate_leave_data( + stu['id'], stu['stu_name'], stu['stu_no'], + stu['grade_name'], stu['class_name'], + None, None, stu['phone'] + ) + + print(f"\n[{i+1}/{count}] 为学生 {stu['stu_name']}({stu['stu_no']}) 添加请假记录...") + print(f" 请假类型: {leave_data['leaveType']}") + print(f" 请假时间: {leave_data['beginDate']} ~ {leave_data['endDate']}") + print(f" 请假节次: 第{leave_data['beginSection']}节 ~ 第{leave_data['endSection']}节") + print(f" 请假事由: {leave_data['leaveReason']}") + + try: + result = add_leave_record(leave_data) + if result.get('code') == 0: + print(f" ✓ 添加成功") + success_count += 1 + else: + print(f" ✗ 添加失败: {result.get('msg', '未知错误')}") + fail_count += 1 + except Exception as e: + print(f" ✗ 请求异常: {e}") + fail_count += 1 + + time.sleep(0.5) + + print(f"\n{'='*50}") + print(f"批量添加完成!") + print(f"成功: {success_count} 条") + print(f"失败: {fail_count} 条") + +if __name__ == "__main__": + print("="*50) + print("批量添加学生请假信息") + print("="*50) + print("1. 从数据库获取学生并添加请假记录") + print("2. 使用 Faker 生成虚拟学生并添加请假记录") + print("="*50) + + choice = input("请选择模式 (1/2): ").strip() + count = int(input("请输入要生成的请假记录数量: ").strip() or "10") + + if choice == "1": + batch_add_leaves(count) + elif choice == "2": + batch_add_leaves_with_fake_students(count) + else: + print("无效选择") diff --git a/智慧校园/本地/批量添加学生请假x信息线上.py b/智慧校园/本地/批量添加学生请假x信息线上.py new file mode 100644 index 0000000..f186ce5 --- /dev/null +++ b/智慧校园/本地/批量添加学生请假x信息线上.py @@ -0,0 +1,288 @@ +from requests import get, post +from faker import Faker +import random +import time +import uuid +import json +from datetime import datetime, timedelta + +fake = Faker('zh_CN') + +ip = "http://band.hxzhxy.cn" +param = { + "username": "xtl", + "password": "xia123456", + "client_id": "client", + "grant_type": "password", + "client_secret": "123456", +} + +def get_token(): + data = get(url=f"{ip}/oauth/token", params=param).json() + return data["access_token"] + +token = get_token() +header = { + "content-type": "application/json", + "authorization": f"Bearer {token}", +} +teamId = 106 + +def generate_leave_data(stu_id, stu_name, stu_no, grade_name, class_name, grade_id, class_id, phone=None): + leave_types = ["事假", "病假"] + + leave_type = random.choice(leave_types) + is_cycle = random.choice([1, 2, 3]) + + begin_date = datetime.now() - timedelta(days=random.randint(0,15)) + end_date = begin_date + timedelta(days=random.randint(0, 120)) + + begin_section = random.randint(1, 6) + end_section = random.randint(begin_section, 12) + + leave_reasons = [ + "身体不适,需要休息", + "家中有事需要处理", + "去医院检查身体", + "发烧感冒,需要就医", + "参加重要家庭活动", + "个人事务需要处理", + "肠胃不适,需要就医", + "头痛发热,请假休息", + "参加校外培训活动", + "家庭紧急事务", + ] + + disease_date = begin_date.strftime("%Y-%m-%d") + + if is_cycle == 3: + week_days = ["周一", "周二", "周三", "周四", "周五"] + selected_day = random.choice(week_days) + sections = random.sample(range(1, 13), random.randint(2, 4)) + sections.sort() + week_info = json.dumps({selected_day: ",".join(str(s) for s in sections)}) + end_date = begin_date + else: + week_info = None + + data = { + "stuId": str(stu_id), + "leaveType": leave_type, + "isCycle": is_cycle, + "leaveReason": random.choice(leave_reasons), + "beginDate": begin_date.strftime("%Y-%m-%d"), + "endDate": end_date.strftime("%Y-%m-%d"), + "beginSection": str(begin_section), + "endSection": str(end_section), + "diseaseDate": disease_date, + "symptom": "", + "fever": "", + "hospital": "", + "treatmentDate": "", + "imgUrl": "[]", + "weekInfo": week_info, + } + + return data + +def get_grade_list(): + url = f"{ip}/uc/grade/listSelect/{teamId}?access_token={token}" + response = get(url, headers=header) + result = response.json() + if result.get('code') == 0: + return result.get('data', []) + return [] + +def get_class_list(grade_id): + url = f"{ip}/uc/class/listClass" + params = { + "access_token": token, + "teamId": teamId, + "gradeId": grade_id + } + response = get(url, params=params, headers=header) + result = response.json() + if result.get('code') == 0: + return result.get('data', []) + return [] + +def get_students_from_db(grade_id=None, class_id=None): + import pymysql + conn = pymysql.connect( + host='100.64.0.36', + port=3306, + user='root', + password='@HXYD1109mysql', + database='school_server', + charset='utf8' + ) + cursor = conn.cursor() + + sql = """ + SELECT s.id, s.stu_no, s.stu_name, s.phone, + g.grade_name, c.class_name + FROM student s + LEFT JOIN grade g ON s.grade_id = g.id + LEFT JOIN tclass c ON s.class_id = c.id + WHERE s.team_id = %s + """ + params = [str(teamId)] + + if grade_id: + sql += " AND s.grade_id = %s" + params.append(grade_id) + if class_id: + sql += " AND s.class_id = %s" + params.append(class_id) + + sql += " ORDER BY RAND() LIMIT 100" + + cursor.execute(sql, params) + students = cursor.fetchall() + conn.close() + return students + +def add_leave_record(leave_data): + url = f"{ip}/studentLeave/add" + leave_data["access_token"] = token + response = post(url, json=leave_data, headers=header) + return response.json() + +def batch_add_leaves(count=10): + print(f"正在获取年级列表...") + grades = get_grade_list() + if not grades: + print("未获取到年级数据,请检查 teamId 或 token") + return + + grade = random.choice(grades) + grade_id = grade.get('id', grade.get('gradeId')) + grade_name = grade.get('gradeName', grade.get('name', '')) + print(f"随机选择年级: {grade_name}") + + print(f"正在获取 [{grade_name}] 的班级列表...") + classes = get_class_list(grade_id) + if not classes: + print("未获取到班级数据") + return + + cls = random.choice(classes) + class_id = cls.get('id', cls.get('classId')) + class_name = cls.get('className', cls.get('name', '')) + print(f"随机选择班级: {class_name}") + + print(f"\n正在从数据库获取 [{grade_name} {class_name}] 的学生数据...") + students = get_students_from_db(grade_id, class_id) + print(f"获取到 {len(students)} 名学生") + + if not students: + print("未获取到学生数据,请检查数据库连接") + return + + success_count = 0 + fail_count = 0 + + for i in range(min(count, len(students))): + stu = students[i] + stu_id, stu_no, stu_name, phone, db_grade_name, db_class_name = stu + + leave_data = generate_leave_data( + stu_id, stu_name, stu_no, + grade_name, class_name, grade_id, class_id, phone + ) + + print(f"\n[{i+1}/{min(count, len(students))}] 为学生 {stu_name}({stu_no}) 添加请假记录...") + print(f" 请假类型: {leave_data['leaveType']}") + print(f" 请假时间: {leave_data['beginDate']} ~ {leave_data['endDate']}") + print(f" 请假节次: 第{leave_data['beginSection']}节 ~ 第{leave_data['endSection']}节") + print(f" 请假事由: {leave_data['leaveReason']}") + + try: + result = add_leave_record(leave_data) + if result.get('code') == 0: + print(f" ✓ 添加成功") + success_count += 1 + else: + print(f" ✗ 添加失败: {result.get('msg', '未知错误')}") + fail_count += 1 + except Exception as e: + print(f" ✗ 请求异常: {e}") + fail_count += 1 + + time.sleep(0.5) + + print(f"\n{'='*50}") + print(f"批量添加完成!") + print(f"成功: {success_count} 条") + print(f"失败: {fail_count} 条") + +def generate_fake_students(count=20): + students = [] + for i in range(count): + stu = { + "id": i + 1, + "stu_no": f"2024{str(i+1).zfill(4)}", + "stu_name": fake.name(), + "phone": fake.phone_number(), + "grade_name": random.choice(["初一", "初二", "初三", "高一", "高二", "高三"]), + "class_name": f"{random.randint(1, 10)}班", + } + students.append(stu) + return students + +def batch_add_leaves_with_fake_students(count=10): + print(f"使用 Faker 生成 {count} 条请假记录...") + + students = generate_fake_students(count) + success_count = 0 + fail_count = 0 + + for i, stu in enumerate(students): + leave_data = generate_leave_data( + stu['id'], stu['stu_name'], stu['stu_no'], + stu['grade_name'], stu['class_name'], + None, None, stu['phone'] + ) + + print(f"\n[{i+1}/{count}] 为学生 {stu['stu_name']}({stu['stu_no']}) 添加请假记录...") + print(f" 请假类型: {leave_data['leaveType']}") + print(f" 请假时间: {leave_data['beginDate']} ~ {leave_data['endDate']}") + print(f" 请假节次: 第{leave_data['beginSection']}节 ~ 第{leave_data['endSection']}节") + print(f" 请假事由: {leave_data['leaveReason']}") + + try: + result = add_leave_record(leave_data) + if result.get('code') == 0: + print(f" ✓ 添加成功") + success_count += 1 + else: + print(f" ✗ 添加失败: {result.get('msg', '未知错误')}") + fail_count += 1 + except Exception as e: + print(f" ✗ 请求异常: {e}") + fail_count += 1 + + time.sleep(0.5) + + print(f"\n{'='*50}") + print(f"批量添加完成!") + print(f"成功: {success_count} 条") + print(f"失败: {fail_count} 条") + +if __name__ == "__main__": + print("="*50) + print("批量添加学生请假信息") + print("="*50) + print("1. 从数据库获取学生并添加请假记录") + print("2. 使用 Faker 生成虚拟学生并添加请假记录") + print("="*50) + + choice = input("请选择模式 (1/2): ").strip() + count = int(input("请输入要生成的请假记录数量: ").strip() or "10") + + if choice == "1": + batch_add_leaves(count) + elif choice == "2": + batch_add_leaves_with_fake_students(count) + else: + print("无效选择") diff --git a/智慧校园/本地/生成本周课程表.ipynb b/智慧校园/本地/生成本周课程表.ipynb new file mode 100644 index 0000000..a1085e0 --- /dev/null +++ b/智慧校园/本地/生成本周课程表.ipynb @@ -0,0 +1,128 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "318e7588", + "metadata": {}, + "outputs": [ + { + "ename": "", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31m在当前单元格或上一个单元格中执行代码时 Kernel 崩溃。\n", + "\u001b[1;31m请查看单元格中的代码,以确定故障的可能原因。\n", + "\u001b[1;31m单击此处了解详细信息。\n", + "\u001b[1;31m有关更多详细信息,请查看 Jupyter log。" + ] + } + ], + "source": [ + "from requests import get,post\n", + "import time\n", + "ip = \"http://192.168.0.244:8100\"\n", + "param = {\n", + " \"username\": \"jz97621\",\n", + " \"password\": \"123456a\",\n", + " \"client_id\": \"client\",\n", + " \"grant_type\": \"password\",\n", + " \"client_secret\": \"123456\",\n", + "}\n", + "data = get(url=f\"{ip}/oauth/token\",params=param).json()\n", + "token = data[\"access_token\"]\n", + "header = {\n", + " \"content-type\": \"application/json\",\n", + " \"authorization\": f\"Bearer {token}\",\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3c046d8d", + "metadata": {}, + "outputs": [ + { + "ename": "ReadTimeout", + "evalue": "HTTPConnectionPool(host='192.168.0.209', port=8100): Read timed out. (read timeout=600)", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTimeoutError\u001b[0m Traceback (most recent call last)", + "File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\urllib3\\connectionpool.py:534\u001b[0m, in \u001b[0;36mHTTPConnectionPool._make_request\u001b[1;34m(self, conn, method, url, body, headers, retries, timeout, chunked, response_conn, preload_content, decode_content, enforce_content_length)\u001b[0m\n\u001b[0;32m 533\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 534\u001b[0m response \u001b[38;5;241m=\u001b[39m conn\u001b[38;5;241m.\u001b[39mgetresponse()\n\u001b[0;32m 535\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m (BaseSSLError, \u001b[38;5;167;01mOSError\u001b[39;00m) \u001b[38;5;28;01mas\u001b[39;00m e:\n", + "File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\urllib3\\connection.py:565\u001b[0m, in \u001b[0;36mHTTPConnection.getresponse\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 564\u001b[0m \u001b[38;5;66;03m# Get the response from http.client.HTTPConnection\u001b[39;00m\n\u001b[1;32m--> 565\u001b[0m httplib_response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39mgetresponse()\n\u001b[0;32m 567\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n", + "File \u001b[1;32md:\\Anaconda3\\Lib\\http\\client.py:1428\u001b[0m, in \u001b[0;36mHTTPConnection.getresponse\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 1427\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m-> 1428\u001b[0m response\u001b[38;5;241m.\u001b[39mbegin()\n\u001b[0;32m 1429\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mConnectionError\u001b[39;00m:\n", + "File \u001b[1;32md:\\Anaconda3\\Lib\\http\\client.py:331\u001b[0m, in \u001b[0;36mHTTPResponse.begin\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 330\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[1;32m--> 331\u001b[0m version, status, reason \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_read_status()\n\u001b[0;32m 332\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m status \u001b[38;5;241m!=\u001b[39m CONTINUE:\n", + "File \u001b[1;32md:\\Anaconda3\\Lib\\http\\client.py:292\u001b[0m, in \u001b[0;36mHTTPResponse._read_status\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 291\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_read_status\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[1;32m--> 292\u001b[0m line \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mstr\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfp\u001b[38;5;241m.\u001b[39mreadline(_MAXLINE \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m), \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124miso-8859-1\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 293\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(line) \u001b[38;5;241m>\u001b[39m _MAXLINE:\n", + "File \u001b[1;32md:\\Anaconda3\\Lib\\socket.py:708\u001b[0m, in \u001b[0;36mSocketIO.readinto\u001b[1;34m(self, b)\u001b[0m\n\u001b[0;32m 707\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 708\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_sock\u001b[38;5;241m.\u001b[39mrecv_into(b)\n\u001b[0;32m 709\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m timeout:\n", + "\u001b[1;31mTimeoutError\u001b[0m: timed out", + "\nThe above exception was the direct cause of the following exception:\n", + "\u001b[1;31mReadTimeoutError\u001b[0m Traceback (most recent call last)", + "File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\requests\\adapters.py:589\u001b[0m, in \u001b[0;36mHTTPAdapter.send\u001b[1;34m(self, request, stream, timeout, verify, cert, proxies)\u001b[0m\n\u001b[0;32m 588\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 589\u001b[0m resp \u001b[38;5;241m=\u001b[39m conn\u001b[38;5;241m.\u001b[39murlopen(\n\u001b[0;32m 590\u001b[0m method\u001b[38;5;241m=\u001b[39mrequest\u001b[38;5;241m.\u001b[39mmethod,\n\u001b[0;32m 591\u001b[0m url\u001b[38;5;241m=\u001b[39murl,\n\u001b[0;32m 592\u001b[0m body\u001b[38;5;241m=\u001b[39mrequest\u001b[38;5;241m.\u001b[39mbody,\n\u001b[0;32m 593\u001b[0m headers\u001b[38;5;241m=\u001b[39mrequest\u001b[38;5;241m.\u001b[39mheaders,\n\u001b[0;32m 594\u001b[0m redirect\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[0;32m 595\u001b[0m assert_same_host\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[0;32m 596\u001b[0m preload_content\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[0;32m 597\u001b[0m decode_content\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[0;32m 598\u001b[0m retries\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmax_retries,\n\u001b[0;32m 599\u001b[0m timeout\u001b[38;5;241m=\u001b[39mtimeout,\n\u001b[0;32m 600\u001b[0m chunked\u001b[38;5;241m=\u001b[39mchunked,\n\u001b[0;32m 601\u001b[0m )\n\u001b[0;32m 603\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m (ProtocolError, \u001b[38;5;167;01mOSError\u001b[39;00m) \u001b[38;5;28;01mas\u001b[39;00m err:\n", + "File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\urllib3\\connectionpool.py:841\u001b[0m, in \u001b[0;36mHTTPConnectionPool.urlopen\u001b[1;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, preload_content, decode_content, **response_kw)\u001b[0m\n\u001b[0;32m 839\u001b[0m new_e \u001b[38;5;241m=\u001b[39m ProtocolError(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mConnection aborted.\u001b[39m\u001b[38;5;124m\"\u001b[39m, new_e)\n\u001b[1;32m--> 841\u001b[0m retries \u001b[38;5;241m=\u001b[39m retries\u001b[38;5;241m.\u001b[39mincrement(\n\u001b[0;32m 842\u001b[0m method, url, error\u001b[38;5;241m=\u001b[39mnew_e, _pool\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m, _stacktrace\u001b[38;5;241m=\u001b[39msys\u001b[38;5;241m.\u001b[39mexc_info()[\u001b[38;5;241m2\u001b[39m]\n\u001b[0;32m 843\u001b[0m )\n\u001b[0;32m 844\u001b[0m retries\u001b[38;5;241m.\u001b[39msleep()\n", + "File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\urllib3\\util\\retry.py:474\u001b[0m, in \u001b[0;36mRetry.increment\u001b[1;34m(self, method, url, response, error, _pool, _stacktrace)\u001b[0m\n\u001b[0;32m 473\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m read \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mFalse\u001b[39;00m \u001b[38;5;129;01mor\u001b[39;00m method \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_is_method_retryable(method):\n\u001b[1;32m--> 474\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m reraise(\u001b[38;5;28mtype\u001b[39m(error), error, _stacktrace)\n\u001b[0;32m 475\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m read \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n", + "File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\urllib3\\util\\util.py:39\u001b[0m, in \u001b[0;36mreraise\u001b[1;34m(tp, value, tb)\u001b[0m\n\u001b[0;32m 38\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m value\u001b[38;5;241m.\u001b[39mwith_traceback(tb)\n\u001b[1;32m---> 39\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m value\n\u001b[0;32m 40\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n", + "File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\urllib3\\connectionpool.py:787\u001b[0m, in \u001b[0;36mHTTPConnectionPool.urlopen\u001b[1;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, preload_content, decode_content, **response_kw)\u001b[0m\n\u001b[0;32m 786\u001b[0m \u001b[38;5;66;03m# Make the request on the HTTPConnection object\u001b[39;00m\n\u001b[1;32m--> 787\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_make_request(\n\u001b[0;32m 788\u001b[0m conn,\n\u001b[0;32m 789\u001b[0m method,\n\u001b[0;32m 790\u001b[0m url,\n\u001b[0;32m 791\u001b[0m timeout\u001b[38;5;241m=\u001b[39mtimeout_obj,\n\u001b[0;32m 792\u001b[0m body\u001b[38;5;241m=\u001b[39mbody,\n\u001b[0;32m 793\u001b[0m headers\u001b[38;5;241m=\u001b[39mheaders,\n\u001b[0;32m 794\u001b[0m chunked\u001b[38;5;241m=\u001b[39mchunked,\n\u001b[0;32m 795\u001b[0m retries\u001b[38;5;241m=\u001b[39mretries,\n\u001b[0;32m 796\u001b[0m response_conn\u001b[38;5;241m=\u001b[39mresponse_conn,\n\u001b[0;32m 797\u001b[0m preload_content\u001b[38;5;241m=\u001b[39mpreload_content,\n\u001b[0;32m 798\u001b[0m decode_content\u001b[38;5;241m=\u001b[39mdecode_content,\n\u001b[0;32m 799\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mresponse_kw,\n\u001b[0;32m 800\u001b[0m )\n\u001b[0;32m 802\u001b[0m \u001b[38;5;66;03m# Everything went great!\u001b[39;00m\n", + "File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\urllib3\\connectionpool.py:536\u001b[0m, in \u001b[0;36mHTTPConnectionPool._make_request\u001b[1;34m(self, conn, method, url, body, headers, retries, timeout, chunked, response_conn, preload_content, decode_content, enforce_content_length)\u001b[0m\n\u001b[0;32m 535\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m (BaseSSLError, \u001b[38;5;167;01mOSError\u001b[39;00m) \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m--> 536\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_raise_timeout(err\u001b[38;5;241m=\u001b[39me, url\u001b[38;5;241m=\u001b[39murl, timeout_value\u001b[38;5;241m=\u001b[39mread_timeout)\n\u001b[0;32m 537\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m\n", + "File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\urllib3\\connectionpool.py:367\u001b[0m, in \u001b[0;36mHTTPConnectionPool._raise_timeout\u001b[1;34m(self, err, url, timeout_value)\u001b[0m\n\u001b[0;32m 366\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(err, SocketTimeout):\n\u001b[1;32m--> 367\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m ReadTimeoutError(\n\u001b[0;32m 368\u001b[0m \u001b[38;5;28mself\u001b[39m, url, \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRead timed out. (read timeout=\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mtimeout_value\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m)\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 369\u001b[0m ) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01merr\u001b[39;00m\n\u001b[0;32m 371\u001b[0m \u001b[38;5;66;03m# See the above comment about EAGAIN in Python 3.\u001b[39;00m\n", + "\u001b[1;31mReadTimeoutError\u001b[0m: HTTPConnectionPool(host='192.168.0.209', port=8100): Read timed out. (read timeout=600)", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[1;31mReadTimeout\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[2], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(\u001b[38;5;241m35\u001b[39m,\u001b[38;5;241m36\u001b[39m):\n\u001b[1;32m----> 2\u001b[0m post(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mip\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m/classAttendStu/createThisWeek\u001b[39m\u001b[38;5;124m\"\u001b[39m,headers\u001b[38;5;241m=\u001b[39mheader,params\u001b[38;5;241m=\u001b[39m{\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mplanId\u001b[39m\u001b[38;5;124m\"\u001b[39m:i},timeout\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m600\u001b[39m)\u001b[38;5;241m.\u001b[39mtext\n", + "File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\requests\\api.py:115\u001b[0m, in \u001b[0;36mpost\u001b[1;34m(url, data, json, **kwargs)\u001b[0m\n\u001b[0;32m 103\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mpost\u001b[39m(url, data\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, json\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[0;32m 104\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124;03m\"\"\"Sends a POST request.\u001b[39;00m\n\u001b[0;32m 105\u001b[0m \n\u001b[0;32m 106\u001b[0m \u001b[38;5;124;03m :param url: URL for the new :class:`Request` object.\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 112\u001b[0m \u001b[38;5;124;03m :rtype: requests.Response\u001b[39;00m\n\u001b[0;32m 113\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m--> 115\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m request(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mpost\u001b[39m\u001b[38;5;124m\"\u001b[39m, url, data\u001b[38;5;241m=\u001b[39mdata, json\u001b[38;5;241m=\u001b[39mjson, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", + "File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\requests\\api.py:59\u001b[0m, in \u001b[0;36mrequest\u001b[1;34m(method, url, **kwargs)\u001b[0m\n\u001b[0;32m 55\u001b[0m \u001b[38;5;66;03m# By using the 'with' statement we are sure the session is closed, thus we\u001b[39;00m\n\u001b[0;32m 56\u001b[0m \u001b[38;5;66;03m# avoid leaving sockets open which can trigger a ResourceWarning in some\u001b[39;00m\n\u001b[0;32m 57\u001b[0m \u001b[38;5;66;03m# cases, and look like a memory leak in others.\u001b[39;00m\n\u001b[0;32m 58\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m sessions\u001b[38;5;241m.\u001b[39mSession() \u001b[38;5;28;01mas\u001b[39;00m session:\n\u001b[1;32m---> 59\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m session\u001b[38;5;241m.\u001b[39mrequest(method\u001b[38;5;241m=\u001b[39mmethod, url\u001b[38;5;241m=\u001b[39murl, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", + "File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\requests\\sessions.py:589\u001b[0m, in \u001b[0;36mSession.request\u001b[1;34m(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)\u001b[0m\n\u001b[0;32m 584\u001b[0m send_kwargs \u001b[38;5;241m=\u001b[39m {\n\u001b[0;32m 585\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtimeout\u001b[39m\u001b[38;5;124m\"\u001b[39m: timeout,\n\u001b[0;32m 586\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mallow_redirects\u001b[39m\u001b[38;5;124m\"\u001b[39m: allow_redirects,\n\u001b[0;32m 587\u001b[0m }\n\u001b[0;32m 588\u001b[0m send_kwargs\u001b[38;5;241m.\u001b[39mupdate(settings)\n\u001b[1;32m--> 589\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msend(prep, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39msend_kwargs)\n\u001b[0;32m 591\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m resp\n", + "File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\requests\\sessions.py:703\u001b[0m, in \u001b[0;36mSession.send\u001b[1;34m(self, request, **kwargs)\u001b[0m\n\u001b[0;32m 700\u001b[0m start \u001b[38;5;241m=\u001b[39m preferred_clock()\n\u001b[0;32m 702\u001b[0m \u001b[38;5;66;03m# Send the request\u001b[39;00m\n\u001b[1;32m--> 703\u001b[0m r \u001b[38;5;241m=\u001b[39m adapter\u001b[38;5;241m.\u001b[39msend(request, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m 705\u001b[0m \u001b[38;5;66;03m# Total elapsed time of the request (approximately)\u001b[39;00m\n\u001b[0;32m 706\u001b[0m elapsed \u001b[38;5;241m=\u001b[39m preferred_clock() \u001b[38;5;241m-\u001b[39m start\n", + "File \u001b[1;32md:\\Anaconda3\\Lib\\site-packages\\requests\\adapters.py:635\u001b[0m, in \u001b[0;36mHTTPAdapter.send\u001b[1;34m(self, request, stream, timeout, verify, cert, proxies)\u001b[0m\n\u001b[0;32m 633\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m SSLError(e, request\u001b[38;5;241m=\u001b[39mrequest)\n\u001b[0;32m 634\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(e, ReadTimeoutError):\n\u001b[1;32m--> 635\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m ReadTimeout(e, request\u001b[38;5;241m=\u001b[39mrequest)\n\u001b[0;32m 636\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(e, _InvalidHeader):\n\u001b[0;32m 637\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m InvalidHeader(e, request\u001b[38;5;241m=\u001b[39mrequest)\n", + "\u001b[1;31mReadTimeout\u001b[0m: HTTPConnectionPool(host='192.168.0.209', port=8100): Read timed out. (read timeout=600)" + ] + }, + { + "ename": "", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31m在当前单元格或上一个单元格中执行代码时 Kernel 崩溃。\n", + "\u001b[1;31m请查看单元格中的代码,以确定故障的可能原因。\n", + "\u001b[1;31m单击此处了解详细信息。\n", + "\u001b[1;31m有关更多详细信息,请查看 Jupyter log。" + ] + } + ], + "source": [ + "for i in range(35,36):\n", + " post(f\"{ip}/classAttendStu/createThisWeek\",headers=header,params={\"planId\":i},timeout=600).text" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "343a9e44", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/智慧校园/本部/demo.ipynb b/智慧校园/本部/demo.ipynb index 039bfe9..024874c 100644 --- a/智慧校园/本部/demo.ipynb +++ b/智慧校园/本部/demo.ipynb @@ -2,24 +2,787 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "83d3f4d5", "metadata": {}, + "outputs": [], + "source": [ + "from requests import get,post\n", + "import pandas as pd\n", + "import time\n", + "teamId = 19\n", + "ip = \"http://192.168.0.209:8100\"\n", + "param = {\n", + " \"username\": \"zhongwei\",\n", + " \"password\": \"123456a\",\n", + " \"client_id\": \"client\",\n", + " \"grant_type\": \"password\",\n", + " \"client_secret\": \"123456\",\n", + "}\n", + "data = get(url=f\"{ip}/oauth/token\",params=param).json()\n", + "token = data[\"access_token\"]\n", + "header = {\n", + " \"content-type\": \"application/json\",\n", + " \"authorization\": f\"Bearer {token}\",\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "873025e5", + "metadata": {}, "outputs": [ { - "ename": "", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[1;31m在当前单元格或上一个单元格中执行代码时 Kernel 崩溃。\n", - "\u001b[1;31m请查看单元格中的代码,以确定故障的可能原因。\n", - "\u001b[1;31m单击此处了解详细信息。\n", - "\u001b[1;31m有关更多详细信息,请查看 Jupyter log。" - ] + "data": { + "text/plain": [ + "{'scrawlMaxSize': 10485760,\n", + " 'videoMaxSize': 104857600,\n", + " 'imageInsertAlign': 'none',\n", + " 'catcherMaxSize': 10485760,\n", + " 'snapscreenUrlPrefix': '',\n", + " 'videoActionName': 'video',\n", + " 'fileActionName': 'file',\n", + " 'imageCompressBorder': 5000,\n", + " 'imageManagerUrlPrefix': '',\n", + " 'imageManagerAllowFiles': ['.jpg', '.png', '.jpeg'],\n", + " 'scrawlUrlPrefix': '',\n", + " 'scrawlFieldName': 'file',\n", + " 'imageMaxSize': 10485760,\n", + " 'imageAllowFiles': ['.jpg', '.png', '.jpeg'],\n", + " 'snapscreenActionName': 'snap',\n", + " 'fileMaxSize': 104857600,\n", + " 'catcherActionName': 'catch',\n", + " 'fileFieldName': 'file',\n", + " 'fileManagerAllowFiles': ['.zip', '.pdf', '.doc'],\n", + " 'fileManagerActionName': 'listFile',\n", + " 'snapscreenInsertAlign': 'none',\n", + " 'fileUrlPrefix': '',\n", + " 'scrawlActionName': 'crawl',\n", + " 'imageManagerInsertAlign': 'none',\n", + " 'videoFieldName': 'file',\n", + " 'catcherLocalDomain': ['127.0.0.1', 'localhost'],\n", + " 'fileManagerListSize': 20,\n", + " 'imageActionName': 'image',\n", + " 'imageCompressEnable': True,\n", + " 'imageFieldName': 'file',\n", + " 'imageUrlPrefix': '',\n", + " 'videoUrlPrefix': '',\n", + " 'scrawlInsertAlign': 'none',\n", + " 'fileAllowFiles': ['.zip', '.pdf', '.doc'],\n", + " 'catcherUrlPrefix': '',\n", + " 'imageManagerListSize': 20,\n", + " 'catcherFieldName': 'source',\n", + " 'fileManagerUrlPrefix': '',\n", + " 'catcherAllowFiles': ['.jpg', '.png', '.jpeg'],\n", + " 'videoAllowFiles': ['.mp4'],\n", + " 'formulaConfig': {'imageUrlTemplate': 'https://r.latexeasy.com/image.svg?{}'},\n", + " 'imageManagerActionName': 'listImage'}" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "df.to_excel('重新分班模板 (4).xlsx',index=False)" + "get(f\"{ip}/uc/project/ueditor\",headers=header).json()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c747c26d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'success': True,\n", + " 'msg': '操作成功',\n", + " 'code': 0,\n", + " 'data': [{'id': 11365245,\n", + " 'stuName': '郭嘉欣',\n", + " 'serialNo': '0022681452',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776050001000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8864,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': None},\n", + " {'id': 11365248,\n", + " 'stuName': '雷江昊然',\n", + " 'serialNo': '0022681580',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': None,\n", + " 'endTime': None,\n", + " 'intoState': None,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8867,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': None},\n", + " {'id': 11365267,\n", + " 'stuName': '吴梓萌',\n", + " 'serialNo': '0022722732',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776036853000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8886,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776036842000},\n", + " {'id': 11365241,\n", + " 'stuName': '程柏涵',\n", + " 'serialNo': '0022795772',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776036329000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8860,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776036336000},\n", + " {'id': 11365249,\n", + " 'stuName': '李然壹',\n", + " 'serialNo': '0022795964',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776035905000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8868,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776035899000},\n", + " {'id': 11365274,\n", + " 'stuName': '杨雨嘉',\n", + " 'serialNo': '0022799916',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776036401000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8893,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776036382000},\n", + " {'id': 11365238,\n", + " 'stuName': '蔡雨芮',\n", + " 'serialNo': '0022822732',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776035453000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8857,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776035468000},\n", + " {'id': 11365265,\n", + " 'stuName': '魏俊洁',\n", + " 'serialNo': '0022830076',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776036331000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8884,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776036311000},\n", + " {'id': 11365277,\n", + " 'stuName': '姚祉玲',\n", + " 'serialNo': '0022834044',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776036142000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8896,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776036135000},\n", + " {'id': 11365260,\n", + " 'stuName': '汪昊涵',\n", + " 'serialNo': '3107628753',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': None,\n", + " 'endTime': None,\n", + " 'intoState': None,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8879,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': None},\n", + " {'id': 11365244,\n", + " 'stuName': '郭佳',\n", + " 'serialNo': '3108354337',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776035462000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8863,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776035455000},\n", + " {'id': 11365270,\n", + " 'stuName': '徐文昊',\n", + " 'serialNo': '3108354417',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776036866000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8889,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776036861000},\n", + " {'id': 11367018,\n", + " 'stuName': '唐悠雯',\n", + " 'serialNo': '3108388513',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': None,\n", + " 'endTime': None,\n", + " 'intoState': None,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 10981,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': None},\n", + " {'id': 11365259,\n", + " 'stuName': '万梓涵',\n", + " 'serialNo': '3108390097',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': None,\n", + " 'endTime': None,\n", + " 'intoState': None,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8878,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': None},\n", + " {'id': 11365279,\n", + " 'stuName': '朱泓安',\n", + " 'serialNo': '3108390369',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776036955000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8898,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776036996000},\n", + " {'id': 11365240,\n", + " 'stuName': '陈峻鑫',\n", + " 'serialNo': '3108390481',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776036695000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8859,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776036686000},\n", + " {'id': 11365242,\n", + " 'stuName': '代晋铭',\n", + " 'serialNo': '3108415505',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776047344000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8861,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776047354000},\n", + " {'id': 11365257,\n", + " 'stuName': '唐裕康',\n", + " 'serialNo': '3108415697',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776036869000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8876,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776036873000},\n", + " {'id': 11365253,\n", + " 'stuName': '吕仕瑞',\n", + " 'serialNo': '3108435409',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776035766000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8872,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776036856000},\n", + " {'id': 11365255,\n", + " 'stuName': '彭雨绮',\n", + " 'serialNo': '3108435585',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776036569000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8874,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776036555000},\n", + " {'id': 11365256,\n", + " 'stuName': '孙婧琪',\n", + " 'serialNo': '3108441105',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776036193000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8875,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776036185000},\n", + " {'id': 11365258,\n", + " 'stuName': '涂凤扬',\n", + " 'serialNo': '3108442785',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776036470000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8877,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776036497000},\n", + " {'id': 11365246,\n", + " 'stuName': '何俊达',\n", + " 'serialNo': '3108460593',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776036368000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8865,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776036374000},\n", + " {'id': 11365271,\n", + " 'stuName': '徐梓轩',\n", + " 'serialNo': '3108464465',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776035922000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8890,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776035916000},\n", + " {'id': 11365278,\n", + " 'stuName': '张紫涵',\n", + " 'serialNo': '3108580737',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776035797000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8897,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776035794000},\n", + " {'id': 11365252,\n", + " 'stuName': '罗靖洁',\n", + " 'serialNo': '3108583121',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': None,\n", + " 'endTime': None,\n", + " 'intoState': None,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8871,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': None},\n", + " {'id': 11365261,\n", + " 'stuName': '王露静',\n", + " 'serialNo': '3108583313',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776036402000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8880,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776036386000},\n", + " {'id': 11365247,\n", + " 'stuName': '侯家鸿',\n", + " 'serialNo': '3108588801',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776035778000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8866,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776035778000},\n", + " {'id': 11365262,\n", + " 'stuName': '王洋梓桐',\n", + " 'serialNo': '3108598337',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776059188000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8881,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': None},\n", + " {'id': 11365268,\n", + " 'stuName': '夏紫萱',\n", + " 'serialNo': '3108601489',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776036824000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8887,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776036812000},\n", + " {'id': 11365250,\n", + " 'stuName': '刘鸿维',\n", + " 'serialNo': '3108601841',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776036278000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8869,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776036308000},\n", + " {'id': 11365276,\n", + " 'stuName': '姚谊诚',\n", + " 'serialNo': '3108603729',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': None,\n", + " 'endTime': None,\n", + " 'intoState': None,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8895,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776035945000},\n", + " {'id': 11365269,\n", + " 'stuName': '谢汶良',\n", + " 'serialNo': '3108605233',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776036656000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8888,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776036671000},\n", + " {'id': 11365273,\n", + " 'stuName': '杨佳颖',\n", + " 'serialNo': '3108606065',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776036436000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8892,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776036424000},\n", + " {'id': 11365239,\n", + " 'stuName': '曹雅莉',\n", + " 'serialNo': '3108606273',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776036335000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8858,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776036329000},\n", + " {'id': 11365251,\n", + " 'stuName': '刘蔚菘',\n", + " 'serialNo': '3108606433',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776036055000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8870,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776036089000},\n", + " {'id': 11365275,\n", + " 'stuName': '杨子涵',\n", + " 'serialNo': '3108607729',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': None,\n", + " 'endTime': None,\n", + " 'intoState': None,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8894,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776036154000},\n", + " {'id': 11365243,\n", + " 'stuName': '符唐骏',\n", + " 'serialNo': '3108614209',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776035795000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8862,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776035802000},\n", + " {'id': 11365263,\n", + " 'stuName': '位云馨',\n", + " 'serialNo': '3108633697',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': None,\n", + " 'endTime': None,\n", + " 'intoState': None,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8882,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': None},\n", + " {'id': 11365266,\n", + " 'stuName': '吴琳楠',\n", + " 'serialNo': '3108635073',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776036323000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8885,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776036316000},\n", + " {'id': 11365272,\n", + " 'stuName': '杨丰瑞',\n", + " 'serialNo': '3108650865',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776036330000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8891,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776036322000},\n", + " {'id': 11365254,\n", + " 'stuName': '庞雨橦',\n", + " 'serialNo': '3108679985',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': 1776035795000,\n", + " 'endTime': None,\n", + " 'intoState': 1,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8873,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': 1776035786000},\n", + " {'id': 11365264,\n", + " 'stuName': '魏本杨',\n", + " 'serialNo': '3108682001',\n", + " 'gradeId': 126,\n", + " 'classId': 474,\n", + " 'startTime': None,\n", + " 'endTime': None,\n", + " 'intoState': None,\n", + " 'boarder': 2,\n", + " 'attendDate': 1776009600000,\n", + " 'stuId': 8883,\n", + " 'teamId': 119,\n", + " 'lockTime': None,\n", + " 'gateTime': None,\n", + " 'gateStartTime': None}]}" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "get(\n", + " f\"{ip}/classAttend/into/pre\",\n", + " headers=header,\n", + " params={\n", + " \"teamId\": 119,\n", + " \"dateTime\": 1776009600000,\n", + " \"teaName\": \"马靖\",\n", + " \"serial\": 9,\n", + " \"courseName\": \"26学部1班-班会\",\n", + " },\n", + ").json()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3d80ee07", + "metadata": {}, + "outputs": [], + "source": [ + "attendDate: \"2026-04-13\"\n", + "classRoom: \"2510\"\n", + "color: \"#FB923C\"\n", + "courseName: \"26学部1班-班会\"\n", + "serial: \"第9节\"\n", + "serialnum: \"9\"\n", + "status: \"下节课\"\n", + "teaName: \"马靖\"\n", + "timeSlot: \"16:20-17:00\"" ] } ], diff --git a/智慧校园/本部/mysql_online.py b/智慧校园/本部/mysql_online.py new file mode 100644 index 0000000..5bb9c2e --- /dev/null +++ b/智慧校园/本部/mysql_online.py @@ -0,0 +1,27 @@ +import pymysql +import snowflake +from faker import Faker +fake = Faker('zh_CN') +import random +# 创建数据库连接 +conn = pymysql.connect( +host='11.1.1.5', +user='root', +password='@HXYD1109mysql', +database='school_server', +charset='utf8' +) +# 创建游标对象 +cursor = conn.cursor() +def create_table(cursor,result): + + data = [] + for i in result: + list_list = list(i) + des=cursor.description # 获取表详情,字段名,长度,属性等 + t = ",".join([item[0] for item in des]) + table_head = t.split(',') # # 查询表列名 用,分割 + + dict_result = dict(zip(table_head, list_list)) # 打包为元组的列表 再转换为字典 + data.append(dict_result) # 将字典添加到list_result中 + return data \ No newline at end of file diff --git a/智慧校园/本部/学生消费数据.ipynb b/智慧校园/本部/学生消费数据.ipynb new file mode 100644 index 0000000..e69de29 diff --git a/智慧校园/本部/消费数据/24-26消费信息/demo.py b/智慧校园/本部/消费数据/24-26消费信息/demo.py new file mode 100644 index 0000000..1538402 --- /dev/null +++ b/智慧校园/本部/消费数据/24-26消费信息/demo.py @@ -0,0 +1,216 @@ +from requests import get +import time +import os +import pandas as pd +import tqdm +from datetime import datetime, timedelta + +teamId = 19 +ip = "http://band.hxzhxy.cn" +param = { + "username": "xtl", + "password": "xia123456", + "client_id": "client", + "grant_type": "password", + "client_secret": "123456", +} + +data = get(url=f"{ip}/oauth/token", params=param).json() +token = data["access_token"] +header = { + "content-type": "application/json", + "authorization": f"Bearer {token}", +} + +url = f"{ip}/pay/trads/findPayTtadsNews" +output_dir = r"e:\project\python\工具\智慧校园\本部\消费数据\24-26消费信息" + +FIELD_MAP = { + "gradeName": "年级名称", + "termName": "交易地点", + "teamId": "团队ID", + "stuId": "学生ID", + "areaName": "设备区域名称", + "bagName": "交易账户", + "userNumb": "学号/工号", + "dealCount": "交易流水号/笔次", + "className": "班级名称", + "remark": "备注/充值类型", + "cardCode": "物理卡号", + "dealType": "消费方式", + "cardValue": "余额", + "userXm": "姓名", + "cardNo": "卡号", + "createDate": "入库时间", + "dealValue": "交易金额", + "recordType": "记录类型", + "id": "记录ID", + "recordId": "终端原始记录ID", + "userId": "用户唯一ID", + "dealTime": "交易时间" +} + +OUTPUT_COLUMNS = list(FIELD_MAP.values()) + + +def day_range(start_date, end_date): + current = start_date + while current <= end_date: + yield current + current += timedelta(days=1) + + +def month_range(start_date, end_date): + current = datetime(start_date.year, start_date.month, 1) + end_month = datetime(end_date.year, end_date.month, 1) + while current <= end_month: + yield current + if current.month == 12: + current = datetime(current.year + 1, 1, 1) + else: + current = datetime(current.year, current.month + 1, 1) + + +def to_timestamp_ms(dt): + return int(dt.timestamp() * 1000) + + +def fetch_day_records(day_dt): + day_start = datetime(day_dt.year, day_dt.month, day_dt.day, 0, 0, 0) + day_end = datetime(day_dt.year, day_dt.month, day_dt.day, 23, 59, 59) + + begin_time = to_timestamp_ms(day_start) + end_time = to_timestamp_ms(day_end) + + page_number = 0 + page_size = 100 + day_records = [] + + while True: + params = { + "teamId": teamId, + "pageNumber": page_number, + "pageSize": page_size, + "screen": 1, + "beginTime": begin_time, + "endTime": end_time, + "name": "", + "recordType": 1, + "termName": "", + "type": 1, + "classId": "", + "gradeId": "" + } + + resp = get(url=url, params=params, headers=header, timeout=60) + resp.raise_for_status() + result = resp.json() + + if not result.get("success"): + raise Exception(f"接口返回失败: {result}") + + data = result.get("data") or {} + content = data.get("content") or [] + total_pages = data.get("totalPages", 0) + total_elements = data.get("totalElements", 0) + + day_records.extend(content) + + print( + f"{day_dt.strftime('%Y-%m-%d')} 第 {page_number + 1}/{max(total_pages, 1)} 页," + f"当前页 {len(content)} 条,当天累计 {len(day_records)} 条,总计 {total_elements} 条" + ) + + page_number += 1 + if page_number >= total_pages or total_pages == 0: + break + + time.sleep(0.1) + + return day_records + + +def parse_date(date_str): + return datetime.strptime(date_str, "%Y-%m-%d") + + +def convert_records_to_df(records): + rows = [] + for record in records: + row = {} + for en_key, cn_key in FIELD_MAP.items(): + row[cn_key] = record.get(en_key) + rows.append(row) + if not rows: + return pd.DataFrame(columns=OUTPUT_COLUMNS) + return pd.DataFrame(rows, columns=OUTPUT_COLUMNS) + + +def get_month_start_end(month_dt, start_date, end_date): + month_start = datetime(month_dt.year, month_dt.month, 1) + if month_dt.month == 12: + next_month = datetime(month_dt.year + 1, 1, 1) + else: + next_month = datetime(month_dt.year, month_dt.month + 1, 1) + month_end = next_month - timedelta(days=1) + + if month_start < start_date: + month_start = start_date + if month_end > end_date: + month_end = end_date + + return month_start, month_end + + +def save_month_excel(month_dt, records): + df = convert_records_to_df(records) + file_name = f"{month_dt.strftime('%Y%m')}_学生消费记录.xlsx" + file_path = os.path.join(output_dir, file_name) + df.to_excel(file_path, index=False) + return file_path, len(df) + + +def main(): + print("开始拉取数据...") + start_date_str = os.getenv("START_DATE", "2024-01-01") + end_date_str = os.getenv("END_DATE", "2026-05-19") + + start_date = parse_date(start_date_str) + end_date = parse_date(end_date_str) + + all_month_list = list(month_range(start_date, end_date)) + total_records = 0 + success_months = 0 + + with tqdm.tqdm(all_month_list, desc="按月拉取消费记录") as month_pbar: + for month_dt in month_pbar: + try: + month_start, month_end = get_month_start_end(month_dt, start_date, end_date) + month_records = [] + month_days = list(day_range(month_start, month_end)) + + for day_dt in month_days: + day_records = fetch_day_records(day_dt) + month_records.extend(day_records) + time.sleep(0.2) + + file_path, count = save_month_excel(month_dt, month_records) + total_records += count + success_months += 1 + month_pbar.set_postfix({ + "month": month_dt.strftime("%Y-%m"), + "count": count, + "total": total_records + }) + print(f"已输出: {file_path}") + except Exception as e: + print(f"{month_dt.strftime('%Y-%m')} 拉取失败: {e}") + + print("\n完成") + print(f"成功月份: {success_months}") + print(f"总记录数: {total_records}") + print(f"输出目录: {output_dir}") + + +if __name__ == "__main__": + main() diff --git a/智慧校园/本部/消费数据/学生消费信息/Untitled-1.py b/智慧校园/本部/消费数据/学生消费信息/Untitled-1.py new file mode 100644 index 0000000..8cfc56a --- /dev/null +++ b/智慧校园/本部/消费数据/学生消费信息/Untitled-1.py @@ -0,0 +1,89 @@ +import pandas as pd +import json +from datetime import datetime + +# 读取Excel文件 +file_path = r'e:\project\python\工具\智慧校园\本部\消费数据\2024学生.xlsx' +df = pd.read_excel(file_path) + +print("=" * 80) +print("学生消费数据提取") +print("=" * 80) + +# 1. 提取年级ID和班级ID(供用户查表) +grade_ids = sorted(df['gradeId'].unique().tolist()) +class_ids = sorted(df['classId'].unique().tolist()) + +print(f"\n【年级ID列表】(共{len(grade_ids)}个):") +print(grade_ids) + +print(f"\n【班级ID列表】(共{len(class_ids)}个):") +print(class_ids) + +# 2. 提取学生消费信息 +student_records = [] + +for _, row in df.iterrows(): + record = { + '学号': str(row['stuNo']), + '姓名': row['stuName'], + '年级ID': row['gradeId'], + '班级ID': row['classId'], + '支付金额(元)': row['totalFee'] / 100, # 转换为元 + '支付状态': '支付成功' if row['payState'] == 1 else '其他', + '创建时间': row['createTime'].strftime('%Y-%m-%d %H:%M:%S') if pd.notna(row['createTime']) else '', + '支付时间': row['payTime'].strftime('%Y-%m-%d %H:%M:%S') if pd.notna(row['payTime']) else '', + '物理卡号': str(row['serialNo']) if pd.notna(row['serialNo']) else '', + 'teamId': row['teamId'] + } + student_records.append(record) + +# 3. 统计信息 +print(f"\n【数据统计】") +print(f"总记录数: {len(student_records)}") +print(f"唯一学生数: {df['stuNo'].nunique()}") +print(f"总金额: {df['totalFee'].sum() / 100:.2f} 元") + +# 4. 按年级统计 +print(f"\n【按年级统计】") +grade_stats = df.groupby('gradeId').agg({ + 'stuNo': 'nunique', + 'totalFee': 'sum' +}).reset_index() +grade_stats.columns = ['年级ID', '学生人数', '总金额(分)'] +grade_stats['总金额(元)'] = grade_stats['总金额(分)'] / 100 +print(grade_stats.to_string(index=False)) + +# 5. 按班级统计 +print(f"\n【按班级统计】") +class_stats = df.groupby('classId').agg({ + 'stuNo': 'nunique', + 'totalFee': 'sum' +}).reset_index() +class_stats.columns = ['班级ID', '学生人数', '总金额(分)'] +class_stats['总金额(元)'] = class_stats['总金额(分)'] / 100 +print(class_stats.to_string(index=False)) + +# 6. 保存详细记录到JSON +output_file = r'e:\project\python\工具\智慧校园\本部\消费数据\student_records.json' +with open(output_file, 'w', encoding='utf-8') as f: + json.dump(student_records, f, ensure_ascii=False, indent=2) + +print(f"\n【输出文件】") +print(f"详细记录已保存到: {output_file}") + +# 7. 保存ID映射表(等待用户补充年级和班级名称) +id_mapping = { + 'grade_ids': grade_ids, + 'class_ids': class_ids, + 'note': '请查询数据库补充年级名称和班级名称' +} + +id_mapping_file = r'e:\project\python\工具\智慧校园\本部\消费数据\id_mapping.json' +with open(id_mapping_file, 'w', encoding='utf-8') as f: + json.dump(id_mapping, f, ensure_ascii=False, indent=2) + +print(f"ID映射表已保存到: {id_mapping_file}") +print("\n请查询数据库,告诉我以下ID对应的名称:") +print(f"年级ID: {grade_ids}") +print(f"班级ID: {class_ids}") \ No newline at end of file diff --git a/智慧校园/本部/消费数据/学生消费信息/demo.ipynb b/智慧校园/本部/消费数据/学生消费信息/demo.ipynb new file mode 100644 index 0000000..e620348 --- /dev/null +++ b/智慧校园/本部/消费数据/学生消费信息/demo.ipynb @@ -0,0 +1,25 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "72fd36ef", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.12.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/智慧校园/本部/消费数据/学生消费信息/read_excel.py b/智慧校园/本部/消费数据/学生消费信息/read_excel.py new file mode 100644 index 0000000..e9a9fad --- /dev/null +++ b/智慧校园/本部/消费数据/学生消费信息/read_excel.py @@ -0,0 +1,38 @@ +import pandas as pd +import json + +# 读取Excel文件 +df = pd.read_excel('e:/project/python/工具/智慧校园/本部/消费数据/2024学生.xlsx') + +print("=== Excel文件基本信息 ===") +print(f"数据形状: {df.shape}") +print(f"\n列名: {df.columns.tolist()}") + +print("\n=== 前10行数据 ===") +print(df.head(10)) + +print("\n=== 数据类型 ===") +print(df.dtypes) + +# 提取唯一值 +print("\n=== 唯一值统计 ===") +for col in df.columns: + unique_count = df[col].nunique() + print(f"{col}: {unique_count} 个唯一值") + if unique_count <= 20: + print(f" 值: {df[col].unique().tolist()}") + +# 检查是否有年级和班级相关字段 +grade_class_cols = [col for col in df.columns if any(keyword in col.lower() for keyword in ['年级', '班级', 'grade', 'class'])] +print(f"\n=== 年级/班级相关字段: {grade_class_cols} ===") + +# 保存列名信息供后续使用 +with open('e:/project/python/工具/智慧校园/本部/消费数据/excel_info.json', 'w', encoding='utf-8') as f: + info = { + 'columns': df.columns.tolist(), + 'shape': df.shape, + 'sample_data': df.head(5).to_dict('records') + } + json.dump(info, f, ensure_ascii=False, indent=2) + +print("\n=== 信息已保存到 excel_info.json ===") \ No newline at end of file diff --git a/智慧校园/本部/消费数据/学生消费信息/read_excel_simple.py b/智慧校园/本部/消费数据/学生消费信息/read_excel_simple.py new file mode 100644 index 0000000..181d0b3 --- /dev/null +++ b/智慧校园/本部/消费数据/学生消费信息/read_excel_simple.py @@ -0,0 +1,24 @@ +import pandas as pd +import sys + +# 读取Excel文件 +file_path = r'e:\project\python\工具\智慧校园\本部\消费数据\2024学生.xlsx' +df = pd.read_excel(file_path) + +print("数据形状:", df.shape) +print("\n列名:") +for i, col in enumerate(df.columns): + print(f"{i+1}. {col}") + +print("\n前5行数据:") +print(df.head().to_string()) + +# 检查年级和班级相关字段 +print("\n查找年级/班级相关字段...") +for col in df.columns: + if any(keyword in str(col) for keyword in ['年级', '班级', 'grade', 'class', 'Grade', 'Class']): + print(f"找到字段: {col}") + print(f"唯一值: {df[col].unique()[:10]}") # 只显示前10个唯一值 + +print("\n数据类型:") +print(df.dtypes) \ No newline at end of file diff --git a/智慧校园/本部/消费数据/学生消费信息/read_tables.py b/智慧校园/本部/消费数据/学生消费信息/read_tables.py new file mode 100644 index 0000000..18747da --- /dev/null +++ b/智慧校园/本部/消费数据/学生消费信息/read_tables.py @@ -0,0 +1,17 @@ +import pandas as pd + +# 读取年级表和班级表 +grade_df = pd.read_excel(r'e:\project\python\工具\智慧校园\本部\消费数据\年级表.xlsx') +class_df = pd.read_excel(r'e:\project\python\工具\智慧校园\本部\消费数据\班级表.xlsx') + +print("=== 年级表 ===") +print(f"形状: {grade_df.shape}") +print(f"列名: {grade_df.columns.tolist()}") +print("\n前10行:") +print(grade_df.head(10)) + +print("\n=== 班级表 ===") +print(f"形状: {class_df.shape}") +print(f"列名: {class_df.columns.tolist()}") +print("\n前10行:") +print(class_df.head(10)) \ No newline at end of file diff --git a/智慧校园/本部/消费数据/学生消费信息/整理消费数据.py b/智慧校园/本部/消费数据/学生消费信息/整理消费数据.py new file mode 100644 index 0000000..ebdda84 --- /dev/null +++ b/智慧校园/本部/消费数据/学生消费信息/整理消费数据.py @@ -0,0 +1,140 @@ +import pandas as pd +from datetime import datetime + +# 读取所有数据 +print("正在读取数据...") +consumption_df = pd.read_excel(r'e:\project\python\工具\智慧校园\本部\消费数据\2024学生.xlsx') +grade_df = pd.read_excel(r'e:\project\python\工具\智慧校园\本部\消费数据\年级表.xlsx') +class_df = pd.read_excel(r'e:\project\python\工具\智慧校园\本部\消费数据\班级表.xlsx') + +print(f"消费数据: {consumption_df.shape[0]} 条记录") +print(f"年级表: {grade_df.shape[0]} 个年级") +print(f"班级表: {class_df.shape[0]} 个班级") + +# 创建年级ID到名称的映射 +grade_map = dict(zip(grade_df['id'], grade_df['grade_name'])) + +# 创建班级ID到名称的映射 +class_map = dict(zip(class_df['id'], class_df['class_name'])) + +# 创建班级ID到年级ID的映射(用于验证) +class_to_grade_map = dict(zip(class_df['id'], class_df['grade_id'])) + +print("\n正在处理消费数据...") + +# 处理消费数据 +processed_data = [] + +for _, row in consumption_df.iterrows(): + grade_id = row['gradeId'] + class_id = row['classId'] + + # 获取年级和班级名称 + grade_name = grade_map.get(grade_id, f'未知年级({grade_id})') + class_name = class_map.get(class_id, f'未知班级({class_id})') + + # 处理时间格式 + create_time = row['createTime'] + pay_time = row['payTime'] + + if pd.notna(create_time): + if isinstance(create_time, str): + create_time_str = create_time + else: + create_time_str = create_time.strftime('%Y-%m-%d %H:%M:%S') + else: + create_time_str = '' + + if pd.notna(pay_time): + if isinstance(pay_time, str): + pay_time_str = pay_time + else: + pay_time_str = pay_time.strftime('%Y-%m-%d %H:%M:%S') + else: + pay_time_str = '' + + # 处理支付状态 + pay_state_map = {0: '确认中', 1: '支付成功', 2: '已取消', 3: '退款'} + pay_state = pay_state_map.get(row['payState'], f'未知状态({row["payState"]})') + + # 处理充值状态 + change_state_map = {0: '充值中', 1: '已取消', 2: '充值成功', 3: '充值失败'} + change_state = change_state_map.get(row['changeState'], f'未知状态({row["changeState"]})') + + record = { + '学号': str(row['stuNo']), + '姓名': row['stuName'], + '年级ID': grade_id, + '年级名称': grade_name, + '班级ID': class_id, + '班级名称': class_name, + '支付金额(元)': row['totalFee'] / 100, + '支付状态': pay_state, + '充值状态': change_state, + '创建时间': create_time_str, + '支付时间': pay_time_str, + '物理卡号': str(int(row['serialNo'])) if pd.notna(row['serialNo']) else '', + '订单编号': row['outTradeNo'], + '微信订单号': row['transactionId'] if pd.notna(row['transactionId']) else '', + '支付手机号': str(row['wxPhone']), + 'teamId': row['teamId'] + } + processed_data.append(record) + +# 创建DataFrame +result_df = pd.DataFrame(processed_data) + +# 生成输出文件名 +output_file = r'e:\project\python\工具\智慧校园\本部\消费数据\学生消费记录整理.xlsx' + +# 写入Excel,使用多个sheet +with pd.ExcelWriter(output_file, engine='openpyxl') as writer: + # Sheet 1: 详细记录 + result_df.to_excel(writer, sheet_name='详细记录', index=False) + + # Sheet 2: 按年级汇总 + grade_summary = result_df.groupby(['年级ID', '年级名称']).agg({ + '学号': 'nunique', + '支付金额(元)': 'sum', + '姓名': 'count' + }).reset_index() + grade_summary.columns = ['年级ID', '年级名称', '学生人数', '总金额(元)', '消费笔数'] + grade_summary = grade_summary.sort_values('年级ID') + grade_summary.to_excel(writer, sheet_name='按年级汇总', index=False) + + # Sheet 3: 按班级汇总 + class_summary = result_df.groupby(['班级ID', '班级名称', '年级名称']).agg({ + '学号': 'nunique', + '支付金额(元)': 'sum', + '姓名': 'count' + }).reset_index() + class_summary.columns = ['班级ID', '班级名称', '年级名称', '学生人数', '总金额(元)', '消费笔数'] + class_summary = class_summary.sort_values(['年级名称', '班级ID']) + class_summary.to_excel(writer, sheet_name='按班级汇总', index=False) + + # Sheet 4: 按学生汇总 + student_summary = result_df.groupby(['学号', '姓名', '年级名称', '班级名称']).agg({ + '支付金额(元)': 'sum', + '创建时间': 'count' + }).reset_index() + student_summary.columns = ['学号', '姓名', '年级名称', '班级名称', '总金额(元)', '消费笔数'] + student_summary = student_summary.sort_values(['年级名称', '班级名称', '学号']) + student_summary.to_excel(writer, sheet_name='按学生汇总', index=False) + +print(f"\n✅ 数据整理完成!") +print(f"📁 输出文件: {output_file}") +print(f"\n📊 统计信息:") +print(f" - 总记录数: {len(result_df)}") +print(f" - 唯一学生数: {result_df['学号'].nunique()}") +print(f" - 总金额: {result_df['支付金额(元)'].sum():.2f} 元") +print(f"\n📋 Excel包含以下工作表:") +print(f" 1. 详细记录 - 所有消费明细") +print(f" 2. 按年级汇总 - 各年级消费统计") +print(f" 3. 按班级汇总 - 各班级消费统计") +print(f" 4. 按学生汇总 - 各学生消费统计") + +# 显示年级分布 +print(f"\n🏫 年级分布:") +grade_dist = result_df.groupby('年级名称')['学号'].nunique().sort_values(ascending=False) +for grade, count in grade_dist.items(): + print(f" {grade}: {count} 人") \ No newline at end of file diff --git a/智慧校园/本部/生成单个学生课表.ipynb b/智慧校园/本部/生成单个学生课表.ipynb new file mode 100644 index 0000000..4d8dade --- /dev/null +++ b/智慧校园/本部/生成单个学生课表.ipynb @@ -0,0 +1,309 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "318e7588", + "metadata": {}, + "outputs": [], + "source": [ + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3c046d8d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}'" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "27c18f0a", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "343a9e44", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[]\n" + ] + } + ], + "source": [ + "grade_id = [110,120,124, 126,127,128, 114,119,129]\n", + "sql = f'''\n", + "select \n", + " mm.id,\n", + " mm.stu_no,\n", + " mm.stu_name,\n", + " bb.student_id,\n", + " mm.plan_id -- 这里直接显示 plan_id\n", + "from (\n", + " select \n", + " s.id,\n", + " s.stu_no,\n", + " s.stu_name,\n", + " a.plan_id -- 子查询把 plan_id 带出来\n", + " from student s \n", + " inner join class_attend_stu a on s.id = a.student_id\n", + " where s.grade_id in ({\",\".join(map(str,grade_id))}) \n", + " and a.plan_id=41\n", + " group by s.id, s.stu_no, s.stu_name, a.plan_id\n", + ") mm \n", + "left join (\n", + " select DISTINCT c.student_id \n", + " from class_attend c \n", + " where c.attend_date BETWEEN '2026-05-25' and '2026-05-31' \n", + " and c.student_id in (\n", + " select DISTINCT a.student_id \n", + " from class_attend_stu a \n", + " where a.plan_id=41\n", + " )\n", + ") bb on mm.id = bb.student_id \n", + "WHERE bb.student_id is null\n", + "'''\n", + "cursor.execute(sql)\n", + "result = cursor.fetchall()\n", + "data = create_table(cursor,result)\n", + "print(data)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "2584e86a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n", + "{\"success\":true,\"msg\":\"操作成功\",\"code\":0,\"data\":null}\n" + ] + } + ], + "source": [ + "for item in data:\n", + " res = post(f\"{ip}/classAttendStu/createThisWeekStu\",headers=header,params={\"stuId\":item[\"id\"],\"planId\":item[\"plan_id\"]},timeout=600).text\n", + " print(res)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}