From 994ffcb8b80e5c2ef2c5377be7d16362668de8fe Mon Sep 17 00:00:00 2001 From: wangjian963 <15215920+aprilry@user.noreply.gitee.com> Date: Tue, 21 Apr 2026 10:18:26 +0800 Subject: [PATCH] =?UTF-8?q?=20=20Bug=20#384:=20=E6=A3=80=E6=9F=A5=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E8=81=94=E5=8A=A8=E5=8A=9F=E8=83=BD=E5=AE=8C=E5=96=84?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=A5=97=E9=A4=90=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=92=8C=E9=A1=B9=E7=9B=AE=E5=8D=A1=E7=89=87?= =?UTF-8?q?=E5=B1=95=E5=BC=80=E9=80=89=E6=8B=A9=20=20=20Bug=20#386:=20?= =?UTF-8?q?=E6=A3=80=E9=AA=8C=E7=94=B3=E8=AF=B7=E5=88=A0=E9=99=A4=E6=97=B6?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E5=88=A0=E9=99=A4=E5=85=B3=E8=81=94=E6=94=B6?= =?UTF-8?q?=E8=B4=B9=E9=A1=B9=E7=9B=AE=20=20=20Bug=20#382:=20=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E9=A1=B9=E7=9B=AE=E5=90=8E=E4=BF=9D=E6=8C=81=E5=BD=93?= =?UTF-8?q?=E5=89=8D=E9=A1=B5=E7=AD=BE=E7=8A=B6=E6=80=81=20=20=20Bug=20#38?= =?UTF-8?q?0,381:=20=E4=B8=B4=E5=BA=8A=E8=AF=8A=E6=96=AD=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E4=B8=BB=E8=AF=8A=E6=96=AD=E5=AD=97=E6=AE=B5=E5=90=8D=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3=20=20=20Bug=20#387:=20=E5=A5=97=E9=A4=90=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E5=9B=9E=E5=85=85=E9=BB=98=E8=AE=A4=E5=B1=95=E5=BC=80?= =?UTF-8?q?=E5=B9=B6=E8=87=AA=E5=8A=A8=E5=8A=A0=E8=BD=BD=E6=98=8E=E7=BB=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/CheckMethodAppServiceImpl.java | 73 +++- .../openhis/web/check/dto/CheckMethodDto.java | 14 +- .../DoctorStationLabApplyServiceImpl.java | 13 +- .../examination/examinationApplication.vue | 400 +++++++++++++++--- .../inspection/inspectionApplication.vue | 196 +++------ .../components/prescriptionList.vue | 1 + 6 files changed, 513 insertions(+), 184 deletions(-) diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/check/appservice/impl/CheckMethodAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/check/appservice/impl/CheckMethodAppServiceImpl.java index 8f8d3fac..51bd6d0e 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/check/appservice/impl/CheckMethodAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/check/appservice/impl/CheckMethodAppServiceImpl.java @@ -4,8 +4,11 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.core.common.core.domain.R; import com.openhis.check.domain.CheckMethod; +import com.openhis.check.domain.CheckPackage; import com.openhis.check.service.ICheckMethodService; +import com.openhis.check.service.ICheckPackageService; import com.openhis.web.check.appservice.ICheckMethodAppService; +import com.openhis.web.check.dto.CheckMethodDto; import com.openhis.web.reportmanage.utils.ExcelFillerUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -16,6 +19,7 @@ import java.io.IOException; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; @Service @Slf4j @@ -24,10 +28,15 @@ public class CheckMethodAppServiceImpl implements ICheckMethodAppService { @Resource private ICheckMethodService checkMethodService; + @Resource + private ICheckPackageService checkPackageService; // Bug #384修复:注入套餐服务 + @Override public R getCheckMethodList() { List list = checkMethodService.list(); - return R.ok(list); + // Bug #384修复:转换为DTO并关联套餐价格 + List dtoList = convertToDtoWithPackagePrice(list); + return R.ok(dtoList); } @Override @@ -43,7 +52,67 @@ public class CheckMethodAppServiceImpl implements ICheckMethodAppService { wrapper.eq(CheckMethod::getPackageName, packageName); } List list = checkMethodService.list(wrapper); - return R.ok(list); + // Bug #384修复:转换为DTO并关联套餐价格 + List dtoList = convertToDtoWithPackagePrice(list); + return R.ok(dtoList); + } + + /** + * Bug #384修复:转换CheckMethod为DTO,并通过packageName关联查询套餐价格 + * @param methods 检查方法列表 + * @return 包含套餐价格的DTO列表 + */ + private List convertToDtoWithPackagePrice(List methods) { + if (methods == null || methods.isEmpty()) { + return List.of(); + } + + // 获取所有packageName,批量查询套餐 + List packageNames = methods.stream() + .map(CheckMethod::getPackageName) + .filter(ObjectUtil::isNotEmpty) + .distinct() + .collect(Collectors.toList()); + + // Bug #384修复: 批量查询套餐信息,使用final变量 + final Map packageMap; + if (!packageNames.isEmpty()) { + List packages = checkPackageService.list( + new LambdaQueryWrapper() + .in(CheckPackage::getPackageName, packageNames) + .eq(CheckPackage::getIsDisabled, 0) // 只查未停用的套餐 + ); + packageMap = packages.stream() + .collect(Collectors.toMap(CheckPackage::getPackageName, p -> p, (p1, p2) -> p1)); + } else { + packageMap = Map.of(); + } + + // 转换为DTO并填充价格 + return methods.stream().map(m -> { + CheckMethodDto dto = new CheckMethodDto(); + dto.setId(m.getId() != null ? m.getId().longValue() : null); + dto.setCheckType(m.getCheckType()); + dto.setCode(m.getCode()); + dto.setName(m.getName()); + dto.setPackageName(m.getPackageName()); + dto.setExposureNum(m.getExposureNum()); + dto.setOrderNum(m.getOrderNum()); + dto.setRemark(m.getRemark()); + dto.setCreateTime(m.getCreateTime()); + dto.setUpdateTime(m.getUpdateTime()); + + // 通过packageName匹配套餐价格 + if (ObjectUtil.isNotEmpty(m.getPackageName())) { + CheckPackage pkg = packageMap.get(m.getPackageName()); + if (pkg != null) { + dto.setPackagePrice(pkg.getPackagePrice()); + dto.setServiceFee(pkg.getServiceFee()); + } + } + + return dto; + }).collect(Collectors.toList()); } @Override diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/check/dto/CheckMethodDto.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/check/dto/CheckMethodDto.java index 8bf60d9a..54582a31 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/check/dto/CheckMethodDto.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/check/dto/CheckMethodDto.java @@ -1,12 +1,15 @@ package com.openhis.web.check.dto; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; import lombok.Data; import lombok.experimental.Accessors; +import java.math.BigDecimal; import java.time.LocalDateTime; +/** + * 检查方法DTO - Bug #384修复:增加套餐价格字段 + * 用于API返回数据传输,不含数据库注解 + */ @Data @Accessors(chain = true) public class CheckMethodDto { @@ -14,7 +17,6 @@ public class CheckMethodDto { /** * 检查方法ID */ - @TableId(type = IdType.AUTO) private Long id; /* 检查类型 */ @@ -29,6 +31,12 @@ public class CheckMethodDto { /* 套餐名称 */ private String packageName; + /* 套餐价格 - Bug #384修复:通过packageName匹配CheckPackage获取 */ + private BigDecimal packagePrice; + + /* 服务费 - Bug #384修复:通过packageName匹配CheckPackage获取 */ + private BigDecimal serviceFee; + /* 曝光次数 */ private Integer exposureNum; diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationLabApplyServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationLabApplyServiceImpl.java index dee8b486..00a70ab1 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationLabApplyServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationLabApplyServiceImpl.java @@ -7,6 +7,7 @@ import com.core.common.utils.SecurityUtils; import com.openhis.common.enums.DbOpType; import com.openhis.administration.service.IAccountService; import com.openhis.administration.domain.Account; +import com.openhis.administration.service.IChargeItemService; // Bug #386修复: 添加 ChargeItemService import com.openhis.lab.domain.InspectionLabApply; import com.openhis.lab.domain.InspectionLabApplyItem; import com.openhis.lab.domain.BarCode; @@ -97,6 +98,10 @@ public class DoctorStationLabApplyServiceImpl implements IDoctorStationInspectio @Autowired private ILabActivityDefinitionService labActivityDefinitionService; + // Bug #386修复: ChargeItemService 用于删除收费项目 + @Autowired + private IChargeItemService chargeItemService; + /** * 保存检验申请单信息 * @param doctorStationLabApplyDto @@ -598,8 +603,14 @@ public class DoctorStationLabApplyServiceImpl implements IDoctorStationInspectio ); if (updateResult) { - log.debug("成功将申请单号 [{}] 关联的 {} 条门诊医嘱的删除状态更新为1,更新人:{},更新时间:{}", + log.debug("成功将申请单号 [{}] 关联的 {} 条门诊医嘱的删除状态更新为1,更新人:{},更新时间:{}", applyNo, requestIds.size(), currentUsername, currentTime); + + // Bug #386修复: 同步删除关联的收费项目 + for (Long requestId : requestIds) { + chargeItemService.deleteByServiceTableAndId("wor_service_request", requestId); + } + log.debug("成功删除申请单号 [{}] 关联的 {} 条收费项目", applyNo, requestIds.size()); } else { log.warn("更新申请单号 [{}] 关联的门诊医嘱删除状态失败", applyNo); } diff --git a/openhis-ui-vue3/src/views/doctorstation/components/examination/examinationApplication.vue b/openhis-ui-vue3/src/views/doctorstation/components/examination/examinationApplication.vue index 9e0d9558..bd359914 100644 --- a/openhis-ui-vue3/src/views/doctorstation/components/examination/examinationApplication.vue +++ b/openhis-ui-vue3/src/views/doctorstation/components/examination/examinationApplication.vue @@ -104,14 +104,14 @@ - + - + @@ -184,16 +184,10 @@ + - - - + @@ -233,16 +227,34 @@ + + + - + + + + + @@ -307,22 +319,48 @@ - +
已选择:
- - {{ item.name }} ¥{{ item.price }} - + +
+ {{ item.name }} + ¥{{ item.price }} + + + + + + + + + +
+ +
+
+ + {{ method.name }} + ¥{{ method.packagePrice || item.price }} + +
+
+
@@ -334,10 +372,11 @@