From 6e13990386fe364c43d395eab24d2438f845a683 Mon Sep 17 00:00:00 2001 From: wangfq Date: Fri, 12 Jun 2026 10:00:25 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=AE=BE=E5=A4=87=E5=9E=8B=E5=8F=B7?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E6=94=B9=E4=B8=BA=E4=BB=8E=20db=20tb=5Fvechi?= =?UTF-8?q?cle=5Fbase=5Ftest=20=E5=8A=A8=E6=80=81=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=EF=BC=8C=E4=BF=AE=E5=A4=8D=E6=96=B0=E5=A2=9E=E5=9E=8B=E5=8F=B7?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=20Unknown=20=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - handlers.py: B2 数据硬编码 dev_model_map {1:PD132,2:DLD110} → await get_dev_type_name() - models.py: B4 波动数据硬编码 map → 同上 - models.py: 新增 get_dev_type_name() 带内存缓存,首次加载后缓存 type_num→dev_name - models.py: 新增 refresh_dev_type_names() 供工装配置页新增型号后刷新缓存 --- src/handlers.py | 4 ++-- src/models.py | 39 +++++++++++++++++++++++++++++++++++++-- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/src/handlers.py b/src/handlers.py index b918a5b..27699c8 100644 --- a/src/handlers.py +++ b/src/handlers.py @@ -33,6 +33,7 @@ from src.models import ( insert_device_log, update_device_status, get_all_device_serials, + get_dev_type_name, ) from src.dg430 import ( parse_b2_status, @@ -293,8 +294,7 @@ async def parse_loop(): fault_info = decode_fault_info(status.fault) relay_info = decode_relay_info(status.relay_out) - dev_model_map = {1: "PD132", 2: "DLD110"} - str_type = dev_model_map.get(status.dev_model, f"Unknown({status.dev_model})") + str_type = await get_dev_type_name(status.dev_model) await insert_test_result( dnt_id=dnt_id, diff --git a/src/models.py b/src/models.py index d96dacd..2b7e07d 100644 --- a/src/models.py +++ b/src/models.py @@ -498,6 +498,42 @@ async def get_fixture_dev_type(dnt_id: int) -> int: return row[0] if row else 0 +# ─── 设备型号名称缓存 ────────────────────────────────────────────────── + +_dev_type_name_cache: dict[int, str] = {} +_cache_loaded = False + + +async def _load_dev_type_names(): + """从 tb_vechicle_base_test 加载 type_num → dev_name 映射""" + global _dev_type_name_cache, _cache_loaded + pool = await get_pool() + async with pool.acquire() as conn: + async with conn.cursor() as cur: + await cur.execute( + "SELECT type_num, dev_name FROM tb_vechicle_base_test" + ) + rows = await cur.fetchall() + _dev_type_name_cache = {row[0]: row[1] for row in rows if row[1]} + _cache_loaded = True + logger.debug(f"设备型号名称缓存已加载: {_dev_type_name_cache}") + + +async def get_dev_type_name(dev_type: int) -> str: + """根据设备型号编码获取名称(从 tb_vechicle_base_test 查询,带内存缓存)""" + global _cache_loaded + if not _cache_loaded: + await _load_dev_type_names() + return _dev_type_name_cache.get(dev_type, f"Unknown({dev_type})") + + +async def refresh_dev_type_names(): + """刷新型号名称缓存(工装配置页新增型号后调用)""" + global _cache_loaded + _cache_loaded = False + await _load_dev_type_names() + + async def insert_test_result(dnt_id: int, dpg430_addr: int, pcnum: str, serialnum: int, sub_type: int, str_type: str, iffinish: str, fault_info: str, relay_out: str, @@ -536,8 +572,7 @@ async def insert_wave_data(dnt_id: int, dpg430_addr: int, """插入 0xB4 波动测试上报数据到 tb_state_tst""" coil_id, simulate_car_id = await get_fixture_coil_car_ids(dnt_id) dev_type = await get_fixture_dev_type(dnt_id) - dev_model_map = {1: "PD132", 2: "DLD110"} - str_type = dev_model_map.get(dev_type, f"Unknown({dev_type})") if dev_type else "" + str_type = await get_dev_type_name(dev_type) if dev_type else "" pool = await get_pool() async with pool.acquire() as conn: async with conn.cursor() as cur: