From 73df3699eca2c394f80fb528b293d3841e81a7c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=8E=E4=BD=97?= Date: Fri, 29 May 2026 14:39:15 +0800 Subject: [PATCH] =?UTF-8?q?fix(#613):=20=E8=A1=A5=E5=85=85=20DB=20?= =?UTF-8?q?=E8=BF=81=E7=A7=BB=20+=20ServiceRequest=20=E5=AE=9E=E9=99=85?= =?UTF-8?q?=E5=86=99=E5=85=A5=E9=80=80=E5=9B=9E=E5=8E=9F=E5=9B=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题: - med_medication_request 表无 back_reason 列 → Entity 和 Service 写了但 DB 报错 - ServiceRequestServiceImpl.updateDraftStatus 接收 backReason 参数但不使用 修复: - 新增迁移脚本 sql/迁移记录-DB变更记录/20260529_fix_BUG#613_add_column_back_reason.sql - 4 个 schema (histest1/histest/hisdev/hisprd) 已执行 ALTER TABLE ADD COLUMN - ServiceRequestServiceImpl.updateDraftStatus: 新增 setReasonText(backReason) --- .../service/impl/ServiceRequestServiceImpl.java | 10 ++++++++-- .../20260529_fix_BUG#613_add_column_back_reason.sql | 13 +++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 sql/迁移记录-DB变更记录/20260529_fix_BUG#613_add_column_back_reason.sql diff --git a/openhis-server-new/openhis-domain/src/main/java/com/openhis/workflow/service/impl/ServiceRequestServiceImpl.java b/openhis-server-new/openhis-domain/src/main/java/com/openhis/workflow/service/impl/ServiceRequestServiceImpl.java index b04d7b1fa..45add69da 100755 --- a/openhis-server-new/openhis-domain/src/main/java/com/openhis/workflow/service/impl/ServiceRequestServiceImpl.java +++ b/openhis-server-new/openhis-domain/src/main/java/com/openhis/workflow/service/impl/ServiceRequestServiceImpl.java @@ -198,8 +198,14 @@ public class ServiceRequestServiceImpl extends ServiceImpl serviceRequestIdList, Long practitionerId, Date checkDate, String backReason) { - baseMapper.update(new ServiceRequest().setStatusEnum(RequestStatus.DRAFT.getValue()) - .setPerformerCheckId(SecurityUtils.getLoginUser().getPractitionerId()).setCheckTime(DateUtils.getNowDate()), + ServiceRequest updateEntity = new ServiceRequest() + .setStatusEnum(RequestStatus.DRAFT.getValue()) + .setPerformerCheckId(SecurityUtils.getLoginUser().getPractitionerId()) + .setCheckTime(DateUtils.getNowDate()); + if (backReason != null && !backReason.isEmpty()) { + updateEntity.setReasonText(backReason); + } + baseMapper.update(updateEntity, new LambdaUpdateWrapper().in(ServiceRequest::getId, serviceRequestIdList) .eq(ServiceRequest::getDeleteFlag, DelFlag.NO.getCode())); } diff --git a/sql/迁移记录-DB变更记录/20260529_fix_BUG#613_add_column_back_reason.sql b/sql/迁移记录-DB变更记录/20260529_fix_BUG#613_add_column_back_reason.sql new file mode 100644 index 000000000..08f941cd5 --- /dev/null +++ b/sql/迁移记录-DB变更记录/20260529_fix_BUG#613_add_column_back_reason.sql @@ -0,0 +1,13 @@ +-- Bug #613: 医嘱退回流程 — med_medication_request 表缺少退回原因字段 +-- 执行前检查:如果列已存在则跳过 +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_name = 'med_medication_request' AND column_name = 'back_reason' + ) THEN + ALTER TABLE med_medication_request ADD COLUMN back_reason VARCHAR(500) DEFAULT NULL; + COMMENT ON COLUMN med_medication_request.back_reason IS '退回原因'; + END IF; +END +$$;