1. Bug #333/#335/#336: 在 saveAdvice 方法入口添加参数非空校验 - adviceSaveParam 为 null 时返回友好错误提示 - adviceSaveList 为 null 或空时返回友好错误提示 2. 更新 Debug 日志标签为 BugFix#333/335/336 3. 增强异常场景的用户提示 修复人:关羽 修复日期:2026-04-08
118 lines
3.1 KiB
Markdown
118 lines
3.1 KiB
Markdown
# 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
|