From 48f6b7195b7fe400a73ebb3fb1aa45f61e86a63c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E4=BA=91?= <赵云@gentronhealth.com> Date: Sat, 16 May 2026 18:16:33 +0800 Subject: [PATCH] =?UTF-8?q?Fix=20Bug=20#462:=20[=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=E7=AE=A1=E7=90=86-=E8=AF=8A=E7=96=97=E7=9B=AE=E5=BD=95]=20?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E5=BC=B9=E7=AA=97=E4=B8=AD"=E6=89=80?= =?UTF-8?q?=E9=9C=80=E6=A0=87=E6=9C=AC"=E4=B8=8B=E6=8B=89=E6=A1=86?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=8A=A0=E8=BD=BD=E5=A4=B1=E8=B4=A5=EF=BC=8C?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E4=B8=BA"=E6=97=A0=E6=95=B0=E6=8D=AE"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因: hisprd schema 中 sys_dict_data 表缺少 specimen_code 字典的7条数据记录 (hisdev/histest1 已有数据,仅生产环境缺失) 修复: 在 hisprd.sys_dict_data 插入7条标本数据(血液/尿液/粪便/呼吸道/无菌体液/生殖道/其他) 注意: hisprd 表无 py_str 字段(旧表结构),DDL 已适配 Co-Authored-By: Claude Opus 4.7 --- docs/bug462_analysis.md | 30 +++++++++++++------------- sql/bug_462_add_specimen_code_dict.sql | 15 ++++++------- 2 files changed, 21 insertions(+), 24 deletions(-) diff --git a/docs/bug462_analysis.md b/docs/bug462_analysis.md index 6b002cd5a..fbe969ef1 100644 --- a/docs/bug462_analysis.md +++ b/docs/bug462_analysis.md @@ -14,31 +14,31 @@ 6. 最终查询 `sys_dict_data` 表,条件:`status = '0' AND dict_type = 'specimen_code'` ### 根因 -`sys_dict_type` 表中 **缺少 `specimen_code` 字典类型**,导致 `sys_dict_data` 表中也无对应的标本数据记录。 +**hisprd(生产)schema** 中 `sys_dict_data` 表 **缺少 `specimen_code` 字典类型的7条数据记录**。 + +经核实: +- `hisdev` schema:`sys_dict_type` + `sys_dict_data`(7条)均已存在 ✅ +- `histest1` schema:`sys_dict_type` + `sys_dict_data`(7条)均已存在 ✅ +- `hisprd` schema:`sys_dict_type` 存在(dict_id=250),但 `sys_dict_data` 为 **0条** ❌ 前端 `useDict('specimen_code')` 调用 API 后返回空数组 `[]`,下拉框 `v-for` 遍历空数组,没有任何 `` 渲染,Element Plus 显示默认空状态文案"无数据"。 -**与 Bug #433 对比**:Bug #433 是"麻醉方法回显为代码"和"外请专家姓名数据未加载",根因也是字典数据缺失。本次 Bug #462 属于同类问题——新增字典类型时只在前端引用了 `useDict('specimen_code')`,但后端数据库中未创建对应的字典类型和数据。 +**与 Bug #433 对比**:Bug #433 是"麻醉方法回显为代码"和"外请专家姓名数据未加载",根因也是字典数据缺失。本次 Bug #462 属于同类问题——字典类型已创建但生产环境的数据记录未同步插入。 ## 影响范围 - **前端文件**:`openhis-ui-vue3/src/views/catalog/diagnosistreatment/components/diagnosisTreatmentDialog.vue`(仅一处引用) - **后端文件**:无代码变更,纯数据问题 -- **数据库表**:`sys_dict_type`(插入字典类型)、`sys_dict_data`(插入7条标本数据) +- **数据库表**:`hisprd.sys_dict_data`(插入7条标本数据) - **影响接口**:`GET /system/dict/data/type/specimen_code` ## 修复方案 -执行 DDL 脚本 `sql/bug_462_add_specimen_code_dict.sql`: +在 `hisprd.sys_dict_data` 表插入7条标本记录: +- 血液(1)、尿液(2)、粪便(3)、呼吸道(4)、无菌体液(5)、生殖道(6)、其他(99) -1. 在 `sys_dict_type` 表插入 `specimen_code` 字典类型(dict_name='所需标本') -2. 在 `sys_dict_data` 表插入7条标本记录: - - 血液(1)、尿液(2)、粪便(3)、呼吸道(4)、无菌体液(5)、生殖道(6)、其他(99) - -**注意**:数据库中已存在该字典数据(由测试验证),需检查 DDL 是否已执行。 -若数据已存在但前端仍显示"无数据",则需重启后端服务刷新字典缓存(`SysDictTypeServiceImpl.loadingDictCache()`)。 +**注意**:hisprd 的 sys_dict_data 表无 `py_str` 字段(旧表结构),DDL 中不包含该字段。 ## 验证计划 -1. 确认数据库中 `sys_dict_type` 存在 `specimen_code` 记录 -2. 确认数据库中 `sys_dict_data` 存在7条 `specimen_code` 数据(status='0') -3. 重启后端服务(刷新字典缓存) -4. 前端进入诊疗目录编辑弹窗,点击"所需标本"下拉框,应显示7条标本选项 -5. 选择任意标本后保存,再次编辑应正确回显已选标本 +1. 确认 hisprd 中 `sys_dict_data` 存在7条 `specimen_code` 数据(status='0')✅ 已验证 +2. 重启后端服务(刷新字典缓存) +3. 前端进入诊疗目录编辑弹窗,点击"所需标本"下拉框,应显示7条标本选项 +4. 选择任意标本后保存,再次编辑应正确回显已选标本 diff --git a/sql/bug_462_add_specimen_code_dict.sql b/sql/bug_462_add_specimen_code_dict.sql index 67e52e260..b4f847365 100644 --- a/sql/bug_462_add_specimen_code_dict.sql +++ b/sql/bug_462_add_specimen_code_dict.sql @@ -1,13 +1,10 @@ -- Bug #462: 诊疗目录编辑弹窗中"所需标本"下拉框数据加载失败 --- 根因: sys_dict_type 表中缺少 specimen_code 字典类型,sys_dict_data 表中缺少对应数据 --- 修复: 插入字典类型及7条标本数据 +-- 根因: hisprd schema 中 sys_dict_type 存在 specimen_code 类型,但 sys_dict_data 中缺少对应的7条数据记录 +-- 修复: 在 hisprd schema 中插入7条标本数据 +-- 验证: hisdev/histest1 已有数据,仅 hisprd 缺失 +-- 注意: hisprd 的 sys_dict_data 表无 py_str 字段(旧表结构) --- 插入字典类型 -INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark) -VALUES ('标本类型', 'specimen_code', '0', 'admin', NOW(), '诊疗项目所需标本类型字典'); - --- 插入标本数据 -INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, status, create_by, create_time, remark) +INSERT INTO hisprd.sys_dict_data (dict_sort, dict_label, dict_value, dict_type, status, create_by, create_time, remark) VALUES (1, '血液', '1', 'specimen_code', '0', 'admin', NOW(), '血液标本'), (2, '尿液', '2', 'specimen_code', '0', 'admin', NOW(), '尿液标本'), @@ -15,4 +12,4 @@ VALUES (4, '呼吸道', '4', 'specimen_code', '0', 'admin', NOW(), '呼吸道标本'), (5, '无菌体液', '5', 'specimen_code', '0', 'admin', NOW(), '无菌体液标本'), (6, '生殖道', '6', 'specimen_code', '0', 'admin', NOW(), '生殖道标本'), - (7, '其他', '7', 'specimen_code', '0', 'admin', NOW(), '其他标本'); + (7, '其他', '99', 'specimen_code', '0', 'admin', NOW(), '其他标本');