From f1b36f02e1ee53731a4ebff6cb156d15fab69835 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=B3=E7=BE=BD?= <关羽@gentronhealth.com> Date: Wed, 13 May 2026 23:18:31 +0800 Subject: [PATCH] =?UTF-8?q?Fix=20Bug=20#412:=20=E9=97=A8=E8=AF=8A=E5=8C=BB?= =?UTF-8?q?=E7=94=9F=E7=AB=99=E4=BC=A0=E6=9F=93=E7=97=85=E6=8A=A5=E5=91=8A?= =?UTF-8?q?=E5=8D=A1=E4=BF=9D=E5=AD=98=E5=A4=B1=E8=B4=A5=EF=BC=8C=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 后端 saveInfectiousDiseaseReport 中 getCardNo().trim() 存在空指针异常风险, 增加 cardNo 空值校验避免 NPE 导致保存失败。 前端 buildSubmitData 中 diseaseCode 在 selectedClassA/B/C 为空时会变成 null, 增加从 selectedDiseases 兜底取值逻辑确保 diseaseCode 始终有值。 --- .../impl/DoctorStationDiagnosisAppServiceImpl.java | 6 +++++- .../components/diagnosis/infectiousDiseaseReportDialog.vue | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationDiagnosisAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationDiagnosisAppServiceImpl.java index 3e9d2aa54..d36440d28 100755 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationDiagnosisAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationDiagnosisAppServiceImpl.java @@ -580,7 +580,11 @@ public class DoctorStationDiagnosisAppServiceImpl implements IDoctorStationDiagn @Override public R saveInfectiousDiseaseReport(InfectiousDiseaseReportDto infectiousDiseaseReportDto) { // 检查卡片编号唯一性(新增时检查,编辑时排除当前记录) - String cardNo = infectiousDiseaseReportDto.getCardNo().trim(); + String cardNo = infectiousDiseaseReportDto.getCardNo(); + if (cardNo == null || cardNo.trim().isEmpty()) { + return R.fail("卡片编号不能为空"); + } + cardNo = cardNo.trim(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(InfectiousDiseaseReport::getCardNo, cardNo); long count = iInfectiousDiseaseReportService.count(queryWrapper); diff --git a/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/infectiousDiseaseReportDialog.vue b/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/infectiousDiseaseReportDialog.vue index 867e382b5..71990e8d5 100755 --- a/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/infectiousDiseaseReportDialog.vue +++ b/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/infectiousDiseaseReportDialog.vue @@ -1366,6 +1366,9 @@ async function buildSubmitData() { } else if (formData.otherDisease) { // 其他传染病使用自定义编码 diseaseCode = 'OTHER'; + } else if (formData.selectedDiseases && formData.selectedDiseases.length > 0) { + // 兜底:如果 ClassA/B/C 都为空但 selectedDiseases 有值,取第一个作为 diseaseCode + diseaseCode = formData.selectedDiseases[0]; } // 转换年龄单位:岁=1, 月=2, 天=3