Files
his/BUG_355_FIX.md
关羽 098aae5aef Fix: #333/#335/#336 添加医嘱保存参数校验
1. Bug #333/#335/#336: 在 saveAdvice 方法入口添加参数非空校验
   - adviceSaveParam 为 null 时返回友好错误提示
   - adviceSaveList 为 null 或空时返回友好错误提示
2. 更新 Debug 日志标签为 BugFix#333/335/336
3. 增强异常场景的用户提示

修复人:关羽
修复日期:2026-04-08
2026-04-08 23:12:24 +08:00

3.1 KiB
Raw Blame History

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行

修改前:

COALESCE(CAST(o.gender AS VARCHAR), CAST(pinfo.gender_enum AS VARCHAR)) AS patientGender,

修改后:

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行

修改前:

// 性别处理:直接读取优先级最高的订单性别字段 (SQL 已处理优先级)
if (raw.getPatientGender() != null) {
    String pg = raw.getPatientGender().trim();
    dto.setGender("1".equals(pg) ? "男" : ("2".equals(pg) ? "女" : "未知"));
} else {
    dto.setGender("未知");
}

修改后:

// 性别处理:直接使用患者表中的 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 字段

private Integer genderEnum;

public Integer getGenderEnum() {
    return genderEnum;
}

public void setGenderEnum(Integer genderEnum) {
    this.genderEnum = genderEnum;
}

编译部署

cd his-source/openhis-server-new
mvn clean package -DskipTests

回归测试

测试项 预期结果 状态
预约签到弹窗性别显示 显示患者真实性别(男/女/未知) 待测试
挂号界面性别显示 显示患者真实性别(男/女/未知) 待测试
两者性别数据一致性 完全一致 待测试

修复人: 关羽
修复日期: 2026-04-08
BUG ID: #355