# Bug #355 修复代码 ## 修改文件清单 | 序号 | 文件路径 | 修改类型 | 说明 | |------|---------|---------|------| | 1 | `his-source/openhis-server-new/openhis-domain/src/main/resources/mapper/administration/ScheduleSlotMapper.xml` | SQL 查询修改 | 性别字段直接从患者表获取 | | 2 | `his-source/openhis-server-new/openhis-application/src/main/java/com/openhis/web/appointmentmanage/appservice/impl/TicketAppServiceImpl.java` | Java 代码修改 | 性别处理逻辑修改 | --- ## 修复步骤 ### 修改 1: ScheduleSlotMapper.xml **文件:** `his-source/openhis-server-new/openhis-domain/src/main/resources/mapper/administration/ScheduleSlotMapper.xml` **修改位置:** 第97行 **修改前:** ```xml COALESCE(CAST(o.gender AS VARCHAR), CAST(pinfo.gender_enum AS VARCHAR)) AS patientGender, ``` **修改后:** ```xml pinfo.gender_enum AS genderEnum, ``` **说明:** 直接从患者表获取 `gender_enum` 字段,避免订单表 `gender` 字段为 NULL 导致的数据不一致。 --- ### 修改 2: TicketAppServiceImpl.java **文件:** `his-source/openhis-server-new/openhis-application/src/main/java/com/openhis/web/appointmentmanage/appservice/impl/TicketAppServiceImpl.java` **修改位置:** 第140-145行 **修改前:** ```java // 性别处理:直接读取优先级最高的订单性别字段 (SQL 已处理优先级) if (raw.getPatientGender() != null) { String pg = raw.getPatientGender().trim(); dto.setGender("1".equals(pg) ? "男" : ("2".equals(pg) ? "女" : "未知")); } else { dto.setGender("未知"); } ``` **修改后:** ```java // 性别处理:直接使用患者表中的 gender_enum Integer genderEnum = raw.getGenderEnum(); if (genderEnum != null) { if (Integer.valueOf(1).equals(genderEnum)) { dto.setGender("男"); } else if (Integer.valueOf(2).equals(genderEnum)) { dto.setGender("女"); } else { dto.setGender("未知"); } } else { dto.setGender("未知"); } ``` **说明:** 由于 SQL 查询已直接获取 `gender_enum` 字段,这里修改为直接使用该字段进行性别转换。 --- ## 额外修改 (可选) 如果需要同时修改 `selectTicketSlotsPage` 的其他字段,确保这些字段也被正确映射到 DTO: ### 修改 TicketSlotDTO.java **文件:** `his-source/openhis-server-new/openhis-domain/src/main/java/com/openhis/appointmentmanage/domain/TicketSlotDTO.java` **修改:** 添加 `genderEnum` 字段 ```java private Integer genderEnum; public Integer getGenderEnum() { return genderEnum; } public void setGenderEnum(Integer genderEnum) { this.genderEnum = genderEnum; } ``` --- ## 编译部署 ```bash cd his-source/openhis-server-new mvn clean package -DskipTests ``` --- ## 回归测试 | 测试项 | 预期结果 | 状态 | |--------|---------|------| | 预约签到弹窗性别显示 | 显示患者真实性别(男/女/未知) | 待测试 | | 挂号界面性别显示 | 显示患者真实性别(男/女/未知) | 待测试 | | 两者性别数据一致性 | 完全一致 | 待测试 | --- **修复人:** 关羽 **修复日期:** 2026-04-08 **BUG ID:** #355