From f7fbe2921cbfb494f6045cc4a4b0c805180f13c7 Mon Sep 17 00:00:00 2001 From: xiongyi <827523911@qq.com> Date: Thu, 13 Nov 2025 16:50:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=B0=BE=E6=95=B0=E6=8E=A7?= =?UTF-8?q?=E5=88=B6=E5=92=8C=E7=8A=B6=E6=80=81=E7=9B=91=E6=8E=A7=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/InsertData.iml | 2 +- .idea/misc.xml | 2 +- .idea/vcs.xml | 1 - API/send_data_test.py | 48 +- InsertData_list.py | 2 + main.py | 7 +- services/monitoring_service.py | 87 ++- services/task_service.py | 119 ++-- tcp/server.py | 8 +- temp.py | 4 +- zjsh_ui_sysytem/.idea/.gitignore | 3 - .../inspectionProfiles/Project_Default.xml | 18 - .../inspectionProfiles/profiles_settings.xml | 6 - zjsh_ui_sysytem/.idea/misc.xml | 7 - zjsh_ui_sysytem/.idea/modules.xml | 8 - zjsh_ui_sysytem/.idea/vcs.xml | 6 - zjsh_ui_sysytem/.idea/zjsh_ui_sysytem.iml | 8 - zjsh_ui_sysytem/README.md | 3 - zjsh_ui_sysytem/config/config.json | 12 - zjsh_ui_sysytem/config/tcp_server.py | 191 ------ zjsh_ui_sysytem/img.png | Bin 64538 -> 0 bytes zjsh_ui_sysytem/img_1.png | Bin 37532 -> 0 bytes zjsh_ui_sysytem/img_2.png | Bin 88208 -> 0 bytes zjsh_ui_sysytem/main1.py | 587 ------------------ zjsh_ui_sysytem/main2.py | 569 ----------------- .../operation_record_20250919_205501_791.json | 17 - .../operation_record_20250930_095113_723.json | 17 - .../operation_record_20251029_110426_514.json | 17 - .../operation_record_20251029_202725_958.json | 17 - .../operation_record_20251030_105441_898.json | 17 - .../operation_record_20251030_105520_002.json | 17 - .../operation_record_20251030_105523_098.json | 17 - .../operation_record_20251030_170942_670.json | 8 - .../operation_record_20251030_171000_812.json | 8 - .../operation_record_20251030_171004_403.json | 8 - .../operation_record_20251030_171008_419.json | 8 - .../operation_record_20251030_171022_493.json | 8 - .../operation_record_20251030_171024_108.json | 8 - .../operation_record_20251030_182057_822.json | 8 - zjsh_ui_sysytem/test.py | 586 ----------------- 40 files changed, 160 insertions(+), 2299 deletions(-) delete mode 100644 zjsh_ui_sysytem/.idea/.gitignore delete mode 100644 zjsh_ui_sysytem/.idea/inspectionProfiles/Project_Default.xml delete mode 100644 zjsh_ui_sysytem/.idea/inspectionProfiles/profiles_settings.xml delete mode 100644 zjsh_ui_sysytem/.idea/misc.xml delete mode 100644 zjsh_ui_sysytem/.idea/modules.xml delete mode 100644 zjsh_ui_sysytem/.idea/vcs.xml delete mode 100644 zjsh_ui_sysytem/.idea/zjsh_ui_sysytem.iml delete mode 100644 zjsh_ui_sysytem/README.md delete mode 100644 zjsh_ui_sysytem/config/config.json delete mode 100644 zjsh_ui_sysytem/config/tcp_server.py delete mode 100644 zjsh_ui_sysytem/img.png delete mode 100644 zjsh_ui_sysytem/img_1.png delete mode 100644 zjsh_ui_sysytem/img_2.png delete mode 100644 zjsh_ui_sysytem/main1.py delete mode 100644 zjsh_ui_sysytem/main2.py delete mode 100644 zjsh_ui_sysytem/operation_records/operation_record_20250919_205501_791.json delete mode 100644 zjsh_ui_sysytem/operation_records/operation_record_20250930_095113_723.json delete mode 100644 zjsh_ui_sysytem/operation_records/operation_record_20251029_110426_514.json delete mode 100644 zjsh_ui_sysytem/operation_records/operation_record_20251029_202725_958.json delete mode 100644 zjsh_ui_sysytem/operation_records/operation_record_20251030_105441_898.json delete mode 100644 zjsh_ui_sysytem/operation_records/operation_record_20251030_105520_002.json delete mode 100644 zjsh_ui_sysytem/operation_records/operation_record_20251030_105523_098.json delete mode 100644 zjsh_ui_sysytem/operation_records/operation_record_20251030_170942_670.json delete mode 100644 zjsh_ui_sysytem/operation_records/operation_record_20251030_171000_812.json delete mode 100644 zjsh_ui_sysytem/operation_records/operation_record_20251030_171004_403.json delete mode 100644 zjsh_ui_sysytem/operation_records/operation_record_20251030_171008_419.json delete mode 100644 zjsh_ui_sysytem/operation_records/operation_record_20251030_171022_493.json delete mode 100644 zjsh_ui_sysytem/operation_records/operation_record_20251030_171024_108.json delete mode 100644 zjsh_ui_sysytem/operation_records/operation_record_20251030_182057_822.json delete mode 100644 zjsh_ui_sysytem/test.py diff --git a/.idea/InsertData.iml b/.idea/InsertData.iml index 29bca85..74d515a 100644 --- a/.idea/InsertData.iml +++ b/.idea/InsertData.iml @@ -4,7 +4,7 @@ - + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index db5199f..df3bfff 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -3,5 +3,5 @@ - + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 1326942..94a25f7 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -2,6 +2,5 @@ - \ No newline at end of file diff --git a/API/send_data_test.py b/API/send_data_test.py index 4159774..a7d031c 100644 --- a/API/send_data_test.py +++ b/API/send_data_test.py @@ -205,9 +205,10 @@ def get_not_pour_info(): "Code": 200, "Message": None, "Data": [ + { "ArtifactID": "QR1B12000151AD", - "ArtifactActionID": 346482967298117, + "ArtifactActionID": 346482967298138, "ArtifactIDVice1": "Q00001AD", "ProduceRingNumber": 1, "MouldCode": "SHR2B1-9", @@ -215,16 +216,33 @@ def get_not_pour_info(): "RingTypeCode": "R22", "SizeSpecification": "6900*1500", "BuriedDepth": "中埋", - "BlockNumber": "B1", + "BlockNumber": "F", "HoleRingMarking": "否", "GroutingPipeMarking": "否", "PolypropyleneFiberMarking": "否", - "BetonVolume": 2.0000, + "BetonVolume": 0.6, + "BetonTaskID": "20251020-01" + }, + { + "ArtifactID": "QR1B12000151AD", + "ArtifactActionID": 3464829672981339, + "ArtifactIDVice1": "Q00001AD", + "ProduceRingNumber": 1, + "MouldCode": "SHR2B1-9", + "SkeletonID": "QR1B12000046A", + "RingTypeCode": "R22", + "SizeSpecification": "6900*1500", + "BuriedDepth": "中埋", + "BlockNumber": "F", + "HoleRingMarking": "否", + "GroutingPipeMarking": "否", + "PolypropyleneFiberMarking": "否", + "BetonVolume": 0.6, "BetonTaskID": "20251020-01" }, { "ArtifactID": "QR1B32000153AD", - "ArtifactActionID": 346482967298119, + "ArtifactActionID": 346482967298140, "ArtifactIDVice1": "Q00001AD", "ProduceRingNumber": 1, "MouldCode": "SHR2B3-9", @@ -232,30 +250,14 @@ def get_not_pour_info(): "RingTypeCode": "R22", "SizeSpecification": "6900*1500", "BuriedDepth": "中埋", - "BlockNumber": "B2", + "BlockNumber": "F", "HoleRingMarking": "否", "GroutingPipeMarking": "否", "PolypropyleneFiberMarking": "否", - "BetonVolume": 2.0000, - "BetonTaskID": "20251020-01" - }, - { - "ArtifactID": "QR1B12000151AD", - "ArtifactActionID": 346482967298120, - "ArtifactIDVice1": "Q00001AD", - "ProduceRingNumber": 1, - "MouldCode": "SHR2B1-9", - "SkeletonID": "QR1B12000046A", - "RingTypeCode": "R22", - "SizeSpecification": "6900*1500", - "BuriedDepth": "中埋", - "BlockNumber": "B3", - "HoleRingMarking": "否", - "GroutingPipeMarking": "否", - "PolypropyleneFiberMarking": "否", - "BetonVolume": 2.0000, + "BetonVolume": 0.6, "BetonTaskID": "20251020-01" }, + ] } diff --git a/InsertData_list.py b/InsertData_list.py index 96566f2..60d0d6e 100644 --- a/InsertData_list.py +++ b/InsertData_list.py @@ -241,6 +241,8 @@ def _handle_two_f_blocks(f_positions, current_task, total_f_volume, artifact_lis if f_positions == [0, 1] and task_before.get("block_number") == "F": adjusted_volume = 0 block_number = "补方" + elif f_positions == [1, 2]: + adjusted_volume = artifact_list[0]["BetonVolume"] else: adjusted_volume = total_f_volume - half_volume[0] block_number = current_task["block_number"] diff --git a/main.py b/main.py index 59122bb..476ab8f 100644 --- a/main.py +++ b/main.py @@ -27,6 +27,7 @@ def start_api_service(): api.run(host='127.0.0.1', port=5001, debug=False, threaded=True) def main(): + global tcp_server api_thread = threading.Thread(target=start_api_service) api_thread.daemon = True api_thread.start() @@ -42,7 +43,7 @@ def main(): # 初始化服务 api_client = APIClient() - task_service = TaskService() + task_service = TaskService(tcp_server) monitoring_service = MonitoringService(tcp_server) # 步骤1:获取AppID @@ -101,6 +102,10 @@ def main(): # 步骤3:获取任务单信息 task_service.insert_into_produce_table(sql_db, task_info, task["beton_volume"], erp_id, task["artifact_id"], 1) + with monitoring_service.tasks_lock: + monitoring_service.monitored_tasks.add(erp_id) + monitoring_service.inserted_tasks[erp_id] = task["artifact_id"] + print(f"任务 {erp_id} (ArtifactID: {task['artifact_id']}) 已添加到监控列表") finally: sql_db.close() diff --git a/services/monitoring_service.py b/services/monitoring_service.py index c02059b..d1dcdfd 100644 --- a/services/monitoring_service.py +++ b/services/monitoring_service.py @@ -7,6 +7,7 @@ from database.access_db import AccessDB from database.sql_server import SQLServerDB from config.settings import ACCESS_DB_PATH, ACCESS_DB_PASSWORD, MONITOR_INTERVAL from tcp.server import TCPServer +from services.task_service import TaskService class MonitoringService: def __init__(self, tcp_server): @@ -15,6 +16,7 @@ class MonitoringService: self.monitored_tasks = set() self.inserted_tasks = {} self.tasks_lock = threading.Lock() + self.task_service = TaskService(tcp_server) def monitor_access_flag_changes(self): """监控Access数据库中派发任务的Flag状态""" @@ -44,8 +46,6 @@ class MonitoringService: erp_ids_str = [str(erp_id) for erp_id in tasks_to_monitor] deleted_from_sql_tasks = set(erp_ids_str) - existing_tasks_in_sql - print(f"SQL Server中仍存在的任务: {existing_tasks_in_sql}") - print(f"已从SQL Server删除的任务: {deleted_from_sql_tasks}") # 只有已从SQL Server删除的任务才需要在Access中查找 if not deleted_from_sql_tasks: @@ -75,8 +75,6 @@ class MonitoringService: current_flag = current_tasks.get(erp_id_str, "") previous_flag = self.task_flags.get(erp_id_str, "") - # 添加调试信息 - print(f"检查任务 {erp_id} - 当前Flag: '{current_flag}', 之前Flag: '{previous_flag}'") # 如果状态发生变化 if current_flag != previous_flag: @@ -98,119 +96,114 @@ class MonitoringService: def _handle_flag_status_change(self, erp_id, current_flag, artifact_id): """处理标志状态变化""" if current_flag.endswith('d'): - self._handle_status_d(erp_id, artifact_id) + self._handle_status_d(erp_id,artifact_id) elif current_flag.endswith('w'): - self._handle_status_w(erp_id, artifact_id) + self._handle_status_w(erp_id,artifact_id) elif current_flag.endswith('n'): - self._handle_status_n(erp_id, artifact_id) + self._handle_status_n(erp_id,artifact_id) elif current_flag.endswith('p'): - self._handle_status_p(erp_id, artifact_id) + self._handle_status_p(erp_id,artifact_id) elif current_flag.endswith('x'): - self._handle_status_x(erp_id, artifact_id) + self._handle_status_x(erp_id,artifact_id) - def _handle_status_d(self, erp_id, artifact_id): + def _handle_status_d(self,erp_id, artifact_id): """处理状态'd' - 未进行生产""" - print(f"派发任务 ErpID {erp_id}: 未进行生产") - # 调用同事提供的状态更新函数 + print(f"派发任务 artifact_id {artifact_id}: 未进行生产") try: print(1) - update_custom_table_status(erp_id, "未进行生产") + self.task_service.update_custom_table_status(artifact_id, "未进行生产") except Exception as e: print(f"更新状态时出错: {e}") - # 发送数据给TCP客户端(只发送erp_id和状态) try: status_data = { - "erp_id": erp_id, - "status": "未进行生产" + "erp_id":erp_id, + "artifact_id": artifact_id, + "flag": "未进行生产" } self.tcp_server.send_data(status_data) except Exception as e: print(f"发送状态数据给TCP客户端时出错: {e}") - def _handle_status_w(self, erp_id, artifact_id): + def _handle_status_w(self, erp_id,artifact_id): """处理状态'w' - 正在生产中""" - print(f"派发任务 ErpID {erp_id}: 正在生产中") - # 调用同事提供的状态更新函数 + print(f"派发任务 artifact_id {artifact_id}: 正在生产中") try: print(2) - update_custom_table_status(erp_id, "正在生产中") + self.task_service.update_custom_table_status(artifact_id, "正在生产中") except Exception as e: print(f"更新状态时出错: {e}") - # 发送数据给TCP客户端(只发送erp_id和状态) try: status_data = { - "erp_id": erp_id, - "status": "正在生产中" + "erp_id":erp_id, + "artifact_id": artifact_id, + "flag": "正在生产中" } self.tcp_server.send_data(status_data) except Exception as e: print(f"发送状态数据给TCP客户端时出错: {e}") - def _handle_status_n(self, erp_id, artifact_id): + def _handle_status_n(self,erp_id, artifact_id): """处理状态'n' - 生产完毕""" - print(f"派发任务 ErpID {erp_id}: 生产完毕") + print(f"派发任务 artifact_id {artifact_id}: 生产完毕") # 任务完成,可以从监控列表中移除 with self.tasks_lock: - self.monitored_tasks.discard(erp_id) - print(f"派发任务 ErpID {erp_id} 已完成,停止监控") - # 调用同事提供的状态更新函数 + self.monitored_tasks.discard(artifact_id) + print(f"派发任务 artifact_id {artifact_id} 已完成,停止监控") try: print(3) - update_custom_table_status(erp_id, "生产完毕") + self.task_service.update_custom_table_status(artifact_id, "生产完毕") except Exception as e: print(f"更新状态时出错: {e}") - # 发送数据给TCP客户端(只发送erp_id和状态) try: status_data = { - "erp_id": erp_id, - "status": "生产完毕" + "erp_id":erp_id, + "artifact_id": artifact_id, + "flag": "生产完毕" } self.tcp_server.send_data(status_data) except Exception as e: print(f"发送状态数据给TCP客户端时出错: {e}") - def _handle_status_p(self, erp_id, artifact_id): + def _handle_status_p(self, erp_id,artifact_id): """处理状态'p' - 生产中断""" - print(f"派发任务 ErpID {erp_id}: 生产中断") + print(f"派发任务 ErpID {artifact_id}: 生产中断") # 任务中断,可以从监控列表中移除 with self.tasks_lock: - self.monitored_tasks.discard(erp_id) - print(f"派发任务 ErpID {erp_id} 已中断,停止监控") - # 调用同事提供的状态更新函数 + self.monitored_tasks.discard(artifact_id) + print(f"派发任务 ErpID {artifact_id} 已中断,停止监控") try: print(4) - update_custom_table_status(erp_id, "生产中断") + self.task_service.update_custom_table_status(artifact_id, "生产中断") except Exception as e: print(f"更新状态时出错: {e}") - # 发送数据给TCP客户端(只发送erp_id和状态) try: status_data = { "erp_id": erp_id, - "status": "生产中断" + "artifact_id": artifact_id, + "flag": "生产中断" } self.tcp_server.send_data(status_data) except Exception as e: print(f"发送状态数据给TCP客户端时出错: {e}") - def _handle_status_x(self, erp_id, artifact_id): + def _handle_status_x(self, erp_id,artifact_id): """处理状态'x' - 数据已接收""" - print(f"派发任务 ErpID {erp_id}: 数据已接收") - # 调用同事提供的状态更新函数 + print(f"派发任务 ErpID {artifact_id}: 已插入") try: print(5) - # update_custom_table_status(erp_id, "数据已接收") + self.task_service.update_custom_table_status(artifact_id, "已插入") except Exception as e: print(f"更新状态时出错: {e}") - # 发送数据给TCP客户端(只发送erp_id和状态) try: status_data = { - "erp_id": erp_id, - "status": "数据已接收" + "erp_id":erp_id, + "artifact_id": artifact_id, + "flag": "已插入" } self.tcp_server.send_data(status_data) except Exception as e: diff --git a/services/task_service.py b/services/task_service.py index 00da6a9..0baa681 100644 --- a/services/task_service.py +++ b/services/task_service.py @@ -5,14 +5,17 @@ from database.access_db import AccessDB from database.sql_server import SQLServerDB from config.settings import ACCESS_DB_PATH, ACCESS_DB_PASSWORD from utils.helpers import get_f_block_positions +import threading +import time class TaskService: - def __init__(self): + def __init__(self, tcp_server=None): self.api_client = APIClient() self.half_volume = [0, 0] - self.task_before = None + self.task_before = {"block_number":None, "beton_volume":None, "artifact_id":None} self.artifact_timestamps = {} + self.tcp_server = tcp_server def process_not_pour_info(self): """处理未浇筑信息""" @@ -31,6 +34,11 @@ class TaskService: # 处理当前任务 current_task = self._process_current_task(artifact_list[0]) + # 根据F块情况处理任务 + task_result = self._handle_tasks_by_f_blocks( + f_block_count, f_positions, current_task, + f_blocks, total_f_volume, artifact_list + ) # 更新上一个任务信息 self.task_before = { "beton_task_id": current_task["beton_task_id"], @@ -38,13 +46,6 @@ class TaskService: "artifact_id": current_task["artifact_id"], "block_number": current_task["block_number"] } - - # 根据F块情况处理任务 - task_result = self._handle_tasks_by_f_blocks( - f_block_count, f_positions, current_task, - f_blocks, total_f_volume, artifact_list - ) - return task_result def _process_f_blocks(self, artifact_list): @@ -98,41 +99,49 @@ class TaskService: def _handle_multiple_f_blocks(self, current_task, total_f_volume, artifact_list): """处理多个F块的情况""" - adjusted_volume = total_f_volume - self.half_volume[0] + if self.task_before.get("block_number") == "F": + print("报警:,超出正常补块逻辑") + else: + adjusted_volume = total_f_volume - self.half_volume[0] - tasks = [{ - "beton_task_id": current_task["beton_task_id"], - "beton_volume": adjusted_volume, - "artifact_id": current_task["artifact_id"], - "block_number": current_task["block_number"], - }] + tasks = [{ + "beton_task_id": current_task["beton_task_id"], + "beton_volume": adjusted_volume, + "artifact_id": current_task["artifact_id"], + "block_number": current_task["block_number"], + }] - send_list = [{ - "beton_task_id": current_task["beton_task_id"], - "beton_volume": adjusted_volume, - "artifact_id": current_task["artifact_id"], - "block_number": current_task["block_number"], - "beton_grade": current_task["task_data"]["BetonGrade"], - "mix_id": current_task["task_data"]["MixID"], - "time": self.artifact_timestamps.get(current_task["artifact_id"], datetime.now()) - }] + send_list = [{ + "beton_task_id": current_task["beton_task_id"], + "beton_volume": adjusted_volume, + "artifact_id": current_task["artifact_id"], + "block_number": current_task["block_number"], + "beton_grade": current_task["task_data"]["BetonGrade"], + "mix_id": current_task["task_data"]["MixID"], + "time": self.artifact_timestamps.get(current_task["artifact_id"], datetime.now()) + }] - # 处理后续任务 - self._append_additional_tasks(send_list, artifact_list, [0, 0]) + # 处理后续任务 + self._append_additional_tasks(send_list, artifact_list, [0, 0]) - # 更新时间戳 - self._update_artifact_timestamps(send_list) + # 更新时间戳 + self._update_artifact_timestamps(send_list) - return tasks, artifact_list, send_list, self.half_volume + return tasks, artifact_list, send_list, self.half_volume def _handle_two_f_blocks(self, f_positions, current_task, total_f_volume, artifact_list): """处理两个F块的情况""" if f_positions == [0, 1] and self.task_before.get("block_number") == "F": adjusted_volume = 0 block_number = "补方" - else: + elif f_positions == [1, 2]: + adjusted_volume = artifact_list[0]["BetonVolume"] + block_number = current_task["block_number"] + elif f_positions == [0, 1] and self.task_before.get("block_number") != "F": adjusted_volume = total_f_volume - self.half_volume[0] block_number = current_task["block_number"] + else: + print("报警") tasks = [{ "beton_task_id": current_task["beton_task_id"], @@ -153,9 +162,7 @@ class TaskService: # 处理后续任务 volumes = [adjusted_volume, - artifact_list[2]["BetonVolume"] if len(artifact_list) > 2 else 0] if f_positions == [0, - 1] and self.task_before.get( - "block_number") == "F" else [0, 0] + artifact_list[2]["BetonVolume"] if len(artifact_list) > 2 else 0] if f_positions == [0, 1] and self.task_before.get("block_number") == "F" else [0, 0] self._append_additional_tasks(send_list, artifact_list, volumes) # 更新时间戳 @@ -305,7 +312,7 @@ class TaskService: def insert_into_produce_table(self, connection, task_info, beton_volume, erp_id, artifact_id, status): """插入数据到Produce表""" sql_db = SQLServerDB() - if status == "1": + if status == 1: # 准备插入数据 insert_data = { "ErpID": erp_id, @@ -331,14 +338,14 @@ class TaskService: try: # 假设同事提供的函数名为 save_to_custom_table # 参数包括: MISID(即erp_id), Flag, TaskID, ProduceMixID, ProjectName, BetonGrade, 调整后的方量 - save_to_custom_table( + self.save_to_custom_table( misid=erp_id, - flag="1", # 初始Flag值 + flag="已插入", # 初始Flag值 task_id=task_info["TaskID"], produce_mix_id=task_info["ProduceMixID"], project_name=task_info["ProjectName"], beton_grade=task_info["BetonGrade"], - adjusted_volume=beton_volume, + adjusted_volume=round(beton_volume,2), artifact_id=artifact_id # 已经调整后的方量 ) @@ -346,21 +353,49 @@ class TaskService: except Exception as e: print(f"调用保存函数时出错: {e}") + # 发送数据给TCP客户端 + if self.tcp_server: + try: + time.sleep(2) + task_data = { + "erp_id": erp_id, # 车号,相当于序号 + "task_id": task_info["TaskID"], # 任务单号 + "artifact_id": artifact_id, + "produce_mix_id": task_info["ProduceMixID"], # 配比号 + "project_name": task_info["ProjectName"], # 任务名 + "beton_grade": task_info["BetonGrade"], # 砼强度 + "adjusted_volume": round(beton_volume,2), # 方量 + "flag": "已插入", # 状态 + "timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S") # 时间 + } + self.tcp_server.send_data(task_data) + print(f"任务 {artifact_id} 的数据已发送给TCP客户端") + except Exception as e: + print(f"发送数据给TCP客户端时出错: {e}") + return erp_id else: try: - # 假设同事提供的函数名为 save_to_custom_table # 参数包括: MISID(即erp_id), Flag, TaskID, ProduceMixID, ProjectName, BetonGrade, 调整后的方量 - save_to_custom_table( + self.save_to_custom_table( misid=erp_id, - flag="1", # 初始Flag值 + flag="已插入", # 初始Flag值 task_id=task_info["TaskID"], produce_mix_id=task_info["ProduceMixID"], project_name=task_info["ProjectName"], beton_grade=task_info["BetonGrade"], - adjusted_volume=beton_volume, + adjusted_volume=round(beton_volume,2), artifact_id=artifact_id ) print(f"任务 {erp_id} 的数据已保存到自定义数据表") except Exception as e: print(f"调用保存函数时出错: {e}") + + + return erp_id + + def save_to_custom_table(self,misid, flag, task_id, produce_mix_id, project_name, beton_grade, adjusted_volume, artifact_id): + print(f"保存到自定义数据表: MISID={misid}, Flag={flag}, TaskID={task_id}, 调整后方量={adjusted_volume}") + + def update_custom_table_status(self, erp_id, status): + print(f"更新自定义数据表状态: ERP ID={erp_id}, 状态={status}") diff --git a/tcp/server.py b/tcp/server.py index 91643ff..4461c03 100644 --- a/tcp/server.py +++ b/tcp/server.py @@ -108,7 +108,9 @@ class TCPServer: print(f"收到异常生产通知 - 时间: {timestamp}, ERP ID: {erp_id}") # 调用update_custom_table_status更新数据库状态 try: - update_custom_table_status(erp_id, "异常生产") + from services.task_service import TaskService + task_service = TaskService() + task_service.update_custom_table_status(erp_id, "异常生产") print(f"数据库状态已更新为: 异常生产 (ERP ID: {erp_id})") except Exception as e: print(f"更新数据库状态时出错: {e}") @@ -116,7 +118,9 @@ class TCPServer: print(f"收到中断生产通知 - 时间: {timestamp}, ERP ID: {erp_id}") # 调用update_custom_table_status更新数据库状态 try: - update_custom_table_status(erp_id, "取消生产") + from services.task_service import TaskService + task_service = TaskService() + task_service.update_custom_table_status(erp_id, "取消生产") print(f"数据库状态已更新为: 取消生产 (ERP ID: {erp_id})") except Exception as e: print(f"更新数据库状态时出错: {e}") diff --git a/temp.py b/temp.py index 2214966..a17eb97 100644 --- a/temp.py +++ b/temp.py @@ -415,7 +415,7 @@ def get_all_not_pour_info(app_id): # 添加这一行声明 { "ArtifactID": "QR1B32000153AD", - "ArtifactActionID": 346482967298128, + "ArtifactActionID": 346482967298140, "ArtifactIDVice1": "Q00001AD", "ProduceRingNumber": 1, "MouldCode": "SHR2B3-9", @@ -427,6 +427,6 @@ def get_all_not_pour_info(app_id): # 添加这一行声明 "HoleRingMarking": "否", "GroutingPipeMarking": "否", "PolypropyleneFiberMarking": "否", - "BetonVolume": 0.55, + "BetonVolume": 0.6, "BetonTaskID": "20251020-01" }, \ No newline at end of file diff --git a/zjsh_ui_sysytem/.idea/.gitignore b/zjsh_ui_sysytem/.idea/.gitignore deleted file mode 100644 index 359bb53..0000000 --- a/zjsh_ui_sysytem/.idea/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# 默认忽略的文件 -/shelf/ -/workspace.xml diff --git a/zjsh_ui_sysytem/.idea/inspectionProfiles/Project_Default.xml b/zjsh_ui_sysytem/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index 78dfc6d..0000000 --- a/zjsh_ui_sysytem/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/zjsh_ui_sysytem/.idea/inspectionProfiles/profiles_settings.xml b/zjsh_ui_sysytem/.idea/inspectionProfiles/profiles_settings.xml deleted file mode 100644 index 105ce2d..0000000 --- a/zjsh_ui_sysytem/.idea/inspectionProfiles/profiles_settings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/zjsh_ui_sysytem/.idea/misc.xml b/zjsh_ui_sysytem/.idea/misc.xml deleted file mode 100644 index 62ef35e..0000000 --- a/zjsh_ui_sysytem/.idea/misc.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zjsh_ui_sysytem/.idea/modules.xml b/zjsh_ui_sysytem/.idea/modules.xml deleted file mode 100644 index acf6533..0000000 --- a/zjsh_ui_sysytem/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/zjsh_ui_sysytem/.idea/vcs.xml b/zjsh_ui_sysytem/.idea/vcs.xml deleted file mode 100644 index 35eb1dd..0000000 --- a/zjsh_ui_sysytem/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zjsh_ui_sysytem/.idea/zjsh_ui_sysytem.iml b/zjsh_ui_sysytem/.idea/zjsh_ui_sysytem.iml deleted file mode 100644 index 53e58ed..0000000 --- a/zjsh_ui_sysytem/.idea/zjsh_ui_sysytem.iml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/zjsh_ui_sysytem/README.md b/zjsh_ui_sysytem/README.md deleted file mode 100644 index edfe241..0000000 --- a/zjsh_ui_sysytem/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# zjsh_ui_sysytem - -中交三航精准布料浇筑要料系统 \ No newline at end of file diff --git a/zjsh_ui_sysytem/config/config.json b/zjsh_ui_sysytem/config/config.json deleted file mode 100644 index 65a36b5..0000000 --- a/zjsh_ui_sysytem/config/config.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "task_id": "20250706-01", - "project_name": "18号线二期工程", - "section": "停车场工作井上行", - "slump": "50~70 mm", - "mix_ratio_id": "P2022=001", - "request_status": "请求中", - "material_grade": "C50P12", - "volume": "2m³", - "request_time": "10分钟后", - "car_status": "移动后" -} diff --git a/zjsh_ui_sysytem/config/tcp_server.py b/zjsh_ui_sysytem/config/tcp_server.py deleted file mode 100644 index b46d34a..0000000 --- a/zjsh_ui_sysytem/config/tcp_server.py +++ /dev/null @@ -1,191 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -''' -# @Time : 2025/9/19 09:48 -# @Author : reenrr -# @File : mock_server.py -''' -import socket -import json -import threading -import time -from datetime import datetime -import os - -class TCPServerSimulator: - def __init__(self, host='127.0.0.1', port=8888, config_file='config.json'): - self.host = host - self.port = port - self.server_socket = None - self.is_running = False - self.client_sockets = [] - self.config_file = config_file - - # 初始状态为None - self.data_template = None - - # 从配置文件中加载固定数据 - self.load_config_data() - - # 模拟数据模板 - if self.data_template is None: - self.data_template = { - "task_id": "None", - "project_name": "None", - "section": "None", - "slump": "None", - "mix_ratio_id": "None", - "request_status": "None", - "material_grade": "None", - "volume": "None", - "request_time": "None", - "car_status": "None" - } - - def load_config_data(self): - """从配置文件中加载固定数据""" - try: - if os.path.exists(self.config_file): - with open(self.config_file, 'r', encoding='utf-8') as f: - self.data_template = json.load(f) - print(f"成功从 {self.config_file} 加载配置数据") - else: - print(f"配置文件 {self.config_file} 不存在,将使用默认数据") - # 创建默认配置文件 - self.create_default_config() - except Exception as e: - print(f"加载配置文件时发生错误:{e},将使用默认数据") - self.data_template = None - - def create_default_config(self): - """创建默认配置文件""" - default_data = { - "task_id": "None", - "project_name": "None", - "section": "None", - "slump": "None", - "mix_ratio_id": "None", - "request_status": "None", - "material_grade": "None", - "volume": "None", - "request_time": "None", - "car_status": "None" - } - - try: - with open(self.config_file, 'w', encoding='utf-8') as f: - json.dump(default_data, f, ensure_ascii=False, indent=4) - print(f"已创建默认配置文件 {self.config_file}") - self.data_template = default_data - except Exception as e: - print(f"创建默认配置文件时发生错误: {e}") - self.data_template = None - - def start(self): - """启动服务器""" - self.is_running = True - self.server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - self.server_socket.bind((self.host, self.port)) - self.server_socket.listen(5) - print(f"服务器已启动,监听 {self.host}:{self.port}...") - - # 启动接受连接的线程 - accept_thread = threading.Thread(target=self.accept_connections, daemon=True) - accept_thread.start() - - try: - while self.is_running: - time.sleep(1) - except KeyboardInterrupt: - print("\n服务器正在关闭...") - self.stop() - - def accept_connections(self): - """接受客户端连接""" - while self.is_running: - try: - client_socket, client_address = self.server_socket.accept() - self.client_sockets.append(client_socket) - print(f"客户端 {client_address} 已连接") - - # 发送数据 - data = self.generate_simulated_data() - self.send_data(client_socket, data) - print(f"已向客户端 {client_address} 发送数据:{data}") - - # 启动一个线程监听客户端发送的指令 - threading.Thread( - target=self.listen_client_commands, - args=(client_socket,client_address), - daemon=True - ).start() - - except Exception as e: - if self.is_running: - print(f"接受连接时发生错误: {e}") - break - - def listen_client_commands(self, client_socket, client_address): - """监听客户端发送的指令""" - while self.is_running and client_socket in self.client_sockets: - try: - # 接收客户端发送的指令 - data = client_socket.recv(1024).decode('utf-8').strip() - if data: - print(f"客户端 {client_address} 发送指令: {data}") - else: - print(f"客户端 {client_address} 已断开连接") - self.client_sockets.remove(client_socket) - client_socket.close() - break - except Exception as e: - print(f"监听客户端 {client_address} 指令时发生错误: {e}") - self.client_sockets.remove(client_socket) - client_socket.close() - break - - def generate_simulated_data(self): - """生成模拟的状态数据""" - if self.data_template is None: - return None - - data = self.data_template.copy() - data["timestamp"] = datetime.now().strftime('%Y-%m-%d %H:%M:%S') - - return data - - def send_data(self, client_socket, data): - """向客户端发送数据""" - try: - # 转换为JSON字符串并添加换行符作为结束标记 - if data is None: - data_str = json.dumps(None) + "\n" - else: - data_str = json.dumps(data) + "\n" - client_socket.sendall(data_str.encode('utf-8')) - except Exception as e: - print(f"向客户端 {client_socket.getpeername()} 发送数据时发生错误: {e}") - - def stop(self): - """停止服务器""" - self.is_running = False - - # 关闭所有客户端连接 - for sock in self.client_sockets: - try: - sock.close() - except Exception as e: - print(f"关闭客户端连接时发生错误: {e}") - - # 关闭服务器套接字 - if self.server_socket: - try: - self.server_socket.close() - except Exception as e: - print(f"关闭服务器套接字时发生错误: {e}") - - print("服务器已关闭") - -if __name__ == '__main__': - server = TCPServerSimulator(host='127.0.0.1', port=8888) - server.start() diff --git a/zjsh_ui_sysytem/img.png b/zjsh_ui_sysytem/img.png deleted file mode 100644 index 975dfcd9ab7ca74c5301d801657e72a7e457cc59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64538 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Ν~UiJMa`q*9El zt4Km}cO%a~$>@`$^)+ciEv0Hh)3nbs^^w{7R}0)fBpvzUmqmkrv5zt@Fm2nlx3tI^ zsPWYnmF(TTHiv{`axDFDhds+=%CuT?t=62mb7Dz=ljtV6Aizz~A)5p%MF6S~BMMMQ zT8bL~{|XJ%^Mp+5K>kowMK$drq!Py}eOxS+HZj!+$_82op#j91bSafEBuDt5d+(E3 zm(c9BoPq)!O(+TRJQnKdj9At;l14*3EJH1zISj)1<;(>-d-2thgt$bDNlg5uN6?XK zCwq=iFKLC1>o=S`bGEFk?8=o(M~@y}x+c%MXyV)jpHGm7cTXJi! z&28JSi+XoUREO7Jb%w0;lvYXakQu8xe`GGuP-;mf1T>Y}5tdcfemc&$XCfYl z*tpE}3^MGr(Vx_K@IWD5JGz>uP9EK|b@{?&=7g*tC#4VhA*b_*{1^M=|K)=PZM&{- z(|K!Dr|nVi?}~bVCv7)$+Idsw9j&|XxS_|6Ry}v#(0lg{efHki|3I4o2ip!heB0nd zfB583yUz~)am0~(M<0D~?D4;Td*Y$*PX6or(~o_3=CL2nJu&Y5lRsU2@|Vj`kH7NN zgsV?aDt=~i$$zGlzA&xqm6_#l%&vTEZZ+%fs_yfudJ&lBxVp~vbe^q$FxT59#`j^I z`$L;CI6v_9GVjDCwQ|E#zk+u*mP-##Abjhq{3t1*IOLRdAM)YTz z-9hj4dGVrxo!fU@x^R)MepylRk;D6!uA85nKV#z8C~%HkcH3mS@O4@EARer zZQE`eg(>Q>J*wBvs9w9HdhKf6bN5ZX_T2o@zFR&z(6&$E?Y#@z^)9?~z~TD_9{KZ- zBM%Kb`p6f@p8WE}vtv#?Kl=24#$J44%%z9FzWVStMUQ-6{K&Y{$9^h%^yl(NCssc> zvHGb=HBV2fd1h+Of2KMAJFVu088xrXt?fd%i8H##8J%Oj9b%03@kWPay-RNR(>!C; zg36z=PEU$o_w(fR?`Ne=x8$<|8wS-U&wZlj(CtT6*-H zxpXz?`62!yt0QK&27-he+KVn1;fWB2%o8$B5a9H`@bZGZymJjNnd0Rc0kB4ztm1`m zHlhGETp8RQu|$|(7CAxiQ^gBBJpT^*9g&5WS_1?Nf)TM8@eX87Q$*GP_^y#(UiR%V z^#C%fSr#lrBV4>@Ik66gr(TYtcx9CpjfZ>Ds7Ea13e!!O?CRw!WRqg&#pGt^kf9=> zKuE%96h_OJFI{%_#2II)yQaMM!i5W4c5lpDWlvl(WBQUY;|ltZT=3S=#m^2}_SXTc z?(Vwmqx}*QGKYe`s!GS0K zKIFv1pPhPY#OY^8p8fBa=bjsR<*_e|{`FPyKS!57{7w18-&H>PL*--RsvhI_$A77Q zdV=%0$*vctxnG&?d3C1et!Q`0XlKVcHSf-;dS_nEyUDIjX?mYrV`#o>jQ#Ye=nW&M zy+}K1{kFZr;Sw)W-feAf>a)cixmoW?iYP%+tfYZG(@4(GN!T^&`&Xsd> z;W;#hcpl4jjV+;p04E5jI1}s;EEC;$gM*eqj*o-LaPNH_L_oZtmIqrroX>=wus1q; zc7FE%{W3QJR2bkusA_B>M^UM*i5@9Dc64RQw$nSAC?u!CL?Mr7asHCRUk?|ZE_YRW z%SxR`PMln~b3^({TlD-%vlfq?xOl*Ki#vR|`03%x|N8l=JBO}qGiXCppKVdScSZHx z*Sg=K8~Y!*x!4bG*&Rr~lCZY`c%o-ZkX>eV<|79^WukT z8&Uf37iEu(Dt}^3oCdRW@!;r5fGr?32Udj80n=|7rt6PK=Ad+5l;%F?=k-hA~^>7HG? z7cE#w>JaRPOx&!DOen>P<0sH(0tayxy%TgGu?Z-gNa-T81cXsLeI|raBSDJe0%EBh zxM|SWD(VP_4i0}vE`EY|fhJSus3*h|0-kQUe2-F82zZ7$(^rHBAdDb`e5{cCaxp@* z;00mi=13A$6f_We8gfDb_60bgghD*bf)}h5z>32fa(ZWoWA21PB%5MbfP^Gn5wiR+ zMRaj9xu7^bzC;0H@I2W%KO=wZ>TRbB&y`)Oc9!dE$FMeov$s;369{sB9@iFC3j;(n5+sfyDsC@qC>Q}~B zy*8oht;yBxr&PZ`y{5|yXZP9F-A#HQyVfsLADUG=(sAXhqyr;ntsFKf`?G0|v6lJs zR&HE&{KTo+8j_98RYk#5hp(G+SfgnW+sbJxvnbT*`|I(!(SP+bw zS!U5|XHa)4Ji}K@|}!K!RaemdPb&+o30v zmYWA#K!OnFfTN;I`T}I42}zaZ6?7qlmF9HjB?XI#>0+Yiku{>rO&6M!1cAw(nv!Zs zCdX%a{-W*cww*h2zVd2Kb#ZO+rINjScW>Cfa{fB2W%-ntWn*V7`()zMUgMU(GiLq2 zM{fS-h^>DgzWp!5cRuj>zI%ri-Zkv-ZJ(XG^|P}#eSWU>7ng4M;%cieOInR8YdyO3 z52K6!KBnmLu_cdxTl(aQ#)Ncx`0G~PELkI z%2Ajr$LXB$jnDuFdX??bxY9g^Z#6m4YeaZ+kV+6wXvDA#M3sm$IeEYYvIb}%Fp+-J zxf}%=fg3PUoh)48k`oFv4jLiO`VRAotp zr^@54){8F`@A-8{LH>M)-D*!2DiEoX^mFJPvWb|Te(A;Y7s%ugZs=-=kP_zta2!&^ z1?YKGp#d-*K?l)rz>bU-^{M8Cnj1O!U(u73>j(;jaihj_2S9m3QSr1mX!csnPT|=E z4V);a23rs`MDlR zyE=H}3&#sV4$OinV{C#5aOy-UwZF{MN&n_|*Z%{l4z{IvAt zc?&nMSXXrVVoh0<2(meAPF^{;^~ml8o0q4ou$z`g&nx(4M*cTb7k)Kk*%#AS51YKU z|4(bWjoa|v51ZcnVe6|u?0D(ty)R5Ge0l1TSErr)@2vBW&${@JIhP)tclqh~%P+=X zcs=fP`?zCWV-EI?+dm|3_ZQJy#!Op1cJktHCNBDJO8)rqw#l)%rmR(YtG2B=aBP1` z>1EAXY1CAP+^+JA7xr%5R*;ux=OTKxG>1JSJvUbjw9(H2r09X6A4pFNQUJhN7|NwT zv4PI;8COYtMmPF^4)hKI1li=|JZ>Ln1RyS;LIaVX;qd#plmJ2lIv1Yza6TP~($6{I zVIGzNlNy*%P|rhYkkv{TH*&Er$Zbt7Mu6d4{n`}@Al0F$boTq2ML8kip4GLRQoNg56Zq+sBR@LIdcgt{XTD%34_zL@&KEl|VWCU^n28fP%5P z0M9OmNrO~JPc(XYu&)`#zM4659pDKCDl`DnA&5ACw?cuz>IYE(1d1Yq2&xfL0F2e> zJlKLpO=fHwvLaLy=anNAPX7y?L|~$8L>H9oxsUz3X3lOVn@`uV_-YZ|fH|{fr=?|B z9oc4EcCy8uY!Vt))EQ5+rCSpn=J<45a(+(c+O=zU?>~6*+@;GE&Pu1Rw%S)+>LMTN z;08xnzfk*QQOGx_s#};weIa#xnwZ z?1CtrM9PUa!D4(h=n|ok-Z4T4zN0IK&;Y>>jfh|)&SZgLj!1`|3XiZH2~4=lZz3!<=g@2BsYt07bjSTInh>U@q`$oPfoQn*n?B? zg0M`aguU_blog04IC`*QFo96_DrgCvL>GcCC`6^f0Xh%QQl$$`SBfq)UCQ%k&m|{W zXV0}HBxk2O7C0QaHk&99O8P0)nvj)l7D-Xoq!gRUZntOW+O%ic+I=h57p~k; zxMKajmFst{+q!4xzQct_PnB_&0bRi&=lD$U~*bFmF~@#RaG&YU~4r*PAX z4NJ0?%uijAWy*8JXJ(jk(=9n^sd;IRY^yyzG1ZooX0vA6;}YVhOqy&;N`vP~edRe-UMXBjBV1VWq>2Ysz}M`%FlBri|OYecO95E*W5h?7jbG76ya45vCy#s!98QP2qdA+`h} z3&>d>XNKih_mI3 zi^|uo-I0;CJT5LZHr8rO&B)BmPD@L(rI>6f$%Ld-o5^7p#q3SV1T1rQdd9-^+|~I@ zcdXlTc=x_D$4*>1f4Quryt>*+pmo;jRaNA9cuGq>CB?MqCB@#7qCja`xV)mSyfQ#O zNo6HH4MItZ0t%W_cURU{7nNK+bLM2>!F^kH{knQdfn(7EdrpSMVKt>B+wA77bZdTw zb#Zp;ij?GhQ&MJ1O12{{%baS7NsOKuJ$=@!8M}7uq~9ChByL2m13ZON5k0*VbV59! zi>nbCNg~A1#Ub$NGHZaY4>f`rL0bq7fZ7lO0FgEPZoy{&2;l?3#mD0+*j<%V;Ax{PRZ&)sM!JGz%*j3p2erQW{JEkP z%hwZ*2M-@VcKY1et5+{omKC`xOZBQUZ&{J2qD-$WH_FRui5$#lt$&)9J z9Vy&*VDFCYTQ_W2yJE%S1q*XC1-+&w+EQau?XeC=61in|;p3;r z3%WG8(0EKaq)S$s*fB&`xw@*tZ@92p<&`U!mM&WnpJ0xSHPg+r+w)RwS%e~Ug2k3# zCIDqxteIw8rX@Yynvs^0VJF*R7WED+^hz;XZI)DrH6tS}Cnsyc{CrZxOBWR^E?8Kw zX#V1Y`Ae59psiq0UjF>7+?@2ROh-<3CTSg;l?;$Q)s*hAWIHUmsn%@5G&z|mbWX` zvP`Nc5GFzcK#9)oI_ON3>`ELnDIo+Bkc)sk;D<)x(Lno}~8QyivL`cHFm zT9PF_J|!z*dd&FAv&JPR&)K$hgR8nq)QUFh^-3*hh_ru9QKC&nm3$n__Hj@^@jgaN za4C#y!vxgLFGB;^3m@uuDKLl|Y;gV!Im^J{aCYQpbi-cQk?^E(a9rb+dO(!;)5kdl zIA+U)f*=pd!bB;@4I!dhe)%|@-N=KoF1ea&C?abBJw0-L`eu$m8XOI$!@@(P|MGC@ z)fyfIgx?q9nyM=JDf}09RR9-g2skx_B!h=GG2}@PAK55+I&`g;IFF34aGM)M)lR=J zeDVC1f`voM1|^*d3`Ec0!UhRb-r}*c}cLceYtcR#`Bz zLHvZFG5SZSaoBBQIMBv_@~~i5MmFtePEN6yY&J_8q0?c@Bv;a6wx>C=($lhuX9=cr z=gpZ(xQ>rryktS)!M$Wk>6`PJNP>$T!R2NN~P^+|M&P{U3rt6*@>5cM=r3Wwv0 z5G!!e8@XI5#&p41UaWj7!;)1M)s^K{UY;fZt&LOHV)bxYb{A>g9;AD-H)n9#E^TxK zJ)#b{8WL7?Db|~V0P@Jed_bg`M?BEzkrf1*xz>RDcZDkym^7KO*~A41057#Wf(RN1 zzKw`t(O$W(1|2*yGypJpdFlmows>BlJp(*w(9HUY9%a%HfE@xe^aO(lkRgB9V2Y}AJ~)lM5PxgZwi&PdCo z4c%y?4#|n88PjG?nKU&%Hetd1g@yYM(nZHZj3>Uu!ES8H195YDkb;ONE3)}z*&0Nd z;ZLbXWpWH2l*K&;Zfbdki67Gh_?TWfnZ%D(bz~!mOyP!hS1BlBcSab*lR7(2SMAH;SO8@~t3i44!+bL^r?$Srg{L7K52l(ivmy_qKxH;T_6Tw?_ z%b0i_CmpEWsU1E`kmr0EoW-o1VKgcS2gWJLg=5g-o&H?5 zWck4ZhssMUymIv;NDYnMs1UDS;^WHyih2Tav=v;VvCwJYsgLljG&wCPD68J+9Crpo zg}K5hJa%jbPhf%z2J*t$u{%i3!zsM@N*D=t^Bg*`TOCh5KsQ597>B#(lM^pt0vk{T z1&Rk4!hQ8{8m@v%fQM6{YycPd_OLOU6j+EY;iY!>^7H|nbr@a&nKFO_YBGor;BjAJ zoEQ_5?}gC5PB&n*PU9$)k_*%bXBcu-=M*0T7UD4)M;18fB8HR5k{>EOymI*}!VTT{ zd2?gPki%0*MV*y&Lu0MV8sKLG?B#KMn#27lqIO ze}}-NA}b*tnL_-jWrRUSq}*J;LCEuP9c}c#1h1-!N-vK&;KtKkhamOIO8dBi%6bPm z%151Xk1_VH>=DgnsLA2EplAE1yB zcK~p43iN?#RE=bE5X6H3qD>93C|B9XF=BYa5K?{~UB`QXOA~<#725nFO-u}nLYiRn zu_DIhuH_UTzs#}sN=I7hk|3|t7T^H~x^^)58oSCkj#ql!Ub)Pz9uX!Eb6wlW1LCt1 zB{)Sumax_3P`trn1t$tJ&7lL@@#WFYCrjbrYoG-m&_`#{1Gds-aUAvQ{Osy0dcE%Z zs0)Hir~bt8ageA+xtc1N2(ku^peL8CAOJI?|1LDpDAx^xm4bysBpps)WKW#~m9;$j z3%ac5$yMnl>Uq?%GSURKQN(ohv_od@pkfPYm>}M zbMfq3gB^bK^vKC>J~pNNbL#P1H1_-ObHbb`g71UII;p|oxZ%_|ks(XrC}PEL#O9L~ z!+mUx@XcY&n%NmNWNl2bJ6p})LIdDCFAtM7@=ND=ZPi?kSA_;VJVF;)YoM8f2$*>3 z;?-1}_$34o7iv-*O2;%L3Hs#xy9TabP{WH$(Ffp$=*cTXmk>{&Edmo%QA@OjlTyHI z(BlwQ^j{iJ(uhntAoIoq+Curb`oN8w-DX7)0j}HUUEEPWQ;7<< zG;qF{#zF@G6~cm#iF*uH1O?N`(-%P{I3`F3So}?_NZbHSUJewgMi|t9td>N(D`xa@ z)tg3H9|xi;$f0ncMCS}AO=>S{p@UO5Vt;2ueu1BZPcAk8PD(e#sD8U{jXa@1g$BSi zJ~>ZZcwe%*JRt*aJX-KV&+9t-xdId71xk=nW9ZsdR&XMasUc$xI?qml2WQAoFIWtG z7a4p)6d=;GgZmcdflqjU@Cw0w)W|)5^Ly(!g&vO`?o&Xnvu-dE=o}NOV?PMCN|S>L zA$IS*GE%H@&PGTs<%UPr%Q~q}E>xnZ!7ua9)b6@W(}opM2)nLPb%T7tmjTZFa&1#X zMzMYD#)DoBNy>gs+{W&BiVS9`FgulgndOa3fiI~VVHa^g^?mS_AgX>V-3+({c>W2v zOyg*HJtyNrCjkUuo*fmCAx)j-6rxa&T#>j8@GJvO(xo?|ypua(wH6G_31G2fkFgZ6 zn75@kx`-P1c;+D_IV2H61Jr^*l#d5nkY7Nks^eM?)QwD(#`)1<>G$GJ7&0+F#6whI z90j!y2UNVQsA_r0vrdka1Ca(Bd1zR5cfFhu+Za)d1~(gxL3XE=nZYf@UBTv)Vg=t5 zAV4GTqMMy8cf_a}{ckO+Z`@kQe0+1AbrrrjFr>@TI{I~x)gG4QE*`;!acyA74J|&- zr^ENuWP&e%ULP@9r(vMi&Ev0dCqA0ED3txM}{~dUMp$BnuFrYOm^9#|f55 z3|HCj9!PsIH00DE&aTptI!H*gd{<8%PklaAnJdZJ?n zxRxA#IJyBP_>#C9)UBGATfxr(UBVMoKLc#c6O^*khw+vZjy9t@@ciz+t<>wqvA zAs8@&wGQqFc2v(X42DO>{Qx^W^spj23n18rFgtpHY#mnzR3^}n0Y)4X-yFZl&jTi5 z9?aKewuwL(2NCckVJSgRcs5|wG$v~h8NNI&Q8*&=3BL$d4T22#rbeNe{BjzkAxH9o z6|bC9r*1hKy*&D%G!v8%=u*K#F(cYJ2+$H}zyZ~tzH6fcUak}awo<5yq%dq62el!F z@FzNh-Jq^CnW%}zAWu@jt;MAbN;ta>Ve9b zCYyxNKqJ=%1+{?$1-o&v2e-(G72*JoZxcrWTpXbWz)0%w89nm9C|NKjc#FT0$unnCFy{-2=% z<*{EE8UUEUS!e`q06UMYVu&~sA_xK^{~tpGobC0$h6a8gXKLhXGDyXwMkTWdOx*2% z4-K@4gO;8`Bf~a;+Rzh?0HRP@oNVv9HZ;)8lk;((JP<3)FL=Ijo1tLp*tb^z6(^FR z0btSiKSBe)Zw#=$Zszb0p|hG-oe#>y5W%x+$eg`zRYK~W$+ETaJQ%`3~R z04CMwm7xJTEG~!$4Zw#2(O^u?!xY$G!kQny&%5)STXAK|_1yO~76Lll^4O$zJBAhjF zUOje)ey4UI1Eiw>R3EW64H|L7fFZveJqWW7g^a+>*16^tFoa8tiyq=A6p*U33J$RM zRL7wpoE`TS-v_70zA!WOT#FJw0f4|S>b$C_`Z@Tj_~s!_B>-GJ5t#_s5uIU>U<sn6wphP1#UoOaQJ<4pf|+HNp21es76Eqs(C(wpeNa= z%L!7~^#qXxWg2HlR->!AcFlX(7)?zmkO=}#o;B7I1>kIXv_uk_PY$-IC_poh6Vow? z@(?d*mTt3?r#TyvN}A=+3T-~Q!Wz9pK)_U>8wdh2LYJWd+$x024pC_frC%5*?wdV@Y!{aiO_|Ls^OQ1t8zmldpR=%YPx|_b$xPH6Tnn2 zm+A3v(9+H0xCjj>#>DQ8T=mPx;dQW{ArmZN0&A~bB{9fZ1MtEC2&ieYKu9d{$*HUK z!NpTFp}V1|yqsKsNM@L`ml`=gSf{&IgKA;MM1flQ#)YQbZNt2gzzWWHYnH1@k`}r zVBn9Xl8+;qxc9JOu&Kb4&ceBg3s>M9q9?3x18aFVM@PM^*&8@CfUl%6IbwHwB^M?X z2xeg#f;KWD*5x(i3p@y70+E5mKu@qn8V8)fgGyZ~f(!6`OM_E4TS5Tb4IHZROXql1 zP-YE)uzZ|Xk3e>ai^#%mDHY|77&-CF+yM|Jq5}X{n8#R{JzJCqG!rbmk42I%B8?Dz zVEMx=anyD6$oOxF<1T0iGGP3DGJ>E-RJ8T8FRkQ1$PTP=-S@#>xZj`>L&m|~GL@xH z#+I-zPK~qRL;#JKBkTblAi|OTQWtt`NQe{S;Lv&H)M-Q(KwH6xb<;d7tDO<*TsU`2t4t)A8xkfU5pY-(%IpP6f0hFL8 zcoThaS3>LnfeKQ@D1^VZXh^Ah8yse+%h== z$)rw7m`xR z$))12qe~Y%gMw`%(yCg1I9u^LPB_Lf4XN~TYFxJ{7r#6lxo(#6XmAtV<3>)o3~|1; z#`%zj958{y51r(dMdibCHC16_u8jiVn8Aoe=nPq~5T|ZAW<*&J1ty(il?Ja9iga&S z8bmK4m97I*Jx`!(kkyP~w|Ms!4S|c&!Ub%lb(zbItKZ1Jw9aE7HJsV4xBw3{j2Z4R z5awaCuha&12bh8^o`70vfp~&gY2-QDFaUr^Gjk{mC%z;Qub_-C3BGG!Zw~vapVP!% zCr;hM>3nLiEzp2t(wB7e000a&&H`R`%NlcNR7wjLPVq8&3NX3ZvDY|qh(Lfa5BvhP z!Pub1B}d<2t|GzI$YBL|c0i|}=gKv4$|Za{H-|SBu>y7w;7FaKCyyLjfx+-a zI7evo$)Gt*OPwrRgBCP~IRhBSgv`S89hBACTue`XIqdJ1p$a`>lwM;=R9Rl-zBUIJ z`|1&qOdrP}boRMmXcaR8WFSFcu9l;YZgvjPh^I)Q7Cfk|9ez$omX-tTL}(x^GcCP5 zFCf6_Y_J?4BQO-&L2B^%y*z!u&+&1*qYt+QBjLmCzI4#4D3byb%)$a7*|+fI1F{6F zJ7S>MU{#J0-0Ok}aOf1f(Q&Y^N6s>URDwNo%b9wOGKkPZmvW$2;{*W|-;Eso#n>Eu zsONNVuowyu_~i6(cyr)8;S9ENpB7(LQfbTv|o3L+^p7NAZd$2ut$Lj zjvK&4W}`-C4FC-QQ!PiNs3#f$CJ>eypR#*hzfduijFp~se zY6%pvPKpE*^pl^*be&vk&Ci)n*MW%|MeItJJF4Nq{Gd!*2AF{Dn4pt@Ft5~4 z^*m)o{T!SH2t!y%-FPqOOd>V31tPMHGf>j<%^9^g%WqiZ!WFel%3wDf)5m;=FYi}b z0|9=4(Y$ix6`Tc~1eXm&298tRe4I)E^`kh>C)eNc%h)<-4rlT4R68$6KG6<%DW(g` zX#$GHd_1`8l{M6_+u-^kP_8&G$faknd0ByB0s(|yWXQxz_4RNxY&eek6Q>Aqv_c4Q_*ns-q7;&g^*SRe zfI;`Td05xa6)zjF9h=iQR#_*fuV75q&nxnTWhMfwk&lB27y;C!iw9zDK%$(C4@HIs zbk11P6+t;##=8Z^!^0P2<$z0w>Spf_v@vt`sPY~Y+XNQx~$Z>qKaJ2bl z@H5C^Qk+O+4FES#Fo;J3Op4vYTyV$9r35t@D+=-2Js?3JCkP<11TqT_Kj>0GL{3Br z@^CVa>65EQ0mltk^Pa4?nw+zI$a47R2WS=4DNz&=CFZq3XL=XW8 ztKv#aVVQKGOcA}~hu6!@2&Wun0-iv2ZWi*m8U!1d2|`HAgaVD7HTd=*BlvNC>Fc2n zG;)y3o?hpOf$z|$Ma*+jSOjXla>@!w5S_iUK&oI#SuGB#2vJ867I>(Zp<4{E$U~2-O$b8$Qkxkw#tx+bzyed@B{*Ru)aFy5mj@2@82{N5CHX4 z$C+-p(+V7c2!}rse+X$RU0~PD}b|r1K1wOBit?g7k~w3L{Fbgl~ho}iSQ+1X0Wecy5hLs*mUM)MYRg7p@=D< zIG_RtzOzq?KcFAq2Z-@<{Igz8%5!m?(-#p!!?}Dck;9zZ*s?-_;1?;Ld_0G)fs?ph z{8F+8S_hP;NU%XJUg(nZHXAty+{Z)00$pA(AtwC@;jBcQ^|j8IlOYx8OUt zV;En9B*I32Hi!~AVkJN2xTzE<+E=AOVMrJtgHsd0&?XP`(v>1EK#9I4Ikf4LD{F%_ znt2|+hrK5}zMv8?4ip2p5>x`S=ZVO`#~lLrKzX1NB*ei)p^jz#7%F)&XSoh{0@t9?)sIL~?pK+*nXvvrJ?VPhiB* zz5vs8chtukxq&C5D2Rl45ep2qxMkoQU{XUX3QU}H&{Au_&BHPfPjx&bjCg@CLUKhz zpw`Vo9w{jGJa+(iQedj*nwF6g8;v>-wm`Et%7u>5NE@^lUnz{$v?Pl`1mK$L>=ubD z6@eRRQ2tEniNQl5x>k+w~KrPz+aw&RT4cb(Q zhi*IxFjq}7 z6;oqMZQwH2ja-)!bOta1I%ol-0Z9l&!dXM~ypfk)@p8OdV+Sx2Ogig>FpKU+SuM%O z(E;4}CRrf_d=ZxA_dzS58vqer5BLI&bv&NxlXD7u?AF0tp&J?_!K4TXw>cc4-V9Db z!Oeq219<_;brEHBL+qCUi{6OXv;vdri67n|7yANgmAwhcVMjlcyJ(aVDSS_SNn8zl fC9(^^2EG43@+!V1*o>0800000NkvXXu0mjfGp3rH diff --git a/zjsh_ui_sysytem/img_1.png b/zjsh_ui_sysytem/img_1.png deleted file mode 100644 index 21a7abc45a5ed3fa794248701ebafb33b5b3a9bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37532 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 IM6N<$f<*KU?f?J) diff --git a/zjsh_ui_sysytem/img_2.png b/zjsh_ui_sysytem/img_2.png deleted file mode 100644 index 27997378112fbebabb4c7ffc74fba3e52e5d236d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88208 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�^@lc58qrNB7@-~xP=N+o!9yLbEA*^if( zNX@3V9Sz_q!$%JrUKjnfH2F3d{m6wKFo?SjM=d%xSlkLBr>@*Qr)5%UW zp8GU(q5<6rn{hy4QW)6GM7XviN*f&omw_f%rsKhB*q%-YIMSJD0iVFpJ3zx?$dcX` z8fH*YcHvkVj9SbUvz|ks16}TndX`ROY4l0okNVrEpW?(%r_A!^1^Kv_&UOiVK$N%i7Yb+R6}Jb(F3yQC*ij(2(9+pV3*J z(pDbRD1NHQ2`o;&C5XIO5Pv%_@m^}=9cfjyLBX-Cd^KS4T__uRu^BsB>tr%`Z+P`?Oa`d`EEyiG zgy-9|1iYFV>ktOl1Qr)a1+b5ci;0Vh$j(YnN(3;+XJqnY6BB?DRw&EjV?v7xQYBg8 zIZ-zS5$Cg?9!`I-J^lV_!GpzxL9=ARQ{<0$$|sEGP+E5c4H#W>>J(kPr#61daN7XiZ&$sxE1uA+@(YtwRyt zR2*Jg@JO0)U6Od6AATV};a*{;rI)^w{Vau~=MKSO`>{R4Nq+1jWV0 z5{U%B@bcx$FTec!#fxX40S3H4E(fqtE?O*mBJ`*rOYi_XHp3$lEB0BPwviz9VR{vw z53S@#z+gT674Rv#K%dP@L$Kg`ps~&~Gh!iSSP8*}4T0G@e9;E3?$6SX4qBIyvIRtJ zFCV-qs0aU=*w|R0aT62b5@I5=`6-DBF>wj;S=qS>DXEdMahchCV08JZQG)calI+l& z$g3Goj|01#@nCb#gB5u}^M%1PrH{PIL%6li7;WLq-dFVDSQkUQt1iY>AMcLvXIV04 z7&4|K;-!da36i$}5zIyk=OU7Yh-9fnx^}o^PrLY-r6W3=%VV!KFLAoAM`XXgp5aCKh zvy4saI?-Xh^t8GBs#zIetc@71i&NLe57s93*Qa#XCAF1D)rp@} zX5SaZUMY;d3jUc{(RVZBABl3~G=uGRwMx+R0jUPS<@5Q#n&jo7%b)_+88{?>o25&a z;_-OkdO<1%vEhp+)4Q-9p4@{;a+|J&;Mzck*9RLAyK!-GK-4BDC8Q_{f8#Z7qa5@co8hSt_v8mY5NfdH) z^dyZ+rco$pI$O-g!ba1+jn2X@25e{|+BXIZI=TnE9l+~jF}MJ74#SD)^aYjpLHC=K z`jQ*k@?S0T{Yc4vM84l#u*I0`g9x{v$!|p45aA9)e840NY>>swl}nCH!_~;9Gvq zu(|IYk=Pl^fL?4H39iZN@pofV7<&9BEOZOD|23%q#j)uRDfZRYDeQXd@Jje6sj%$i zMr_2|kTu&g05>x|DJ3xqs0Hw2Tznz`H!UkSDn2QlpHWzlBNOrSGQxA?0)Uss4?Uap z>~Pk@&3Qqq@`IKZ2G5fOO)U-ata;|z8p`X7a5E%M)5UrZ$9e11XQG*z1q(IViwt>d zE&1SKuR$cM5iu}SE6qjgb@IJ~WoMAy$lK?a*^hsh%XW5i<2gD~PyzaO*el%LdiNO3 zBg$Kd8E7Hd3XM*tP|4`z3MvJrVn)xzE(pV0s6NJgyMOE21p)(jek5lOm+pbL!_V|~ z#oK@SX8D{#{AJ6(AJ=xU$q>epG-gKgFz5H8s}8 zCxS*U9e@iCfW^(m`ZYmgn3k3XVA`=`2Qas7ZEpazz=i4PK%X*P!QAE`8L@CGjMn#J zp(m(chq0lFkd_{7jH}IY0_VfZ-Vv*)LiV5q1e;BAK;P+q%{d#yg0)biKq#T&fnpcx z-688@*2CDaOIXu~wHo#H^`KQsO-ag3PXOR%^3i}805>HgD>XA0l&HA){DPd4qTGV4 z$bz&dg-L!Cx#XZ5flcMfbJ>KW?7&S=0c zg$6F5xy1q(?yl_F4&!NDswuTg`C{x&%?bhT{&Kx+l{uFc_rAL*?<3(y+E%0VpfufyWFuzmpB`Y}fzFryyP zhYV}}UxdSK3S`LIyJo~f*6^L_#=4Qg*8t#Vq^AOlo174xoD`Rk5C^0}a(ZTTLP~nJ zAU!KPF*!~o$|;d$3bP{xsUiGmzpRLhnUD4gg16-cug?owksrKB7Ba8m>CD>D87<+{ zUx!X<51-PXIIlZ#eoyKm0H{W|dAMM=E`PVNa0htgXqu0rt;V9AYT3b|@=J&+d7j62 zl*yk`2tZu2oE%9kmZ#OndK;^HI~LYjMu3a5i#lp#GMkJd%cKBgof%Y6(0PuSVTQAF z+5ajqnubN(tQMDoSzI?KJB}x3F4>O3CX!~l5kGzh7wqR_=?&{IJ)$q)Ybe`mEZt=) z*)fd9M%E(o9cKAXU9qo5eneY&eo%3{zdA(K5INKk*HaPRr-kn`9M)?cr;CDXI~D3zcxec37uIoL)5S(i@AhM1EE}LuFRQRz`|ur7V;TT{KMghp z-qt$ktuubj*pS~|Olb^adKW0&$jFGK#CT|K!T$^Vj{v)gNonaBnczPd74<4TBS|hV zEGf##6U1huzDS9>lOB3DC1_99y;QXu<7>bcXM3&-lSFo60;FGda zWdVG_0pJ+?Tltx(S=lMF;yj5gJ2gErIWZ(F=2rUiQ>l*+riJ+OgEtjETQ3V;C4Dlt zB6Obe=AQWiyBlc!C|CPGNZ9ooVh|Pm&Ya+j9z=$@=N1A8_yBzW?bPu>b7y_nq+L zd2TcU(caA+u7NnGIhc@0*~p%z*9VE&RpUsuJeb+j#yRs z8FlF{UD+N(`EGs5c74$feUYz5;;WGz)Rdgom0!~-{MCxbgNm1Zl~H{aG5uu`o#LnM zqNlal4@y(+mL&V<$K1(@xtE{xI5p~FMnY(Pb+Jy<*W6T>o12aPhxvRsWG^Bj0vKT6 zF$V<&f#-GU(xpk0CRJ2a0Q&--S0}boBxKPrBCR3>LydJPK(PzkVQA^VM-XVJE_$sF zPZySbAF7DK5mR@-0i+S$qJLy6efSH|G}=riJb*2@23s;xjcrgTsIVzz&^d#z1^mb+ zci@c&u@y};*4P_#{(7;kA6v6Zjg8}ht%e#4M3j}4Wn`qKr=!Deu<iAqK%DWH-7ZT;U)2m|1f89>Fd=?pHg+#h}P$vZgQCm-SLCVjqYg=bF2Bh5hh zf_dz}y@T`gF;N-s`T5)74(pmhaKZcNxp~ z8B6!*ih$kStCJnj6(1j#|E4Rysi_Q5E1nKihW3<4beBZ{a9ax>HRSvszTN{&vZFd1 z9*jSm?*o4}V2})a1d}8bkdOp2AZ&OrHrRkj#sncD1HyoW@=B`>+Po|6u6DKBpxxC< zoAcxxJIzebOi#`^hfcTqc1|<*Kli*k$y8mZ}siERdwET>aA0!>K^T@JkVCM z-(B=#!{vPq1&10d&z4?3+TBv0O={7wzq6yYp}`F5cQ_nmGT4HY(|<2tzTDE%LesC0 zee7e8KKiI3TeXusrG|(#IY4;2KiA=7`FjDAUph4FE4@p zGsJDCltX7X7OXVD9^^S$RL;j;7Izqc7?We3GJGs4@-?1#DaI3(*RKYdA1B385|dX7 zE-WlGHae@S%%Dbd8;=?DNXT`P8L-*v3AHpotE(@stS%sn+uhq_Yq(llc*I`#qP^hx zx(n-TPCndl>bI_w_d1E}p1QmH^uP6=|K{k$eYBVSe(saEf9|$Vf9AH&-11MKzUi(n-0`)$?)*n$ zuJ8O`dGGzJyuOYr=~!zn)k2qH^n^8cQ{%-~U)lSWyY9U1y3d$vX0Q7S%spWyWbe4a z+x-&pC5`l}72JGAJ0=(l&j^DpygQh3X) zcU*VVt=AJ%`SKS(al^-N{M@JR{PNAWeC`wPe$SuPm+xPmIgspo*klWRk7aruOLjb( z=~$EQT%YaUmL_xCe=srd3IR9Nch=i;ZlUw+V%zCS=kcN1gDnNmIj`(?=I^h+dZ4lF zL|x&lolO-{-*h^rjScm;xXp7dY&KhCVaiu#vHxtDt}mdVqZBqQ(lUSx!8~fC6o!!3chD>O_KV zwQQ&)K-V`^J6#QpO}5&)GKZ_Gz0=X&R%@?1=PZ4tq3}S%)m?Sx)>WSPea*4^>?eNe zKKaA;)8Fkm^X~%}zBP8~n^XD!wpj8Vf5rE;`u_~Oein28EZKffs_U1@o(B?rkHz{o zugsjh=U=Y9@&Dz0^$R!9od1TKzi{gp{^f?7@A~-1Zv3Y&e))g@S>8vk$(tT5Nd~Jk z;o`u|E57OD39Z1$HfNLFMsA@f|LnEbe&G7ge0KFR*iAq!(bnre^Xbpr@X3#V{F-23 z$XFSV=#81QGvvQ|C%lqstH+=q!|8V;kzj)oPH{N{bXK%Xm zGq-)^=G*VOG4Frny}0+cnYsOmzK0_n52kw_OLaY!=y*Eau`%7bZMlD6rte^~?`WKO zLjUPN-Q8YJ7Yg{1vi>4Z9;A{0Vtc6OF@9e(cy4s;|O)A;3d+MAkOc1NAl zRo~jyXm?cG92Gr1OM zwi$;0fe*g_j?dr8Q8K3U0gJj=AtM}r@k^h7+uQPf^Xu;!#EZXi=WT!YcYpo4+s*KX>u*;!QN8~U9V2G9vOBW?5f&F zsCDJ6=Z`6 z9^d@tH^2V%ug}lVBTS0YGM~c<3#wUMQlOp4$94e#G0idAY2K9%@4kQaD^Zg?w+p<< zj~n~{c_k{yht3ILLW*&U2#ZZ{iplGwF|zCIn20gCiSSz^alg(qCC=m+C8KcMj6zVj z&I5|Z%mhE7|BjB1lF~Chun~62;?jQ|4x8KEL>8BT+uq@Jw>WL~D!1F#+vy_gI;t+z z6uewt@M7J?tyL!e< zZ~S@8eNWu;U-8a|VqI%vy}OP1D^K3{g}=_ryZ*!Py8BySx$Tzgzx1VBiPZk^JGUnS z?xepe?Y*3sJ-kSSSUY3{59bySB^OR+wTi{bO2b(C`90r#-?i^1q~3VP?PfHsTxKNA z=Wf6AA8scW+uV318Eub;tCErYbo6XCdMY}5$jB5K+PUDw%c)?2vE0(y`09s0@V1YB z=-uD?m#>lKz3#dXz3uIJ@4Y5(>+}Dq`Oj$s8^T==hC9jVJ{fL%CfdF=(YZI?aUjus zJkoJI;5oMBIX>V1%4ExtLFfLC+TCrHdmD>(+w=F-=kIZq9kCT1tuK15zojOj&4#_x zGvmWUeZ2#H{asx>tt}lbt)8~Fb}}3ukB2&+?9P=dSIFGv=jRhv=)a(z1SSF;K@%c| z^wpRNQ6~7DXUH080Wgq>`;hmRQF%fI@wy#M$9ym!1k@7MQzF&TEmeWii16Vb^d$*Fxt^0np39hu3UM&z}~#9<>` znhw=x5?$>b1@HX7c{ks2GXeL;+rMz*ZTv#A&zTni_nP;=`=kHwT}Eyq6Kza{iz9*8 zqW(jf@XN`CBbmixsre&h!u7dBfth1QtUls(eC|_!^EZE&pvSYOc$33>{*vrI@rh5|fB*dkGg?S9!tNjvF##9DvLU-3!ZPv7N=oxVAsUlZo#SzV3h>&1 zyw5DQdY_mwy%C`YISzmcSv+f|R{=l-uoSZ)>Z& zqqDWEtE0Q8y|kpDr?Yi(q|f83sw_CsP;$&!da&x;hRW9-t$FRg?I(ZLeC9sSxu11k z_|Lve|1o&!$CH=uoh$gIx9pd}>U+cW_e5;>>dya)H2yBvyJ@!W@krOc<*9Q4b4n0?XkznYsnky*Ns)yvb-hLz>^ zTkrVWPu}p6Pu+OqEqDCGZFhd<`WwFRx!eEgw%fk+wXc2s?Rk06KJ$RFJRA$uti(%~ zW9M_>qsyVg8Sk;|(y`3aq14j;#L~X_{Nd=_$;k9oBi#OvpZV*%uKTM=_XQ)-=pA@z zX<+kW-;?2ir$gOqg6&WFJ?nz4+cnRgP}|{P+bjOoSLfX)W}9CfcOC1k-``gCysLCe z)#VL!1<#dT*l906;;KARapg#xqbTB=G*V&j+*D6T`{>}%*vR<6z>vG8y{o%_aA<^p zOXk+)a*=Q!c;JCAed$X?7+_Njo{a#47$=jw(?J11nV}f-LxcG%?gU`K3_%-U=5TY8 z{kX^naPd_{HY}oiP2zg#e)A}OKTog}K%o$db7*qH4S1&l%~ zpeQi%xE~6Hm%s;kj)_MTAC5#~R7_7#52k4C?QJ$&z1y7jHqu2O+S*z=Iy~LoojpBW zeZAebhPp;a-B4d!Z=0>E@YT`_`)oz#!bIKKH4SI}Xg~cxaG z*Hf1tSSbFDzv92Nn)|}__eSmaN1P9Y?7xq`TtS zkeGWhK7BMfdD2)YjSgN|o+vbyilco8<{O_1c0Q3DSr_eJulH;Wbv>(fYzubm(K-%l zp5uPciD1`-nWk5VZAbd+4|de-cUL@bFWFv`zqO`tpS|LERq>IEf}`E;is1ZEEI6-u z=LdSaC&tEy2S++Ox<*FH_L`f?n%%7f0|V6OG$AAGzUy7@dimv-4W0$9@I(ma7G{W$ z2XxX`Nm*#X_zWp8%L0TI0026Gi+Bc&O*JM$;K3N8K^RgJgP`-o4o|1A@-Uaug{^|i zf@k2r;3yH{9Jmv=#h98PMcA7gv#d==*-@uT##gE+^#Px88*`>Ov3zPB)sjXlyS>5X za?sV<)?{9-ZbEH4zc2zXnHn4%^t81!H@Q45uJ#ri*b75nY`@8Po(wlV8tYg;>wGxU zyUAEQ;OpBEp4=9m-kO-%m7O&Y|H_TMU`&$HJ!Z_lYD~Ri_%Gy^PGqyE!|QPI}A z|Gn?eyY2Jl*(3DttN-+kn{K$}D_{K5$3J}SE!V%_NDeGVTnS%(eBq=KJeit5w7hgM zr1N-R?V*m!{hq4*?()42g*$3x2IT4h09ZdsL_t)p zY^l!QSzU6duHx02(vxmSad2^TC8LLY3+A4jJ|YRDWNUkR&E4nj)|T#mbC&~gGwN6p z-#gy%jF^K;Tx`*CAD znkcIbeKnXNg_vhk(!=rP91RU7ouJ9jJk3OE$@GXelPXDp%>_Y>W zem|c7+v(!_=gWWLuevW-d!N7d{)GGCh3fxW8Q7TWTNiA5Bs;b#HnKiCwjnmPDLcDs zdDc9yE<3t+W$Yzm@`y2gB0F}BfSa5>k@234EuF~4E*iPIJMVn|-+%nw|MD+)-F(w^ zx7>LB*S_+lfBx#7f0>uJd&_T(<=*h@6(d=mrYYUhag%AxAIvT7&n>->TR4!JJ(!s~ zl$kh~8G9)^y3d$;A>F?*(*Ah1?`dOjW6b?Xpy3a(wsnEl%>d3oF~8o{9p2Vm-nKnU zZTn~42PT~_jWoQ}UcRTjVxPP81!vLo_4&_LU)fQczpK9FKvl`HqWohWZMAxEIuY>( zee<)E6I~sh;5v#+arpoeC|B#|Hd;0L$ecALfvS7hPRycw1Z zBq0Q7S>d=_*j->tSzpiz7*vgCFKKzRxz27VnAn)Sa0I}^Fb?JbZAtNB7OXfPg!@5S z{^vbsIXNF!V}7jw2a~LE!kCWVFSB1Z#8y3MIX}VRkc*%km=~3Eb64bC1pwMQ(8MJ$ zo=S^FQ^tx3T-0xTe6+rynkHmqZV9-A;BGVZc6asn^$yY0f`+!<-tGZ@-(kDQ-Rx>; zc2>7JD`~D~o_|yDV%_B(wddB?oqfV~=26F)hZ|2n)^hfd_KOepUU^`s;J&fqU(A%> zyHI)GQuY10uBU^}2LrALgYG}Zd!CB-t%>%ni43kwjBd_MZqH5aUYXppGO>SU;y`ZV z;L7x|%;ZtSe>O35jDVZ=pNe~5HH^kx+kf`6bDSFJ;E}XGWjTjO>W@ zJRR+NJk|GPx@S$O`H$vM(DF>Mas6WBwz;OAb4}09HSd{id|}-FLVw+!&dS}Mirwwi zFS?3%S6zMu7pRwdyL)x`7H6GqN1daV1iN+X*1!0RzZf4MhbcAqg?k#G`Vr)Pybulj1u9^<=uYG-OZO)i zCKNyu7C$ba0^X=gpf>nqP@)tg;@?Fwk6==?16qY!6MTMXnrDS!*@od~KW@?zfrd=e zQVOrl$`K7d4#|y5s3h70;0Bl?LpQR#pDxJs#q6M9B$;?!vEt?`bZB&Ju(GPO+3h5w z+r^f)hb%+)K!4xJ(BRn6&=3K4czAGndU9lVu&veINzjkdVT(c4_SqWcE&cAGUPZ)&qnGVYybh4wfdw6`Tt*f=E%@v9TFI+fBB;oMk!$1YFGBGhhq9IfT z_~7Im+m#froGBp2*(;yp1p$nobU%QU>qJjIoj72{IsKqk~gZ6QiTU zlqM&}h&B**TN-QKwh~v>d0WxZx+{BYE^ezk|7`8~b@dn5He7zve)$pC<=-}6{-x*Y z&w2`eHdyqF*}C8LU-|iX>90dAPc7K~IB$P&*8aOl=QBa~+K6XMyn9=`Z(DL`C$WXx z%-+oOp5*l2?83q1^r76+tBILcvPNqI9G-;H!>=TqFGjOEWeaGm>FfT&s@z zuO@t_a)A@^+5M(>!hg~P?(~`L=&8)eE2)wFsp0MM;iqDQk3{}-R6%~f14M}gv_Se`qDsn9@s{FSAS%wxHOds$ikT?Sg78&J zqGj~elOo&}S?%{F_?nZmFf)X(#T}NhoR1r{EGy@D*DkeZadFYdyBIPOsHUuMP~2Pi zNstpz9_R2%3@E523~-18)o?#SmKx~w`sop@ud(H2Dk@8}wC3j5f!o__@`Rzm@v+gV zp`n3+!5*@>V`C#^7^WyqOb!nXxa_q}j;a=WX^TC-x#p~+^yRwz7pg99qbW<>l@0Y* zpKiGPu;cP?n=b#V?dq?(3V+>||Ern$$44t3oTz?ivgW}>*JE?eM;96&_cyL%;O>ZY zZ`FG?$A-2g$9EkJhc9u&pDwzrpUa~E%MTz$6o@2B}not&B@bK5^W z)Z}g)810{5n*QW;UfvQ$Nw!NgCjwfSBc6g{TCyXzUIHkaFzbrAJU@Kqp=gB*%TgvaJ&= zH9R`&c#N)v#wWe*r~RIF{*Dd7E`rzQ$l&(a@Xq+i^U1LnQe!VB$LTtdo;aMIemOJy zN^0)a%q(56$wi-E$<7|j&K)7hW~L6L#}6b&_a{d7$A|aD2lq$%c87Yl2Rb+UI-go< ze|)ax(V3=4XPcgya;+u2jy0?wsoj8UxOQ`A*=A4qw${>ZO+{Osh1(p3J83Fbb!k`C zr9HON<1UlgpL0}R8EALuOVdUswzN3g)Z}tAu6iK&EDCz8iF!VBa9zYOw(DJ}~QRJu~Qpll}s7V(%M z8(jbwIuzyLG;Gw=Eh}m<_9ugnhxjCQcU|?Zs z(L5Gtf~eXAU1Q^ubg|hr2EXy(H%9OS_0a z)Lz_Fe{r4d($lU>YZ@;<+H&P#Pr-v-#ee84e`uuok+IrGCL11|c04-Q_{5_7sm0cH zUeAU==cZ84)?n9WLYv;Vldf?8PJLikbm;l`$Q}aapS)<|MSlt9iIIJ=p}moT-FpA? z;lAg>y*sq-E#8hzi=OrKt zQ*YgFXVI3rOB)?U+nuF*YV)73zP!7>@L*H*8CT_nnxeDyWmhJLdW>`;9`tv%v{Y4? zJI3nk>*+6b9b#xm;agi<+uGXbLuF+p3GsX1``)KN{b`yoKx%Q`1P18@EkiCWsE<>K zg9l)7VCk$D%HUZ_Mh^Z^mKf-SZU8MBTh`^(6EeTVuH+=-5J2~GoCAH%gK-A2h%yU_ zv#%f`e%Yw_cVj|Qbx!JL^>f@DmbGU591I4(!hhqkgdGt-UySJyzEXrK#uNwNCOAQH zOG-+p>t|u|Zh9TE!wruQ);%^<_het~lYNzII?JAFFInp;TI(s? z&{DLCXu7+6uc!J&GPIQ!%z2or{21BVrkeBBMW@=Fm9gNgk%~-?3^Y3$8tpch!&z8Z zSXx?IRaNEjcyR2y%jN3p>$BNx)R_c}pa1;lpZLTlh=%!jlPn|~lkizc3IKq_0RRXn z!7*4!kTUQ9ktujU&{5{cC_Ey84aihdM!td*K7{3bCnPGtoSbDjrFeHPthASp0aeyl zm%~VWyvrB#Kn)zgQ<7KzR#qSHA7EOO=GC>VyolY$;gMmUBtpNF;>U#^C*@TU363*@ zeh1_{Kq|bVqJjiKe1Nb^MwWm}^Wu?-@$reNNs}hb5v+;o&dyDGm*#@O`G9w7da}2> z)7j)KbvNWU*IsaxzeaPHy8QjMSNAqtdA{N5Hv5%Lw#(}rm)AJ2KJLzcqP6ge&f+J# zN*^Oy*c_gP9_y`M(_Qs+NBLS$ z$usVv_05GFnhQ2I7jCr|?5fY-P28aJ;&YCYL#?%^T$QKFFCVThdTnW{*U0Mr#ff&e z%TZrbUtLvPR6uyG;kf4J=4LXk;0*Mc&`j{9e*WPPfA}|l^EbqR4VjQ&Yy=I+GC#!d ztH#WXETab4IpAlXQkp}&A!q<8D8n`G2R#6gg6!T><;P{0FL+2wjw?mJUkoG=-<;#+P_&>NTxVFe!=qf4zrukvKK5b3#3J92t#f`J1)}1|%?cmKXri%eT9t$P zfjNO5EU$iFT8J5y8aQxB9(_AKJ2N#iO?H+z0$uchZSBJ1;{5!=G+A7qcTUq50s*qY zL*t_zt&Xx5TR}_x6*5uIidSu=M{PwfH59&J%YUvRe~bOfM*G!gTvwlI%wOAFxVE+E zDS~fz+2j2cYX)kb8meA9RJWE$=eT3zxNY5pbHh~QhUun_GmRSw%5!cL$^=UD@@#v< z-=+5Li>7hiN_d@Ves;Qf{iKU8#|A2Dq=8C)YOwZc6R(v|c9cKqDPP-G_Kdq^T~px( zSHZKcg3XSCt&YOy$i$YMeXjD-zNYF^_Oe%t&mX8SJ2O7ev@q4D2WJ+hM`>1CoPXKe zFI`(ry>#Wu6~u+&jT;RdDSGzoS(+!1MDDrgo@=hThV(znPFBbrC`q#K3Bd62u?BxK z-_H}KkmX#3WqzL-ELzY)GYEwcJ!Bn|^TI$s{A{-TOao9(mfwU91%O2Zz<^zoDrA@! z!!3uRp(v;d%wdozY)G~l!Lo)p*Z_q_WoLw{N`RfUP%N|u0EPJs39nt@g$d*b<#kqI zLdv4!eqH9O^ex?4R8&Mn%{=vTZk9N~?ED-+Ou%JIP1DZ>pLd>s8}Jiw=Lox6U}|!- zYiyvkx2?X#QS7KbUsv{8L&+=k#YgH3_SF^aZn(Om{>s++%g+*mX}0dlU*B5v42{&C zW$U^t%&WI*U4PAn!TJp&^&3a*8^`U>PB_hL(zS8gWg>Fcy=A&(%bWkswQQxoGtHYP zn&|!wBaU^Wwr55f){WG!AF5qHQ2k7A_1d1wXSyoaF<#d;6|Hj>uD2I#Y{=hC8dYDg zy`kWFQm~TqFVvU3+E{(TQE|4R{A|0cY<9FO;-6lc8@1Jy7hb(!x79W`xk^f?dy2@W zlEo$9Ubt`p$0HCoAT*DUkCPC|*1qq3?<2y1UiI^^8R8QP13Xm1qNVu#4w!f#ALax3 zbTeit05mLXh!Zp+E(;SdXG)+7xG6sK0G7_r#vA2l#d2#BTn6CrlqzQe7YrjROf+iY zC^1=IHYq1ljRY@1B$&B|#G4you4D2MAu&3$;fO3igT;fvKn-wbnp2!7WH7^EFt|T1 zfu871+?kfQ#nOlT{CpbY$Y2mysrzWsMkE2iC4x(oB&d0{kT(!q^!exg0h2Z)qJdCg zc5Z5Lu-Dz*T+`T4;H%*i*T&t9*S&+4{E94K1Y`n~FC&3OCpbHrWcc*5z-jD|oKHa8E<=K6}X_ z8XxSH=bLJa>&hfeiovSW+;9tfTB@N=r;S?gu85oJ@-gYlq2WRJQwM_*ne_ufq9xwG2v` z=E)$GNwb`vu)^ov(#?b$AD=d!W;d3ynqH0riiqDA23}|8pu7h;UXOu#zyNEOfHe#V zI(v)h2ISCFXy7BeJ25dqPba)8;Cj7_1YCb$kuINqfq}ai2rh-femxw}!~RfUetu?j zsISF@Z(Sh)!d7{f2H%E~V?=)&iVhKla1`&iUE1cnvZXP9TT=mDTbheDw-#^qlx=A* z-`ZKZxvOeRcg^PB>P@{h8~f`v5tIjP+yCS>Xx~A9`|7v$*3nNkbyjWcsNB$AVX8q# z>893_O*HYM!W#>>*z>oN)wdPyCcM@c?XN3-sjl>}t^An1`ZXFNDhtlps!B%tI&^a_ zY|LI?MZ}=0vb3kWv#X1=xTDq6=5RU9^AM`4D{9OaZxt68Q!f>BqJEp4oV@<}>#w`+ zI@nq`e5gxlasbg|Y=p=F07wT`6ZX>2GypdntK)Gs3kgiiwj9um2-AR^C43Q5ru-F7 zX^9&1vu`RY$9_V8!ZHV=4`w{BCVpIH)dAcfdmkw2Ov#to9R_=edIMF|RO-)M}O1`(SDw4a_F(tKLb8}QD|&kRqEb$gnsUG)Uti$ob~3QyD(pJ*t3t-koE zv-ps!XrHt21y}Ljrs6%#rMun5yPAr&x0LQ`E!*xX-_c&Ny{l?RclGw3njJlL+k5JF zb=U3etl6$E`Y&bTqR(BmJ1DcgYAaoy%580B+uO^Z^Hl6^E89(lyNY)^$ha2oZzy`H zy5K-{;oMPFFRi3feT%8^p2rMjkXJ=cR8ZVzeckb+IdxLFsbd)%2Z*Q*| zb=1+-*yMIJHP<_wrIjX6z@A6!!y)W`CU@*5Ko*ZLTG&o=!3qS!* zD?H`MSPnM;+7c4D0(t=8hM0`z#FZNreyGd#TNI^$3ws3MMsI%AOa68Ivm6sbTFW9Os+RM(m%3gDo9&?o*Z7M(Rt~lndc-dWc zu&LxlcR5}ATFUpfl<#gUf4;4J7hNqCyEuy8-HZRWR6ggf z*wtLVv#D%HW9jzB(w(lNU5zC#G?(pnmA>dKe#u^ZknBAvjJx(+Q_V%9F=jPtF1NX> zW+uDh(Z#W$ewWRD<^1Iie5n0$bC#4Q_%peU+L?%9dSoTs=`AaPo2U;s% zYO6ZfQgyJS{-~$^<<{E6>Z1R)HymxLIYgJc`e1X_OHGvr8Y^C;%T<1$sp3d;+@98q5X-9|0 zhKEOS5nd6aNEX-aY4>z>JDZzID$2XNyQ4gN`ObH~^Y*vD{rK_YI?ELO59@^+LK2|z zhTe|IM8%qqUnzM(&|ynh3s9j-fULtjgvQ_G$3+hQhS_2wKPu6;nDd}y{P*?fuoZcK zFZ3+1`t9k^BIU2khi5eq4O@R{1)|AcKKm0K#+8tr&om z@=?+PL;+$38Q&GdySU_Z*qlx~VVAfpT}!^j+4(tNz#oez^+;@vxI-x7({yhzOcz;S zy7;*?H(u~A&FMj3JQCCcOWwJusnPzyE_a8!w$)KaB-l}N*->@LQFVcE?5Z-^u)T~B ze4MVvvSW?qFPm2d0rW&u%`1)7$6Zy&=%Nqw-{#sA^uc=JTUXU9Z4KvJ>o1tTxyp0I zvt8BsZd+Nqt7c-bb8%+OJ2x@Z-{G{?RFxN1RutFPR16Iaj*W~@j7<*>40m>R(=|9a zOh$KfY=R(5*YL<#cmF_x)8+QGdHp`JaA(h+{lEu4aN~_PmX?;1pn+OHhZY3cIjY9u z0FRlAyxknq&+@96BD=b5&CSX&n;14jJWENkFF(hDE5L@5+6sFoA{GaKM0Wpz9|pvf zBHv)&5#=i`0f50UQ!;^zfgmf}#5GQF%lWvvJgQRogwkK0UiRvLIcnq zkYF_IPv&cKqACV5KPSLCAq$D4)zXL@REa$;n3c%;9#ucxbbuzz5J)4+fkKtqX0!|>=xle^i| z(N5|bj*zNG@4ffl4}S22-}uHi$n<9Tkbo@vM`4U&^7C?BSL1Bv)mZ)o>!n8EwY{o*cotNfsa*T&^|RP-8vi~OK0 za|f5SWF)ncrUsB$(#b^342Bx+bGjPbEv~`gp@0^QB+>*~Z$J-(VqQ%ryFtJugACv< zdd*{A{p?7epPQMTnVOxPn46khn3<*zWQLc#vx`eJiwo1Uv!jz^{pRMjPLoS`Tvct( zN{^$w&0f}OFZS4qTkVByuHx3l;uc4t+gXUe$Z^{XnjHm{)8Z=fG?sXpOFNp&+M6r- zJDsD0o`soV-~8n4#7JLPdt-yWrlPXoQof_k-rqYwNF^53-PJ)?Z%Nc9U2;Nee%Q1%!o;$#Rkc?uta5g(W)0 z$8$IZJlJetPg%^@ftwLOZbZ)E2h5|gu`J32D9juvz<%STyl)K@1ZFZKd^9Q~9i^e1 zjO>HM%|Y?wzBxb416i7#3`zDdgxFiG%R7Nl;fTCFE2_l+TqCy}i$oU}O!FFxho@)8 zJ?(D0)6vt{ON=%gO9sPnUoc{_TP;MurHg<&@AWM#EiRZ-!9{b)ZEk*Xeqnxgj;@87 zSu;X%cyM@hXl!D1W_E&1xQXM%nWgzD8pjE33zLI$qdhajU6TXt6Mb!CeJz9CjeT9N zz79uEhXa2Hx?KI;jbj6?ql0ZzBOOy?UGtN@3o`@0xgqcT$Utvvd#lr4UsYaQP*zk} zTV2!c?&$9wnw?%49iHgx88qLd+uPUQ*V9eBptF5)V$9sd(9=bKM@NQ6h6e`*OaRk0 zIM`33BU8}a-1yz^e*69J|Jz$`x!Gp3!NfwEKq|FVnUy$GMuNo9t`_n(q?Lxki^TmS(1Z@xb*DKEsq184^Dgx{d9 zKvGiHU{gHhR~3bl!CJ>;dpg>jm2k&|9FXG|{+eYP^j7)k4j-@n>Fhv(J$S48Q;BpU zmejmKvXxpONVaBqIZLoyS; zp7y?;USh7pL}G`=35PTT>*Y7(^>mqs&Ghtijf@QSQ5`sUnAk2sma9bh#6nZ4#L&>d z`t{Fz{No=Z)IRgf)0AUyARa&iGD>}$ku3&cIgk@%03w6+4XIs#@-l?w)w7Eb^F~+AK$1z|aQXv@oFza9EDk!N39C(Am(&vnw^T3(yuCJ?S>ATwoQ$ z3`n0c19r@vm_z2EOdQd4@3*!#H8tUN9u9kht)Z@=zLqZf;NTp(oQ`^$Bie1|TNG$I zRa;Xe55D*4)p`Uv;4}!^6XLKX?MQk@|t^xqtuuTW-1Ko$q|--FM&J(9i&pqgNA__mELX zt+1p^UKj@s;OyaLW&{9CB`1;hi=fX2pPNu zz)U3aFi#qErg{jf2V@DmG{qsZXnIFE(GLkFfE1O`*49QPxLhuTw^mhERa8`zOQO$s zWerY6Mr2lfeLaoW^h1xwLnTl-RGJx+IXX&(Loo(8^>LyPltYN5&%M39fGoD-(+}yt z^sTu|X?U2bO|760Cr_UI`q#hy-uJ%u)?07Ac<~}&M7@E2Tj6COFj2r1U1SKLmpFwi zQPBzZBp?Olpk_njVj*al3FN0&uaHG~f|X?>72)u)0MAvz;>U%hLuP>eyD*C?-}@%N zZ_K(eQPc9mmZVE?WQsi(5WJOJfDA>LcZS82hlHDh%y@L>qe-U15!rmE%8!X_7CFFH zoPBsn4xzMGCNBP3OhaK z^PczIcH3=-4juAw+-X3zG%6W|nc&4_;~@G6-3vejc|8`rhhB}Y_L?WH;d@Y4zr~Mh%@1&j%8P-3;~+C6{3Od$V1QNQ1YF|L zxF7l&6uyqC0>_k3a3lnf$;7MY2oMO+0a;o!_f1R^AYgInFF^|CmQYJDB6I6>Ith^g zZgsVJ>O3X-P-A%qJU)|>(1Yk#1YDTgE?$_W0%2k)5kS=kdR7l7`Y(P(H`8CY+fDx^ zd?Sj88bWt&-@g5(n{ImF``-7BZ+v6@`t>+XF)B{Uv`p3gJOe{-!_;Ab^08|cU7h5V zVqOb1);Sal07&!pZ*+A?4noc`nT%N8TNYb=9s;lg!;xawZ&Lie08C_cJTA&XzEx^~ z1j>n9sH5q}Rigl!3M(DuFhw*~m&3oH3Q6&^#@Suv=TRdpyNV5VS1AQR7Z}WhB0OrK za_WBMV@T3@Sda5+9pps% zLuQroJ2~MVx|y&}*rm$&dFvwm>e8i44?g(dCqMZ~va7->L0NTF9i@-n+002XPq7D(=C+>`a7?zD;7iqjB2j6ZH*fy#cfWh>wby?5!yo?s_rFhdUgnuN zbpl};ny;ju<0%1bXM|TxvpgHg@?6%(F7trAJ`n&y?}d4$4&de_R1jthiGGepKso?S zzyde`5s=U<%Sl<8@SwElYCkSSW-SL&_Hu$W6>zC2^CTPSXxwsO0_vR-ADhk-Nz@y| z3i4qHfx`6a@GcY*wD@Z?mRAx7*{OkYFjS$DUY?Lenb{;)zYPmgL4HOSqVX+kLz*c# zY%0FenWe0-lO(!&jYA2H^2zcMWG`R7eD&&8GM0ohLJvqSp{<|iL!g_OmI1YdBsD*) zT%8EbxPk7(J{e-hRGKok04{w{ly{J6G+`Ic4KkwC74(;^_5S_)zy0lRfApgt{m4f? zLPU1Wnl+?jKw+F2s?uR#B_Ug>0W63qZV8FT{Q-FmdBSpvazu9CM&w1iY0H}%A%&2* zcquVY2LvL=>P^Xp1J@7C<;Hpqk%D%uc`!TCYZhg8)5P9X4n{+UInx{WO<)N zO5AvmG@hDbaHCEzkQji_Y_u851jGQW>V6-u%Alw$FE7)7$)w@_D0|itOv8ibtBA}5 z{mU}1jq-dV!2A{66z8=^SQI}yMs%4jtjGopC~KHWeToMJhzG5M9>cB}d`^66Y3V6W z1Y*Jm0Sok$kc~MRnbPXl-w0%~0`LSRMHS#l0C44S-$nv1sKOgKE`gN{s)7;q5Zo2N-_*30Hf}Qk|bq2 zJE|IG-%(nkz@at~Y?f4*(`298GP}LPoKQ6E(=xl$LJ|!FZO#Z;R>}%grRDT=vIer5DMi<1G*8=FOJ^&nU*4Sjmc|ciVS2^T|ibZ*L0<1$DW9*U)^8xTF z9{vE4DBIvD4_IlozK|9T&4ec!?g_pJ4jdp7dF9F#GPHy+vdv^N;mTD!p{%T|prC-L zC)w=6!oqw`ltVb9Z{frsiwl^NeI+}(#DUvUPE<)E(*#yhl}(#A{l|a&$IUn2O!oCd zANtT&zxvfjAAOXHqUS2eF0;=FCd$VX5}p08fT_-IFUU^gBkQaH4T<%FxiKW}79AMi zz2L}4r$yLg`s7_s=xrE|Ff$71JY)(pp|NSiLlx#Uw$?zi!6Y*!;f~O;*y@9w6_5ZJ zC1`~)x<4<$0Wm&iND-kCu(+DU5l4CMi7wMvJ8^$(^?@Kj8x%!V5wby1x=aO@`6R{= zFN?#E3v+0QN6`DGxZ7o(!v)xE_$+?h9FsX~{t739PYv?(7z*j){uOp=2H0}bBO(%e zk4Hz@gA=jrIU&drBKPjy`|PvN(nS97;lqS5LM?`Ppb$@AlD8iC*_H=apA(G1D#|3A zEG`-5)-$V-+%L)-+c1PCrMk#3!q@Ba{^BDTD?>8&QSx=g&X? z{PSzquKmLw{_x-b{olX)-S3`w;t8^plu73K$dMz2Y(nJe)2Hc9`b#An{K-G)>}XS`Op8`zx~@i_uNA&L3WzxgqL62ZSaVsYz!7h z;!KUw654@QqX}tVZbVX|iL--J^@h%X(1iG*R}&J80u518P#vOr1LZ&v=xsbY!{*;A z=zzGuk}^v{uSVEktE3i@bCgj&o(pM0WAStVPf1zhM87pBXJ`N<4X}DS?l#Lq0G@$r zseJq@Y>666amq4%3CWUMh-Y9a9%#_!kYxotVL9DV)k(9Q`=`1CrA38-q%597^ayID z@=+_8s5Be+7@HQI4HfcH+n5|=iJ}0PI8STPE?AMo>X&u-Ih1U4bhNFljR*q)bl0w3 zk3ar6L7C7=K>WcEe(bm$Oq52C+B4~Tw5 zn6$v;!$d);poh>pz)R!ES9DQC9409?UFhn7tYtzL2_8!!qd1$MIBRc`r^4u1bSV&- zwCv7(LpiD|@LVMYR2BMwq5v|$T2(b^S-gNW(Lj^~jKRvH!byvRACC^oY#xB2?lOU! z<5j_oY>*7_V3)Li z`=b&b3CyKsWjxM|4Fgt)rwAw~F5!;o9i@92W;h@QK4xqvKPwwWAb=>-4?H3!@%+%S ztb`y(EN5iLgqa!KOOO_7r7_imAy7@W-Vec3hb;0o7<3&Tt#d*XRBx>CO9_ZSps0w< zDKktP0<5Jzrt$z5VCUsXSs$}ibVZhjO?2skoQHs-=mYwb@-@qW%sGBfLR8LGNQr+p zyE;x+H6ba-hN4&F;@*M+D8a>Kxj4n{GgXdK<17cYEpaeHaP@o640S#(>Vf`(qCn>i z3vf}c>Pj#tA1CCissjzUU*o9&s*;qm`=E{h(2C{2=OAMp05xPG1MT#SE-mxiS!3D< zSfCu_2j$!~DljGImu1+DVHV=IY+6Q>(KG-QO@j`jX(2gE!jP#$fOQzMK~<5DenZ!z z>kMf!(5Z9`RaKBeIXNb&&@oNyJ(_?=Xsmm{Tui+8s;W?aGy%pa&Kn`oGzE0%B%q1e z1s;u}AOg%TQsT#@wm^=+5UK<~`(;f^Nz-5;q8$8Hy$yh(X~8!E8cH4#9&9l1P>3dT zJ9Nbgr@R%mwHYQoz>~(9NXj%nA#nnDBu1{(Y8n)l$bqytQ<15$SzTskhI}+N$O@DY zs*seWS_KrS^&1`mLxQ3pEdUhbdx|Xt0E7yta#9l0goZ%65TVWlOS4dLJR-(aJIX^_ zNcNxPI7UflbBn%K(gF}65|opXP-Be;S*Vk>X=rkgXU0+4hn=#FzX4v0K|=Xx1)2tc zs`{X5F$E4msT^@b(@KpF!S(HoFXNX{?-e9a&mt7$>AlRTQ>86kG#DJ4U* zQQf#43zd~ck)XvLh6kf6UUrn|jFKGtT+rkANknLni9XBDB_Iztxv6SusNG87(iiCa!VMsGlxcyvhOV0Gq! z08CgyEJBPNm{`@-Nc0GEm#-!>!I;p4We$E-O+r3^8{^qbnBl8XXfQoc{hr{_AIiZ0m z26|4SPr~BUK-1K7gKQ>z{00#;Eh}Rb@}rhu*2J6qy8ud5qO${RfYGIfY=T0SB9^rn zYkqk3zA`{yTH&=;bfr(G z6j_-7=`tXOSc=L#XyRA)iqFVk0pQVQd>5-bh7yBa%Mh&sE)pJ%uOjTnH6;4P+GO;v zA>*LdL4AOp6;5#ppYqG}7iyX0*#*ARgxBU|TD-&&b~-N` zS?@;^g2Hzda8ZZ?jALY;N-@1pAgS)DBwfD2SbB!W}tp*hJztuC`GR4F0* z*b){`VMHi|`U!3hTNWqNmbYT5uE@wsywEPxipPxCos?lYl}%@62DP-BD@Y|N{vec~ zGx5OvkghIn1kK{T2XKKNKL^ca#5;+~hsFPzU{V;jkkpWjlNsjC_(@cvTI0;S&^q)g z%1QGe32A!yG&?2z7;_;=EhGSnF=0!{X>n*T9+c+Tm6+^TLkH@-ppfCDfPtz47?1)A z$6wSl#g0zZ+jPGNka7x9t|*|KIn>&Ol^^`z!%{ZmCaFc*-3@cbg^m)iCa=) ziZi87NW`};@ti5<*(u8@$Utz~;sOt|`zRzcDo6q4D@3Bn=m&hIqz36kMGo*$UnOMDmtZ=9n>7hjTwynvkC##d%*-&F04N%JbI>03T$Jw< zPn;TM(o7a{e?azl8sebAXk(=x8H+p2iV{2>f=7N*T;fTwn&^6X5}LnUeEoeN5`C`5{i|ZB z%xhIwsNRRJDjkCqF?|g2tOZ4-*%=v-sAW}E*ccx}CuH&G09C3hVzOHhy{(IdvjQ3x z&ifYr-GIc?WyM<`m$%Si9S(p7aDg7wN>vrTf!c;G+Xe6l%`&E|d}uEOVQsRX6Iuu0 zTAz#3AbmVnV--cKBQkdc226_!Af{w!M%B?@Iazl_Z+dyj7Y{=|`fG_df#jGT<=FFp z#zW!oq>Q|T2!fCDAedry5#w<@%$5x1D#e2`6b40UY?jimzl7)YAy{K6riGcI%OEX3 z&o+Pt*nkixA5X}V;-$v@XmvscJ5_#!DN2Z!momb4m7?l$$N-vvenYF1mhG&XY=d*~Q__4>IA0UnFvO#d_NV>3Y^V;Q;wEkv8WJdZ{jvU0qXLSB^FArKR0 zHiPnGoX~yvFYb>qr-V2ooPfMI^WdoEa5V@+^;CxG3d-^Gd>M~G_W>>;w$`d?38t_C zwjVmD2n#jF^Nf&qXP`D{a+JN2etA`*#`uG3h2^LR;5f!J7(6k+;6|NuJQm}#>e8q< zF3>+HBrNesY3A`Tz$jd2vV<&)O)S43H*(PZEiy{GeV z9FwWblDu*U<)a@Wvd;=#l$1!FkW30uZS)WRqKkCaA|X0EGM1b5TCJOy}9I z>Iz^89UW%$;L&IZGSRv;Ga?MrA&XZbD-oeNc0Q_<6K85#$RYrNUd_odM<^dn!2K&c zD}dBOY?YC3h}S$Q>aFr29iO~TM&-wN%na~YkFLY8p5@^i^`UQ7Z=-2pHu*tWgh%TD zn2-!O2Df*GotRJnbw9=sUHrHq)&W(%>WVPWWleV&mAhy;{t3N*)qm>fBQ za!}8#xTpe55n4kr}fbJb}+4PDx9gu6nd4Yrp8Gs6^OkY{g^Z?v98DUVW9ZM4X@r5oS@iKWcH- zqGEBOU$_lg6tVb&QO|%(!cr245EH!*NjM1f3SviaAQTxOY>LBGB1$3;H6BFM(TZ#kI?Rxrpu zwICZj^=RaK*&T-bW%1*NI6+`&+KL=58)O5ot&Ryq(*THs_=YmFH4rIk@z+M!q@k)| z8IBcp0pAFlx)nM52sa0K%v4JZNmBd3-ZT5~LX9qXuG@iBv>F zDWGG>&$1sEXTadOP#CLO@-xNH$jgENP!tsw-U&dXl8~;FdYb*XxEa9Ba)Pvw8DiZ- z6ChpnRn+oUIhY^(g)X6-m<$(w30KOp(M_@IM*S+yDaGTAZgG=kBwQ;cL!1I41d85P z07WKx528T>Qxa;NW*-(F5tMK!=&C}6U;MZ^CO>{o8ta&n&N9c;BNOmbz@rc5k}t|d zmw7q)*<1m&N#^OWC0;({C(DB-EHP*wo|l!)9ub)^qJFv6eq2pFi0CgU2A0Qs>~cqb zf(Ms?OdMfx@d#82Mfuq22pt1J;RFRr(mY-RRe)5;a`J0ZEH{-#@P!nYh41<}&Cbq- zEzXK02YgcbbiaS~d71&*O9AG!=!&EqDvxnYJvzlY zkF^p=2U3G><3JD$8jvec3$ubQLVl9j3#1m1IjB+qRK_Q7$U&9j%xiU?b!l=o7rqUM zKRCcEVF^xIwt&z*zj)IDjF7z15sqOL0(0PHr*Dv{JOsVW7I%?1ctUn50lO7M>Q-;S z*K~(PEc7KJu29rIAp89zOtzxT0Z<`j6;z#capvpdv5Sd!Op|43;0fi2Wbqv}PBOx9 zCwef(^eD!BQIqiSkepE*VJ3tM2ia*KkahMIe$zpOtuMrnCZw6Pp*{h&H>he#j-^oG zLo3qaOjS)rZIeQR0ZL>>%T(H)4a-v8bVLvoHDW$7iIRW$&q+*IcX)#rdN|AMN)G9nra%<9s&xB zx8BF52hvnc3$t~{-#E`M!YmP8_Pyc1X{Pc~30y(NqD-Cf2y}RmM?&)jeRv*j%E)n1 z_;J9p42{tT)za96=)D<@Kgl$VseQT z7cYI1$LJtK3iqR`P!>1(?Z<#QUOFQJx3_KuXF1i9)v!OQ^ESM>&vvN?g`ZB-95@06Ldtp#iOfPNVk|?BemunbH{vd;ahUe1)D> zbyihH$ze_j=7lkCT}*bI$2b@ORn<8~B$O#Bhw$k#y->f!2Q(ohEKuiRD=8txC<=AJ zBh*jSqm>?_1k^SrI}P!aC=+O1b_C&m^h1zMPTX>coq9B$p0J#6f+yKXu#QpL_k|{) zD8FSG&x#8f9d6CHRy875bbLbpMCHbahUi=C=zs&RiIbj}8 zaQ}*&dJ&ez>ZoPseN-Z|U_Q{RO2kccn@B|K=E0gb1;ev-|yVbzr0CAp%qsyS{KqvB-B~A}bh1r7$VTpmN0P|hQBh5?;s6y>?;`fDgAu3Ix zQnKQ`hq(>OEGNZD7Z)C?geGKU(D3uoNf9{%(2y8*pKPeK=A$c?IMg`9yd3!fPC-^b zpd`nn5YS}pHvPNkSV#+9;p2sLpdrO?!}ChCiZvfOUQSAi^i@!T_(GN!a%C*D9KWCh z<-pe2WrE6xxU1v3GG zq7c9gLpp$=s-&crk+~-B|NlBWv+c%l9g6ns+=vinZlC<_MDq|^ESEE|7T z2m$r2{ksSpQwp6i$cTXiwXYv`zVB6O$)>C}b5}{~L03>V^ha-}CM*HR$+@W+ z2;mNe-AWtr6bPY4<3NjE1|^(pq!l0$Eo+tD4un~UAPg5ML)G{<8qiNsK_~$jq#!R0 znpD6SK8{ZN&eOwR)&-zSP4PKt&#)d~N?OsL>1t1#2el z@CNTXsL$*k93l&jvoB+I-gvzJeINODPN_2ay3eaHEgEUl-rDi?v~h?D^A&wVeavs_ zY2T+)v_AQ9R~;RJYU?}SmzR4)0lI_=p%bRyVo%}hwL6B6`3jJCX}dP9q0kGN0Hmk$ z?8Z4w=i~zqnG>i+R8gS3IG!JY0N;legu9)c#s1pU_sOV46r^N7{I#zR7n=vC93!v* zZ4H(76mL-M+oAm+)pd6?$Wyk#X@4zn4sv3iVl=4L_8x3OYOM~nd{T$X=FpAe+Zu3X@kR}(5a>fjMVDfLf{V=i zS~?F^ao7pk{+C}CjRikCX>mkk)tbwo^ajeCESzZH`HXb&b@o=Ju^)Gn#{g2a)>yo< z`OpjMOK!afGlQ~{tXrSFSv5~4T9kv(kY7miUx^~J0c*qBL z*za4Zbl&i7Vsw!u!?-jC@$P3oE?lnd#|69IF+*@4cs7S>6vryPQ!pX*{Qp!rmChSA zQ&RfxQ0}KjB1ItFI4ij@rgA3$-twi7-T^4Ilk%_SfDWA51@|HdxUfbx5JUk`gV> z#0a&K3It=7<;skO(X=0BI>+3D+Qo-<$N=hq!n9`y1e90Mj1QH;xxC;SC?n{_R{rbv zTjMVBjiEIsnTdl6|GxE=%t7jV8B)A8rSF#vPCAP+7*g&D3N=*r4!E5Ea6>ZmsKURK z+`#Cb$(Q;A7~bMvI^p$JWt4q9*+Po;fCOq3#^qhQ>SYKr)@V;8ZCY7=ya;&ldelQw zdIlF@TT})Q5pO~N3{3Q&;Rl8>g(g!uCVws5p%VrLNJtSw&@BpR@;6TCzc;i22Cobr zn)dV$LkGv>2F0iZyj%$))YBCN%=ICYjL2K`Giew2D>{t%G1xa$%Rz(oU7V_oc{w`!~ORM`dC|O$1FrTf#c>4 z7AV1BNKj-R-BMPzNoSE4_M=|uOwfJt&8tp@%aoykbspZ_BjnqBG^&Uzl zi8LT>paALNU-W;ag9*k(ph0)@s{+rjs)?0h*P9h6co1#v%d%DMS6NDPL#tUbX(g zkIO`&{U#H>Nc|UY1)u^$*E)F`oqY1CsF5K3;O#b41D-D(`X4G$PkT_f?A$;Upz`iH zv&s$zI|LExXN`N4*F3taWy(kW>BBtgV_MRFbrf}xG>j<$UayVUm+z-so|7+hh~K^W zyc6se`?)HK-J)2Z!zuHF;IqF@u=`#KfI)4h_u#x>_doo&AsD0mxU`20-%fcS?SrJ9 zvl>H?-|@JuqYJuZ-nGe0T%FrukU6r-kZSBb1*O5!lfCjD^bXf=WP5e8uX%dYoNJtR zDu!;PmL{8AK}SZU^Vtb#d)rA!>YxJT*h7uV; zt@1XkPD$Ho@4q;&84&g|@@lQ@z|eo1*YsRFYS7dHR$6n>i_AYdr!1dwx?qb4()r?W$J%G4^nc3RfJ}VJd+Y+B+-BOy-OWBAS`tDm8EFh!fYdd@NPCG|q zVQJ+i+wDDg&un4cDfso0eLQOcDb8;IYYzKs(Sji`r+5tth{r1L1VaaRZa&O^IH^FW zB)EJ^FtWh(wrg1^YDvW%uL3Q;K(wJLcZ*duc!gYOGoCyGpwmhG53m_UOeB zqdxj|lLzhf^s=)v1Q!xt0+ONWJm%i@$z2G-g8NfFqtN+Hmd5Js@}-z}Ub&}hJZJi< z9D*C|gA29h7>y4nD*)xjb}b-PvX6@j_#QGFK#ix1ueI*ZOIsYZ0&0N*poUt3s9~j%sJM+BC&4$g-b{P&`1NFoHm`Q z?^A&Jrd&!Np%$+v-?m@1(dv8&;`RHlMYi2!k8GPPCrali&rvo|Z+{*D4fYYz zFVmpWQZ*!dmonOKH`!kpKStlar#+Q)!dtBkI6z`78uL4T05*{19_W0sPZTWp-Pr*J&fAZ{fv~w5V+B50 zmXa2VOC_iZ3bRwi%$kbe`=9lIG&=Bna)J+@g7WTfA~l|JK?+c=Wb+^{q4=RTz4dlc zZ%$~*G=mh7l=iGejT5P(ec=KOn&nl1+MVrMNQV|jU?358=3$pJ^2*cB@uj;@%UUau z&DUgJFTT@^p2^{IbD#{Qhl_(xzyY1{&UF3ema=SIpZ?m`(JhzHRB2zOc-%!d?lEd# zZvoF`V=-G=)E}~UZ}L#yW#pYQoe$p>0)@@~+K1Lw`uR?YKTeqkjGMz64=-3jN~B?T zdeCB%{jhz!`L-a_V^1N)NEJ}!dMbaa$Eu!FmJKRFZAr#u=c{rhW#51l*fw_?Z>WhE zcR(5Gq5o%!-{o&mdrP0RsO^+I9nexFh*k2ApN_bKfWc+BR?Eit(s564Ven1cEJ#mX z)y5gxq?Ew$`d5D3XjjXCC@GHvs8Zi(MgsR?P1#8A4%)WU=`3FoTd-wr$nA6NL1e75{8X!%jJ!}X%k4C3@fRt!lSn};G&4crS z?#}K;KadzuH)nE1!vQCtqVPcQUtEmxXFUReCVr+%%OHqa0V>o=EpZRQJ$)q(nd|-a z4Hk_`mhN4<4&c9pLckA~FAD&qV-y4zUN>5l02pf1TkFLn_w$s1HCkaRUu&fRQmbh| zJ?+tqU_JS;@KAXl`L5os_Od@%tzxlzI_m^W34$LaXl3mcACEDucWsy!x%X(l`|@z@ zILk>J$xXW%K%Z40B?9!+0Rd*s>%~*EJV5Oo5dmo!x6|SUU^Ip_AT`R6U9v`67lUF>)gv8 zIJ_fAWTEQf5B5I2QwNdRxw1hGwM~7%`6~Ya)$J== MAX_RECONNECT: - self.reconnect_timer.stop() # 停止重连定时器 - print(f"已达最大重连次数({MAX_RECONNECT}次),停止重连,请检查服务端状态") - - def _init_save_dir(self): - """初始化数据保存目录""" - if not os.path.exists(SAVE_DIR): - os.makedirs(SAVE_DIR) - print(f"已创建数据保存目录:{os.path.abspath(SAVE_DIR)}") - else: - print(f"数据保存目录已存在:{os.path.abspath(SAVE_DIR)}") - - def _bind_tcp_signals(self): - """绑定TCP socket的核心信号(连接、断开、接收数据、错误)""" - # 连接成功信号 - self.tcp_socket.connected.connect(self._on_tcp_connected) - # 断开连接信号 - self.tcp_socket.disconnected.connect(self._on_tcp_disconnected) - # 接收数据信号(有新数据时触发) - self.tcp_socket.readyRead.connect(self._on_tcp_data_received) - # 错误信号(连接/通信出错时触发) - self.tcp_socket.errorOccurred.connect(self._on_tcp_error) - - # ------------------ - # 界面初始化函数 - # ------------------ - def _init_title_label(self): - """初始化系统标题标签""" - titleLabel = QLabel("中交三航精准布料浇筑要料系统") - titleLabel.setStyleSheet(""" - QLabel { - color: #00FF9D; - font-size: 20px; - font-weight: bold; - } - """) - titleLabel.setAlignment(Qt.AlignmentFlag.AlignCenter) - titleLabel.setFont(QFont("Microsoft YaHei", 24, QFont.Bold)) - self.mainLayout.addWidget(titleLabel) - - def _init_status_container(self): - """初始化核心状态监控容器(包含状态组和操作按钮)""" - self.bigContainer = QFrame() - self.bigContainer.setStyleSheet(""" - QFrame { - background-color: #1E1E1E; - border: 2px solid #333333; - border-radius: 8px; - } - """) - self.bigContainer.setSizePolicy( - QSizePolicy.Policy.Expanding, - QSizePolicy.Policy.Expanding - ) - - containerLayout = QVBoxLayout(self.bigContainer) - containerLayout.setContentsMargins(20, 20, 20, 20) - - self._init_status_groups(containerLayout) - self._init_operation_buttons(containerLayout) - - self.mainLayout.addWidget(self.bigContainer, 1) - - def _init_status_groups(self, parent_layout): - """初始化左右信息(各包含3个状态项)""" - statusWidget = QWidget() - statusLayout = QHBoxLayout(statusWidget) - statusLayout.setContentsMargins(0, 0, 0, 0) - statusLayout.setSpacing(30) # 减小中间空白间距(原30) - - leftGroup = QWidget() - leftLayout = QVBoxLayout(leftGroup) - leftLayout.setSpacing(15) - leftLayout.setContentsMargins(30, 0, 0, 0) # 左边组左内边距设为20,增加左边留白 - - rightGroup = QWidget() - rightLayout = QVBoxLayout(rightGroup) - rightLayout.setSpacing(15) - rightLayout.setContentsMargins(0, 0, 30, 0) # 右边组右内边距设为20,增加右边留白(若需左边也留白,可设左内边距) - - # 左边5个状态项及对应初始值 - leftStatusInfo = [ - {"name": "任务单号", "value": "", "api_field": "task_id"}, - {"name": "工程名称", "value": "", "api_field": "project_name"}, - {"name": "配比号", "value": "", "api_field": "produce_mix_id"} - ] - # 右边5个状态项及对应初始值 - rightStatusInfo = [ - {"name": "要料状态", "value": "", "api_field": "flag"}, - {"name": "砼强度", "value": "", "api_field": "beton_grade"}, - {"name": "要料方量", "value": "", "api_field": "adjusted_volume"}, - ] - self.statusWidgets = [] - - # 处理左边状态项 - for info in leftStatusInfo: - statusItem = self._create_status_item(info) - leftLayout.addWidget(statusItem) - - # 处理右边状态项 - for info in rightStatusInfo: - statusItem = self._create_status_item(info) - rightLayout.addWidget(statusItem) - - statusLayout.addWidget(leftGroup) - statusLayout.addStretch(0) # 减小中间空白比例(原1) - statusLayout.addWidget(rightGroup) - - parent_layout.addWidget(statusWidget) - - def _create_status_item(self, info): - """创建单个状态项""" - statusItem = QFrame() - statusItem.setStyleSheet(""" - QFrame { - background-color: #2D2D2D; - border: 1px solid #444444; - border-radius: 6px; - padding: 10px; - } - """) - statusItem.setFixedHeight(80) - statusItem.setFixedWidth(320) # 统一加长状态项宽度(原无固定宽度) - - itemLayout = QHBoxLayout(statusItem) - itemLayout.setContentsMargins(10, 5, 10, 5) - - # 状态指示灯 - indicator = QLabel() - indicator.setFixedSize(20, 20) - indicator.setStyleSheet(""" - QLabel { - background-color: #9E9E9E; - border-radius: 10px; - border: 2px solid #555555; - } - """) - - # 状态名称标签 - nameLabel = QLabel(info["name"]) - nameLabel.setFixedWidth(100) # 加宽名称标签(原90) - nameLabel.setAlignment(Qt.AlignmentFlag.AlignCenter) - nameLabel.setStyleSheet("font-size: 14px; color: #FFFFFF;") - nameLabel.setFont(QFont("Microsoft YaHei", 12)) - - # 状态值标签 - valueLabel = QLabel(info["value"]) - valueLabel.setStyleSheet(""" - QLabel { - font-size: 16px; - font-weight: bold; - color: #FFFFFF; - background-color: #2D2D2D; - border: none; - padding: 0px; - } - """) - valueLabel.setAlignment(Qt.AlignmentFlag.AlignCenter) - valueLabel.setMinimumWidth(150) # 加宽值标签(原80) - - itemLayout.addWidget(indicator) - itemLayout.addSpacing(10) - itemLayout.addWidget(nameLabel) - itemLayout.addStretch() - itemLayout.addWidget(valueLabel) - - self.statusWidgets.append({ - 'indicator': indicator, - 'nameLabel': nameLabel, - 'valueLabel': valueLabel, - 'status': False, - 'initial_value': info["value"], - 'api_field': info["api_field"] - }) - - return statusItem - - def _init_operation_buttons(self, parent_layout): - """初始化操作按钮(下料完成/生产异常/生产取消)""" - buttonContainer = QWidget() - buttonLayout = QHBoxLayout(buttonContainer) - buttonLayout.setContentsMargins(0, 20, 0, 0) - buttonLayout.setSpacing(30) - - # 按钮图标(需替换为实际图标路径) - error_icon_path = "img.png" - cancel_icon_path = "img.png" - - self.errorButton = QPushButton("生产异常") - self.cancelButton = QPushButton("生产取消") - - # 设置按钮图标 - self.errorButton.setIcon(QIcon(error_icon_path)) - self.cancelButton.setIcon(QIcon(cancel_icon_path)) - - # 设置图标大小 - self.errorButton.setIconSize(QSize(20, 20)) - self.cancelButton.setIconSize(QSize(20, 20)) - - button_base_style = """ - QPushButton { - font-size: 16px; - font-weight: bold; - padding: 10px 20px; - border-radius: 15px; - border: 1px solid; - min-width: 100px; - } - QPushButton:hover { - opacity: 0.9; - } - QPushButton:pressed { - opacity: 0.8; - } - """ - self.errorButton.setStyleSheet(button_base_style + """ - QPushButton { - background-color: #E65100; - color: white; - border-color: #BF360C; - } - """) - - self.cancelButton.setStyleSheet(button_base_style + """ - QPushButton { - background-color: #C62828; - color: white; - border-color: #8E0000; - } - """) - - button_font = QFont("Microsoft YaHei", 12, QFont.Bold) - self.errorButton.setFont(button_font) - self.cancelButton.setFont(button_font) - - self.errorButton.clicked.connect(self.on_error_clicked) - self.cancelButton.clicked.connect(self.on_cancel_clicked) - - # 初始禁用“停止”和“异常”按钮(未连接时不可用) - self.errorButton.setDisabled(True) - self.cancelButton.setDisabled(True) - - buttonLayout.addStretch(1) - buttonLayout.addWidget(self.errorButton) - buttonLayout.addWidget(self.cancelButton) - buttonLayout.addStretch(1) - - parent_layout.addWidget(buttonContainer) - - def _init_timers(self): - """初始化定时器(时间更新+状态模拟)""" - # 时间更新定时器(每秒更新一次) - self.time_timer = QTimer() - self.time_timer.timeout.connect(self.update_time) - self.time_timer.start(1000) - - def get_current_time(self): - """获取格式化的当前时间""" - return datetime.now().strftime('%Y-%m-%d %H:%M:%S') - - def get_timestamp(self): - """获取当前时间戳(秒级)""" - return datetime.now().strftime('%Y%m%d_%H%M%S_%f')[:-3] - - def update_time(self): - """更新时间显示并触发重绘""" - self.current_datetime = self.get_current_time() - self.update() # 触发paintEvent重绘 - - def paintEvent(self, event): - """重写绘画事件,在右上角绘制日期时间文本""" - super().paintEvent(event) # 调用父类方法保持原有绘制 - - # 创建QPainter对象 - painter = QPainter(self) - painter.setRenderHint(QPainter.RenderHint.TextAntialiasing) # 文本抗锯齿 - - # 设置字体 - font = QFont("Arial", 12, QFont.Bold) - painter.setFont(font) - - # 设置文本颜色 - painter.setPen(QColor("#00FF9D")) - - # 计算文本位置(右上角,留出边距) - text = f"🕒 {self.current_datetime}" - text_rect = painter.boundingRect(self.rect(), Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignTop, text) - x = self.width() - text_rect.width() - 15 # 右边距15px - y = 15 # 上边距15px - - # 绘制文本 - painter.drawText(x, y + text_rect.height(), text) - - # ------------------ - # 数据保存 - # ------------------ - def _save_data_to_file(self, button_name): - """ - 将服务端数据+按钮操作信息保存到JSON文件 - - 参数:button_name:点击的按钮名称 - """ - # 1、检查是否有服务端数据 - if not self.latest_server_data: - print(f"⚠️ 未收到服务端数据,无法保存「{button_name}」操作记录") - return - - # 2、构建完整数据(服务端数据+按钮操作信息+存档时间) - save_data = { - "opration_button": button_name, - "save_time": self.get_current_time(), - "server_data":self.latest_server_data - } - - # 3、生成唯一文件名(按时间戳命名) - file_name = f"operation_record_{self.get_timestamp()}.json" - file_path = os.path.join(SAVE_DIR, file_name) - - # 4、写入JSON文件 - try: - with open(file_path, "w", encoding="utf-8") as f: - json.dump(save_data, f, ensure_ascii=False, indent=4) - print(f"💾 保存「{button_name}」操作记录成功:{os.path.abspath(file_path)}") - except Exception as e: - print(f"💾 保存「{button_name}」操作记录失败:{str(e)}") - - # -------------------- - # 清空界面信息的通用方法 - # -------------------- - def _clear_ui_info(self): - """清空所有状态项的显示内容,并并设置指示灯颜色""" - for widget in self.statusWidgets: - widget['valueLabel'].setText("") - # 指示灯设为初始灰色(与_create_status_item中初始样式一致) - widget['indicator'].setStyleSheet(""" - QLabel { - background-color: #9E9E9E; - border-radius: 10px; - border: 2px solid #555555; - } - """) - print("ℹ️ 界面信息已清空") - - # ------------------ - # TCP客户端核心功能 - # ------------------ - @Slot() - def _on_tcp_connected(self): - """TCP连接成功回调""" - self.is_tcp_connected = True - self.has_connected_once = True - self.reconnect_timer.stop() # 停止重连定时器 - self.reconnect_count = 0 # 重连计数器清零 - self.is_running = True - print(f"TCP连接成功:{self.tcp_server_host}:{self.tcp_server_port}") - - # 连接成功后,向服务器发送“请求初始数据”指令 - self._send_tcp_request("get_initial_data") - - # 更新按钮状态:启用“生产异常”“生产取消” - self.errorButton.setDisabled(False) - self.cancelButton.setDisabled(False) - - @Slot() - def _on_tcp_disconnected(self): - """TCP连接断开回调""" - self.is_tcp_connected = False - self.is_running = False - print(f"TCP连接断开:{self.tcp_server_host}:{self.tcp_server_port}") - - # 启用/禁用按钮 - self.errorButton.setDisabled(True) - self.cancelButton.setDisabled(True) - - # 重置状态指示灯为“未连接”状态 - for widget in self.statusWidgets: - widget['indicator'].setStyleSheet(""" - QLabel { - background-color: #9E9E9E; - border-radius: 10px; - border: 2px solid #555555; - } - """) - - @Slot() - def _on_tcp_data_received(self): - """TCP数据接收回调(服务器发送数据时触发)""" - tcp_data = self.tcp_socket.readAll().data().decode("utf-8").strip() - print(f"TCP数据接收:{tcp_data}") - - # 解析数据 - try: - status_data = json.loads(tcp_data) - print(status_data) - self.latest_server_data = status_data - self._update_ui_from_data(status_data) - except json.JSONDecodeError as e: - print(f"TCP数据解析失败(非JSON格式):{e}, 原始数据:{tcp_data}") - except Exception as e: - print(f"TCP数据处理异常:{e}") - - @Slot(QAbstractSocket.SocketError) - def _on_tcp_error(self, error): - """TCP错误回调""" - if not self.is_tcp_connected: - error_str = self.tcp_socket.errorString() - print(f"TCP错误:{error_str}") - self.is_tcp_connected = False - self.is_running = False - - # 启用/禁用按钮 - self.errorButton.setDisabled(True) - self.cancelButton.setDisabled(True) - - # 首次连接失败时,启动重连定时器 - if not self.has_connected_once and self.reconnect_count == 0: - print(f"将在{RECONNECT_INTERVAL / 1000}秒后启动重连(最多{MAX_RECONNECT}次)") - self.reconnect_timer.start() - - def _send_tcp_request(self, request_cmd="get_status"): - """向TCP服务器发送请求指令""" - if not self.is_tcp_connected: - print("TCP连接未建立,无法发送请求") - return - - # 构造请求数据 - request_data = json.dumps({ - "cmd": request_cmd, - "timestamp": self.get_current_time(), - "client_info": "布料系统客户端", - "erp_id": self.latest_server_data.get('erp_id') - }) + "\n" # 增加换行符作为数据结束标识 - - # 发送请求数据 - self.tcp_socket.write(request_data.encode("utf-8")) - print(f"TCP请求发送:{request_data.strip()}") - - def _update_ui_from_data(self, data): - """根据TCP获取的数据更新界面状态""" - for widget in self.statusWidgets: - api_field = widget['api_field'] - if api_field in data: - new_value = str(data[api_field]) - widget['valueLabel'].setText(new_value) - self.set_indicator_status(widget, new_value) - - # ------------------ - # 状态指示灯逻辑 - # ------------------ - def set_indicator_status(self, widget, value): - """根据值设置状态指示灯颜色""" - if value and value != "未知" and value != "" and value != "None": - # 有效数据:绿色指示灯 - widget['indicator'].setStyleSheet(""" - QLabel { - background-color: #00E676; - border-radius: 10px; - border: 2px solid #00796B; - } - """) - else: - # 无效数据:红色指示灯 - widget['indicator'].setStyleSheet(""" - QLabel { - background-color: #FF5252; - border-radius: 10px; - border: 2px solid #C62828; - } - """) - - # ------------------ - # 按钮点击事件 - # ------------------ - def on_error_clicked(self): - """点击“生产异常”:向服务端发送异常指令""" - print("🔘 点击「生产异常」按钮") - self._clear_ui_info() - self._send_tcp_request("production_error") - - def on_cancel_clicked(self): - """点击“生产取消”:向服务端发送取消指令""" - print("🔘 点击「生产取消」按钮") - self._clear_ui_info() - self._send_tcp_request("cancel_feed") - -if __name__ == "__main__": - app = QApplication(sys.argv) - window = StatusMonitor() - window.show() - sys.exit(app.exec()) \ No newline at end of file