fix(#582): 请修复 Bug #582:[住院医生工作站-手术申请] 手术申请单保存后生成的手术单号前缀错误套用检查单前缀

根因:
- 手术申请单保存时,`RequestFormManageAppServiceImpl.saveRequestForm()` 方法**硬编码**使用 `"JCZ"` 前缀和 `AssignSeqEnum.CHECK_APPLY_NO`,没有根据传入的 `typeCode` 区分申请单类型。
- Controller 中虽然 `saveSurgeryRequestForm` 正确传入了 `ActivityDefCategory.PROCEDURE.getCode()` (`"24"`),但 Service 层忽略了这个参数,导致手术申请单号也生成为 `JCZ` 前缀。
- ### 修改的文件(2 个)
- 1. `openhis-common/.../enums/AssignSeqEnum.java`**
- 新增 `SURGERY_APPLY_NO("73", "手术申请单号", "SSZ")` 枚举
- 2. `openhis-application/.../impl/RequestFormManageAppServiceImpl.java`**
- 原代码(第158-161行)硬编码 `JCZ` 前缀
- 改为根据 `typeCode` 动态选择:
- `PROCEDURE`(手术)→ 使用 `SSZ` 前缀,通过 `SURGERY_APPLY_NO` 独立计流水号
- 其他类型(检查等)→ 保持原有 `JCZ` 前缀不变
- ### 全链路验证
- | 环节 | 状态 |
- |---|---|
- | 录入(前端手术申请) |  前端调用 `/reg-doctorstation/request-form/save-surgery` |
- | 保存(Controller → Service) |  `typeCode = "24"` 传入,Service 根据此值选择前缀 |
- | 单号生成 |  `SSZ + yyMMdd + 5位流水号`,与检查流水号独立隔离 |
- | 查询/展示 |  无影响,`prescriptionNo` 字段结构一致 |
- | 修改/删除 |  无影响,编辑时复用已有单号 |
- | 关联模块 |  无影响(下游仅按 `prescriptionNo` 做关联查询) |
- ### 注意事项
- 手术申请单的日流水号与检查申请完全隔离(Redis key 分别为 `assign-seq:SSZ:{date}` 和 `assign-seq:JCZ:{date}`),互不干扰。

修复:
- Bug #582
This commit is contained in:
2026-05-28 23:33:21 +08:00
parent 7169d27b3a
commit d63c5d5b07
2 changed files with 10 additions and 3 deletions

View File

@@ -155,10 +155,13 @@ public class RequestFormManageAppServiceImpl implements IRequestFormManageAppSer
return R.fail("无待签发的医嘱,该申请单不可编辑");
}
} else {
// 检查申请单JC检查+ Z住院标识+ yyMMdd日期+ 5位顺序
// 根据申请单类型生成不同前缀的单
String dateStr = new java.text.SimpleDateFormat("yyMMdd").format(new Date());
int seq = assignSeqUtil.getSeqNoByDay(AssignSeqEnum.CHECK_APPLY_NO.getPrefix());
prescriptionNo = "JCZ" + dateStr + String.format("%05d", seq);
AssignSeqEnum seqEnum = ActivityDefCategory.PROCEDURE.getCode().equals(typeCode)
? AssignSeqEnum.SURGERY_APPLY_NO
: AssignSeqEnum.CHECK_APPLY_NO;
int seq = assignSeqUtil.getSeqNoByDay(seqEnum.getPrefix());
prescriptionNo = seqEnum.getPrefix() + dateStr + String.format("%05d", seq);
}
// 当前时间

View File

@@ -274,6 +274,10 @@ public enum AssignSeqEnum {
* 检查申请单号(住院)
*/
CHECK_APPLY_NO("72", "检查申请单号", "JCZ"),
/**
* 手术申请单号(住院)
*/
SURGERY_APPLY_NO("73", "手术申请单号", "SSZ"),
/**
* b 病历文书
*/