From 17783bd98155b0175201527062633d875f0003a2 Mon Sep 17 00:00:00 2001 From: wangjian963 <15215920+aprilry@user.noreply.gitee.com> Date: Mon, 1 Jun 2026 16:15:40 +0800 Subject: [PATCH] =?UTF-8?q?561=20[=E9=97=A8=E8=AF=8A=E5=8C=BB=E7=94=9F?= =?UTF-8?q?=E7=AB=99-=E5=8C=BB=E5=98=B1]=20=E5=8C=BB=E5=98=B1=E5=BD=95?= =?UTF-8?q?=E5=85=A5=E5=90=8E=EF=BC=8C=E6=80=BB=E9=87=8F=E5=8D=95=E4=BD=8D?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E5=BC=82=E5=B8=B8=EF=BC=8C=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E4=B8=BA=E2=80=9Cnull=E2=80=9D=E8=80=8C=E9=9D=9E=E8=AF=8A?= =?UTF-8?q?=E7=96=97=E7=9B=AE=E5=BD=95=E9=85=8D=E7=BD=AE=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SurgeryAppServiceImpl.java | 17 +++++++++++++++- .../DoctorStationAdviceAppServiceImpl.java | 10 ++++++++-- .../impl/RequestFormManageAppServiceImpl.java | 20 ++++++++++++++++++- 3 files changed, 43 insertions(+), 4 deletions(-) diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/appservice/impl/SurgeryAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/appservice/impl/SurgeryAppServiceImpl.java index c1c2b3658..6db4dcee5 100755 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/appservice/impl/SurgeryAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/clinicalmanage/appservice/impl/SurgeryAppServiceImpl.java @@ -39,6 +39,7 @@ import com.openhis.web.clinicalmanage.appservice.ISurgeryAppService; import com.openhis.web.clinicalmanage.dto.SurgeryDto; import com.openhis.web.clinicalmanage.mapper.SurgeryAppMapper; import com.openhis.workflow.domain.ServiceRequest; +import com.openhis.workflow.domain.ActivityDefinition; import com.openhis.workflow.service.IActivityDefinitionService; import com.openhis.workflow.service.IServiceRequestService; import org.springframework.beans.BeanUtils; @@ -365,7 +366,21 @@ public class SurgeryAppServiceImpl implements ISurgeryAppService { serviceRequest.setPrescriptionNo(prescriptionNo); serviceRequest.setTherapyEnum(TherapyTimeType.TEMPORARY.getValue());// 治疗类型 serviceRequest.setQuantity(BigDecimal.valueOf(1)); // 请求数量 - serviceRequest.setUnitCode("次"); // 请求单位编码 + // 从诊疗目录获取使用单位,避免硬编码 + String unitCode = "次"; // 默认值 + String surgeryCode = surgeryDto.getSurgeryCode(); + if (surgeryCode != null && !surgeryCode.isEmpty()) { + ActivityDefinition activityDef = activityDefinitionService.getOne( + new LambdaQueryWrapper() + .eq(ActivityDefinition::getBusNo, surgeryCode) + .eq(ActivityDefinition::getCategoryCode, "24") + ); + if (activityDef != null && activityDef.getPermittedUnitCode() != null + && !activityDef.getPermittedUnitCode().isEmpty()) { + unitCode = activityDef.getPermittedUnitCode(); + } + } + serviceRequest.setUnitCode(unitCode); // 请求单位编码 serviceRequest.setCategoryEnum(24); // 请求类型:24-手术(新值域,避开 adviceType 碰撞) serviceRequest.setActivityId(surgeryId); // 手术ID作为诊疗定义id serviceRequest.setPatientId(surgeryDto.getPatientId()); // 患者 diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationAdviceAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationAdviceAppServiceImpl.java index b589aa44d..5a1daf043 100755 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationAdviceAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationAdviceAppServiceImpl.java @@ -14,6 +14,7 @@ import com.core.common.exception.ServiceException; import com.core.common.utils.AssignSeqUtil; import com.core.common.utils.MessageUtils; import com.core.common.utils.SecurityUtils; +import com.core.common.utils.DictUtils; import com.core.common.utils.StringUtils; import com.core.web.util.TenantOptionUtil; import com.openhis.administration.domain.Account; @@ -2240,9 +2241,14 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp // 收费状态 requestBaseDto.setChargeStatus_enumText( EnumUtils.getInfoByValue(ChargeItemStatus.class, requestBaseDto.getChargeStatus())); - // 单位字典翻译失败时回退使用原始值(如手术申请硬编码了中文单位名) + // 单位字典翻译:优先通过 unit_code 字典翻译编码值,失败时回退使用原始值 if (StringUtils.isNotBlank(requestBaseDto.getUnitCode()) && StringUtils.isBlank(requestBaseDto.getUnitCode_dictText())) { - requestBaseDto.setUnitCode_dictText(requestBaseDto.getUnitCode()); + String dictLabel = DictUtils.getDictLabel("unit_code", requestBaseDto.getUnitCode()); + if (StringUtils.isNotBlank(dictLabel)) { + requestBaseDto.setUnitCode_dictText(dictLabel); + } else { + requestBaseDto.setUnitCode_dictText(requestBaseDto.getUnitCode()); + } } } return R.ok(requestBaseInfo); diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/regdoctorstation/appservice/impl/RequestFormManageAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/regdoctorstation/appservice/impl/RequestFormManageAppServiceImpl.java index c7cae9852..ffd8de2ec 100755 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/regdoctorstation/appservice/impl/RequestFormManageAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/regdoctorstation/appservice/impl/RequestFormManageAppServiceImpl.java @@ -342,7 +342,25 @@ public class RequestFormManageAppServiceImpl implements IRequestFormManageAppSer surgeryServiceRequest.setPrescriptionNo(prescriptionNo); surgeryServiceRequest.setTherapyEnum(TherapyTimeType.TEMPORARY.getValue()); surgeryServiceRequest.setQuantity(BigDecimal.valueOf(1)); - surgeryServiceRequest.setUnitCode("次"); + // 从诊疗目录获取使用单位,避免硬编码 + String unitCode = "次"; // 默认值 + if (activityList != null && !activityList.isEmpty()) { + String dtoUnitCode = activityList.get(0).getUnitCode(); + if (dtoUnitCode != null && !dtoUnitCode.isEmpty()) { + unitCode = dtoUnitCode; + } else { + // 从 ActivityDefinition 查询使用单位 + Long activityId = activityList.get(0).getAdviceDefinitionId(); + if (activityId != null) { + ActivityDefinition activityDef = iActivityDefinitionService.getById(activityId); + if (activityDef != null && activityDef.getPermittedUnitCode() != null + && !activityDef.getPermittedUnitCode().isEmpty()) { + unitCode = activityDef.getPermittedUnitCode(); + } + } + } + } + surgeryServiceRequest.setUnitCode(unitCode); surgeryServiceRequest.setCategoryEnum(24); // 24-手术(新值域,避开 adviceType 碰撞) // 优先从 activityList 获取手术 ID if (activityList != null && !activityList.isEmpty()) {