From 4210f32a053556f3f62dd076d524c583a1ff1eb3 Mon Sep 17 00:00:00 2001 From: chenqi Date: Thu, 19 Mar 2026 19:36:11 +0800 Subject: [PATCH] =?UTF-8?q?fix(charge):=20=E8=A7=A3=E5=86=B3=E9=97=A8?= =?UTF-8?q?=E8=AF=8A=E6=94=B6=E8=B4=B9=E4=B8=AD=E8=80=97=E6=9D=90=E8=AF=B7?= =?UTF-8?q?=E6=B1=82=E6=95=B0=E6=8D=AE=E6=9F=A5=E8=AF=A2=E9=97=AE=E9=A2=98?= =?UTF-8?q?=20BUG#145?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在处方查询方法中添加耗材请求表名参数支持 - 修复数据库查询中缺少耗材请求表关联的问题 - 将设备费用项状态从草稿改为计划状态以确保正确显示 - 为设备请求设置处方号以保证门诊收费能正确关联 - 优化数据库表连接逻辑支持耗材请求数据查询 --- .../impl/OutpatientChargeAppServiceImpl.java | 6 ++-- .../mapper/OutpatientChargeAppMapper.java | 6 ++-- .../DoctorStationAdviceAppServiceImpl.java | 10 ++++--- .../OutpatientChargeAppMapper.xml | 30 ++++++++++--------- 4 files changed, 30 insertions(+), 22 deletions(-) diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/chargemanage/appservice/impl/OutpatientChargeAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/chargemanage/appservice/impl/OutpatientChargeAppServiceImpl.java index dc5b52a7..dda17367 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/chargemanage/appservice/impl/OutpatientChargeAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/chargemanage/appservice/impl/OutpatientChargeAppServiceImpl.java @@ -121,7 +121,8 @@ public class OutpatientChargeAppServiceImpl implements IOutpatientChargeAppServi ChargeItemContext.DEVICE.getValue(), ChargeItemContext.REGISTER.getValue(), ChargeItemStatus.PLANNED.getValue(), ChargeItemStatus.BILLABLE.getValue(), ChargeItemStatus.BILLED.getValue(), ChargeItemStatus.REFUNDING.getValue(), - ChargeItemStatus.REFUNDED.getValue(), ChargeItemStatus.PART_REFUND.getValue()); + ChargeItemStatus.REFUNDED.getValue(), ChargeItemStatus.PART_REFUND.getValue(), + CommonConstants.TableName.WOR_DEVICE_REQUEST); prescriptionDtoList.forEach(e -> { // 收费状态枚举 e.setStatusEnum_enumText(EnumUtils.getInfoByValue(ChargeItemStatus.class, e.getStatusEnum())); @@ -229,7 +230,8 @@ public class OutpatientChargeAppServiceImpl implements IOutpatientChargeAppServi ChargeItemStatus.REFUNDING.getValue(), ChargeItemStatus.REFUNDED.getValue(), ChargeItemStatus.PART_REFUND.getValue(), YbPayment.DISCOUNT_PAY.getValue(), YbPayment.SELF_CASH_VALUE.getValue(), YbPayment.SELF_CASH_VX_VALUE.getValue(), - YbPayment.SELF_CASH_ALI_VALUE.getValue(), YbPayment.SELF_CASH_UNION_VALUE.getValue()); + YbPayment.SELF_CASH_ALI_VALUE.getValue(), YbPayment.SELF_CASH_UNION_VALUE.getValue(), + CommonConstants.TableName.WOR_DEVICE_REQUEST); prescriptionDtoList.forEach(e -> { // 应收金额 BigDecimal receivableAmount = e.getReceivableAmount(); diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/chargemanage/mapper/OutpatientChargeAppMapper.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/chargemanage/mapper/OutpatientChargeAppMapper.java index 3718c47a..537186c7 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/chargemanage/mapper/OutpatientChargeAppMapper.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/chargemanage/mapper/OutpatientChargeAppMapper.java @@ -48,13 +48,14 @@ public interface OutpatientChargeAppMapper { * @param refunding 收费状态:退费中 * @param refunded 收费状态:全部退费 * @param partRefund 收费状态:部分退费 + * @param worDeviceRequest 耗材请求表名常量 * @return 患者处方列表 */ List selectEncounterPatientPrescription(@Param("encounterId") Long encounterId, @Param("activity") Integer activity, @Param("medication") Integer medication, @Param("device") Integer device, @Param("register") Integer register, @Param("planned") Integer planned, @Param("billable") Integer billable, @Param("billed") Integer billed, @Param("refunding") Integer refunding, @Param("refunded") Integer refunded, - @Param("partRefund") Integer partRefund); + @Param("partRefund") Integer partRefund, @Param("worDeviceRequest") String worDeviceRequest); /** * 根据就诊id查询患者处方列表并新增字段:应收金额,实收金额,优惠金额,折扣率 @@ -75,6 +76,7 @@ public interface OutpatientChargeAppMapper { * @param selfVxCode 微信枚举码 * @param selfAliCode 支付宝枚举码 * @param selfUnionCode 银联枚举码 + * @param worDeviceRequest 耗材请求表名常量 * @return 患者处方列表 */ List selectEncounterPatientPrescriptionWithPrice( @@ -84,5 +86,5 @@ public interface OutpatientChargeAppMapper { @Param("refunding") Integer refunding, @Param("refunded") Integer refunded, @Param("partRefund") Integer partRefund, @Param("discountCode") Integer discountCode, @Param("self") Integer selfCode, @Param("selfVx") Integer selfVxCode, @Param("selfAli") Integer selfAliCode, - @Param("selfUnion") Integer selfUnionCode); + @Param("selfUnion") Integer selfUnionCode, @Param("worDeviceRequest") String worDeviceRequest); } 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 413f8e9a..35bbee7d 100644 --- 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 @@ -776,6 +776,8 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp // 关联到药品请求 deviceRequest.setBasedOnId(medicationRequest.getId()); deviceRequest.setBasedOnTable(CommonConstants.TableName.MED_MEDICATION_REQUEST); + // 🔧 Bug Fix #145: 设置处方号,确保门诊收费能正确显示 + deviceRequest.setPrescriptionNo(adviceSaveDto.getPrescriptionNo()); iDeviceRequestService.save(deviceRequest); @@ -808,7 +810,7 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp deviceChargeItem.setTenantId(tenantId); deviceChargeItem.setCreateBy(currentUsername); deviceChargeItem.setCreateTime(curDate); - deviceChargeItem.setStatusEnum(ChargeItemStatus.DRAFT.getValue()); + deviceChargeItem.setStatusEnum(ChargeItemStatus.PLANNED.getValue()); deviceChargeItem.setBusNo(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix().concat(deviceRequest.getBusNo())); deviceChargeItem.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); deviceChargeItem.setPrescriptionNo(adviceSaveDto.getPrescriptionNo()); // 处方号,与药品一致 @@ -932,11 +934,11 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp // 保存耗材费用项 chargeItem = new ChargeItem(); - chargeItem.setId(adviceSaveDto.getChargeItemId()); // 费用项id - chargeItem.setTenantId(tenantId); // 补全租户ID + chargeItem.setId(adviceSaveDto.getChargeItemId()); // 费用项 id + chargeItem.setTenantId(tenantId); // 补全租户 ID chargeItem.setCreateBy(currentUsername); // 补全创建人 chargeItem.setCreateTime(curDate); // 补全创建时间 - chargeItem.setStatusEnum(ChargeItemStatus.DRAFT.getValue()); // 收费状态 + chargeItem.setStatusEnum(ChargeItemStatus.PLANNED.getValue()); // 收费状态 chargeItem.setBusNo(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix().concat(deviceRequest.getBusNo())); chargeItem.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源 chargeItem.setPatientId(adviceSaveDto.getPatientId()); // 患者 diff --git a/openhis-server-new/openhis-application/src/main/resources/mapper/chargemanage/OutpatientChargeAppMapper.xml b/openhis-server-new/openhis-application/src/main/resources/mapper/chargemanage/OutpatientChargeAppMapper.xml index a14229d4..36ca8667 100644 --- a/openhis-server-new/openhis-application/src/main/resources/mapper/chargemanage/OutpatientChargeAppMapper.xml +++ b/openhis-server-new/openhis-application/src/main/resources/mapper/chargemanage/OutpatientChargeAppMapper.xml @@ -76,11 +76,11 @@ T1.quantity_unit, T1.unit_price, T1.total_price, - mmr.prescription_no, - mmr.method_code, - mmr.rate_code, - mmr.dose, - mmr.dose_unit_code, + mmr.prescription_no, + mmr.method_code AS method_code, + mmr.rate_code, + mmr.dose, + mmr.dose_unit_code, T1.bus_no, T1.entered_date, T1.account_id, @@ -134,8 +134,9 @@ LEFT JOIN fin_contract AS T8 ON T6.contract_no = T8.bus_no AND T8.delete_flag = '0' - LEFT JOIN med_medication_request AS mmr ON mmr.id = T1.service_id AND mmr.delete_flag = '0' - WHERE T1.encounter_id = #{encounterId} + LEFT JOIN med_medication_request AS mmr ON mmr.id = T1.service_id AND mmr.delete_flag = '0' + LEFT JOIN wor_device_request AS wdr ON wdr.id = T1.service_id AND T1.service_table = #{worDeviceRequest} AND wdr.delete_flag = '0' + WHERE T1.encounter_id = #{encounterId} AND T1.status_enum IN (#{planned} , #{billable} , #{billed} @@ -168,11 +169,11 @@ T1.quantity_unit, T1.unit_price, T1.total_price, - mmr.prescription_no, - mmr.method_code, - mmr.rate_code, - mmr.dose, - mmr.dose_unit_code, + mmr.prescription_no, + mmr.method_code AS method_code, + mmr.rate_code, + mmr.dose, + mmr.dose_unit_code, T1.bus_no, T1.entered_date, T1.account_id, @@ -227,8 +228,9 @@ LEFT JOIN fin_contract AS T8 ON T6.contract_no = T8.bus_no AND T8.delete_flag = '0' - LEFT JOIN med_medication_request AS mmr ON mmr.id = T1.service_id AND mmr.delete_flag = '0' - WHERE T1.encounter_id = #{encounterId} + LEFT JOIN med_medication_request AS mmr ON mmr.id = T1.service_id AND mmr.delete_flag = '0' + LEFT JOIN wor_device_request AS wdr ON wdr.id = T1.service_id AND T1.service_table = #{worDeviceRequest} AND wdr.delete_flag = '0' + WHERE T1.encounter_id = #{encounterId} AND T1.status_enum IN (#{planned} , #{billable} , #{billed}