From 1f679d68df97bfc76db9f79bd199a0e406c761d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=B3=E7=BE=BD?= <关羽@gentronhealth.com> Date: Wed, 13 May 2026 15:11:17 +0800 Subject: [PATCH] =?UTF-8?q?Fix=20Bug=20#435:=20=E9=97=A8=E8=AF=8A=E6=89=8B?= =?UTF-8?q?=E6=9C=AF=E5=AE=89=E6=8E=92=EF=BC=9A=E7=BC=96=E8=BE=91=E5=BC=B9?= =?UTF-8?q?=E7=AA=97=E4=B8=AD"=E8=B4=B9=E7=94=A8=E7=B1=BB=E5=88=AB"?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E6=95=B0=E6=8D=AE=E6=9C=AA=E5=9B=9E=E6=98=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因:OpSchedule 实体缺少 feeType 字段,创建手术安排时费用类别未被持久化到数据库。编辑时详情查询通过复杂 JOIN 链(adm_encounter → adm_account → fin_contract)计算 feeType,链断裂时返回 null。 修复方案: 1. OpSchedule.java 新增 feeType 字段,使创建时费用类别持久化到 op_schedule.fee_type 2. SurgicalScheduleAppMapper.xml 详情查询改用 os.fee_type,移除不可靠的 JOIN 链 3. OpScheduleDto.java 移除重复的 feeType 声明(现从父类继承) 4. 新增 DDL 迁移脚本添加 fee_type 列 Co-Authored-By: Claude Opus 4.7 --- .../openhis/web/clinicalmanage/dto/OpScheduleDto.java | 5 ----- .../clinicalmanage/SurgicalScheduleAppMapper.xml | 5 +---- .../openhis/surgicalschedule/domain/OpSchedule.java | 3 +++ .../20260513_add_fee_type_to_op_schedule.sql | 10 ++++++++++ 4 files changed, 14 insertions(+), 9 deletions(-) create mode 100644 sql/迁移记录-DB变更记录/20260513_add_fee_type_to_op_schedule.sql diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/dto/OpScheduleDto.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/dto/OpScheduleDto.java index 5e5c2274..72ec3016 100755 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/dto/OpScheduleDto.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/dto/OpScheduleDto.java @@ -106,9 +106,4 @@ public class OpScheduleDto extends OpSchedule { * 创建人名称 */ private String createByName; - - /** - * 费用类别 - */ - private String feeType; } diff --git a/openhis-server-new/openhis-application/src/main/resources/mapper/clinicalmanage/SurgicalScheduleAppMapper.xml b/openhis-server-new/openhis-application/src/main/resources/mapper/clinicalmanage/SurgicalScheduleAppMapper.xml index 42c1a6d5..305c3e8e 100755 --- a/openhis-server-new/openhis-application/src/main/resources/mapper/clinicalmanage/SurgicalScheduleAppMapper.xml +++ b/openhis-server-new/openhis-application/src/main/resources/mapper/clinicalmanage/SurgicalScheduleAppMapper.xml @@ -89,15 +89,12 @@ cs.apply_doctor_name AS apply_doctor_name, drf.create_time AS apply_time, os.surgery_nature AS surgeryType, - fc.contract_name AS feeType, + os.fee_type AS feeType, COALESCE(pi.identifier_no, ap.bus_no, '') AS identifierNo FROM op_schedule os LEFT JOIN adm_patient ap ON os.patient_id = ap.id INNER JOIN cli_surgery cs ON os.oper_code = cs.surgery_no AND cs.delete_flag = '0' LEFT JOIN adm_organization o ON cs.org_id = o.id - LEFT JOIN adm_encounter ae ON ae.id = cs.encounter_id AND ae.delete_flag = '0' - LEFT JOIN adm_account aa ON aa.encounter_id = ae.id AND aa.delete_flag = '0' - LEFT JOIN fin_contract fc ON fc.bus_no = aa.contract_no AND fc.delete_flag = '0' LEFT JOIN doc_request_form drf ON drf.prescription_no=cs.surgery_no LEFT JOIN ( SELECT patient_id, identifier_no diff --git a/openhis-server-new/openhis-domain/src/main/java/com/openhis/surgicalschedule/domain/OpSchedule.java b/openhis-server-new/openhis-domain/src/main/java/com/openhis/surgicalschedule/domain/OpSchedule.java index 0846f921..99936b21 100755 --- a/openhis-server-new/openhis-domain/src/main/java/com/openhis/surgicalschedule/domain/OpSchedule.java +++ b/openhis-server-new/openhis-domain/src/main/java/com/openhis/surgicalschedule/domain/OpSchedule.java @@ -193,6 +193,9 @@ public class OpSchedule extends HisBaseEntity { /** 外请专家姓名 */ private String externalExpertName; + /** 费用类别 */ + private String feeType; + /** 备注信息 */ private String remark; diff --git a/sql/迁移记录-DB变更记录/20260513_add_fee_type_to_op_schedule.sql b/sql/迁移记录-DB变更记录/20260513_add_fee_type_to_op_schedule.sql new file mode 100644 index 00000000..4f4683b1 --- /dev/null +++ b/sql/迁移记录-DB变更记录/20260513_add_fee_type_to_op_schedule.sql @@ -0,0 +1,10 @@ +-- Bug #435: 门诊手术安排编辑弹窗中"费用类别"字段数据未回显 +-- 原因:op_schedule 表缺少 fee_type 字段,导致手术安排创建时费用类别未被持久化 +ALTER TABLE op_schedule ADD COLUMN IF NOT EXISTS fee_type VARCHAR(50); +COMMENT ON COLUMN op_schedule.fee_type IS '费用类别'; + +-- 验证字段是否添加成功 +SELECT column_name, data_type, character_maximum_length +FROM information_schema.columns +WHERE table_name = 'op_schedule' + AND column_name = 'fee_type';